Expand description
§cargo-coupling - Coupling Analysis Tool
A tool for measuring and analyzing coupling in Rust projects, based on Vlad Khononov’s “Balancing Coupling in Software Design”.
§Overview
cargo-coupling measures coupling across three dimensions:
- Integration Strength - How much knowledge is shared between components
- Distance - How far apart components are in the module hierarchy
- Volatility - How frequently components change
§Usage
# Analyze current project (as cargo subcommand)
cargo coupling ./src
# Generate detailed report
cargo coupling -o report.md ./src
# Show summary only
cargo coupling --summary ./src§Balance Equation
The balance score is calculated as:
BALANCE = (STRENGTH XOR DISTANCE) OR NOT VOLATILITY- Strong coupling + close distance = Good (locality)
- Weak coupling + far distance = Good (loose coupling)
- Strong coupling + far distance = Bad (global complexity)
- High volatility + strong coupling = Bad (cascading changes)
Re-exports§
pub use analyzer::AnalyzedFileResult;pub use analyzer::AnalyzerError;pub use analyzer::CouplingAnalyzer;pub use analyzer::Dependency;pub use analyzer::DependencyKind;pub use analyzer::ItemDepType;pub use analyzer::ItemDependency;pub use analyzer::ItemKind;pub use analyzer::analyze_project;pub use analyzer::analyze_rust_file;pub use analyzer::analyze_rust_file_full;pub use analyzer::analyze_workspace;pub use balance::BalanceInterpretation;pub use balance::BalanceScore;pub use balance::CouplingIssue;pub use balance::HealthGrade;pub use balance::IssueThresholds;pub use balance::IssueType;pub use balance::ProjectBalanceReport;pub use balance::RefactoringAction;pub use balance::Severity;pub use balance::analyze_project_balance;pub use balance::analyze_project_balance_with_thresholds;pub use balance::calculate_project_score;pub use config::AnalysisConfig;pub use config::CompiledConfig;pub use config::ConfigError;pub use config::CouplingConfig;pub use config::ThresholdsConfig;pub use config::VolatilityConfig;pub use config::load_compiled_config;pub use config::load_config;pub use metrics::BalanceClassification;pub use metrics::BalanceCounts;pub use metrics::CircularDependencySummary;pub use metrics::CouplingMetrics;pub use metrics::DimensionStats;pub use metrics::Distance;pub use metrics::DistanceCounts;pub use metrics::FunctionDefinition;pub use metrics::IntegrationStrength;pub use metrics::ModuleMetrics;pub use metrics::ProjectMetrics;pub use metrics::StrengthCounts;pub use metrics::TypeDefinition;pub use metrics::Visibility;pub use metrics::Volatility;pub use metrics::VolatilityCounts;pub use report::generate_ai_output;pub use report::generate_ai_output_with_thresholds;pub use report::generate_report;pub use report::generate_report_with_thresholds;pub use report::generate_summary;pub use report::generate_summary_with_thresholds;pub use volatility::VolatilityAnalyzer;pub use volatility::VolatilityError;pub use volatility::VolatilityStats;pub use workspace::CrateInfo;pub use workspace::WorkspaceError;pub use workspace::WorkspaceInfo;
Modules§
- analyzer
- AST analysis for coupling detection
- balance
- Balance score calculation and refactoring recommendations
- cli_
output - CLI output functions for job-focused commands
- config
- Configuration file support for cargo-coupling
- metrics
- Coupling metrics data structures
- report
- Report generation for coupling analysis
- volatility
- Git history analysis for volatility measurement
- web
- Web visualization module for cargo-coupling
- workspace
- Workspace analysis using cargo metadata