Crate cargo_coupling

Crate cargo_coupling 

Source
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:

  1. Integration Strength - How much knowledge is shared between components
  2. Distance - How far apart components are in the module hierarchy
  3. 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