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::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::AposdConfig;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 connascence::ConnascenceAnalyzer;pub use connascence::ConnascenceInstance;pub use connascence::ConnascenceStats;pub use connascence::ConnascenceType;pub use connascence::detect_algorithm_patterns;pub use metrics::CircularDependencySummary;pub use metrics::CouplingMetrics;pub use metrics::Distance;pub use metrics::IntegrationStrength;pub use metrics::ModuleMetrics;pub use metrics::ProjectMetrics;pub use metrics::TypeDefinition;pub use metrics::Visibility;pub use metrics::Volatility;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 temporal::LifecyclePhase;pub use temporal::TemporalAnalyzer;pub use temporal::TemporalCouplingInstance;pub use temporal::TemporalCouplingStats;pub use temporal::TemporalPattern;pub use volatility::VolatilityAnalyzer;pub use volatility::VolatilityError;pub use volatility::VolatilityStats;pub use workspace::CrateInfo;pub use workspace::WorkspaceError;pub use workspace::WorkspaceInfo;pub use aposd::analyze_aposd;pub use aposd::AposdAnalysis;pub use aposd::AposdIssueCounts;pub use aposd::CognitiveLoadLevel;pub use aposd::CognitiveLoadMetrics;pub use aposd::ModuleDepthClass;pub use aposd::ModuleDepthMetrics;pub use aposd::PassThroughMethodInfo;
Modules§
- analyzer
- AST analysis for coupling detection
- aposd
- A Philosophy of Software Design (APOSD) metrics detection
- balance
- Balance score calculation and refactoring recommendations
- config
- Configuration file support for cargo-coupling
- connascence
- Connascence type detection based on Meilir Page-Jones’ taxonomy
- metrics
- Coupling metrics data structures
- report
- Report generation for coupling analysis
- temporal
- Temporal Coupling detection through static analysis
- volatility
- Git history analysis for volatility measurement
- workspace
- Workspace analysis using cargo metadata