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