pub struct ProjectMetrics {
pub modules: HashMap<String, ModuleMetrics>,
pub couplings: Vec<CouplingMetrics>,
pub file_changes: HashMap<String, usize>,
pub total_files: usize,
pub workspace_name: Option<String>,
pub workspace_members: Vec<String>,
pub crate_dependencies: HashMap<String, Vec<String>>,
pub type_registry: HashMap<String, (String, Visibility)>,
pub connascence_stats: ConnascenceStats,
}Expand description
Project-wide analysis results
Fields§
§modules: HashMap<String, ModuleMetrics>All module metrics
couplings: Vec<CouplingMetrics>All detected couplings
file_changes: HashMap<String, usize>File change counts (for volatility)
total_files: usizeTotal files analyzed
workspace_name: Option<String>Workspace name (if available from cargo metadata)
workspace_members: Vec<String>Workspace member crate names
crate_dependencies: HashMap<String, Vec<String>>Crate-level dependencies (crate name -> list of dependencies)
type_registry: HashMap<String, (String, Visibility)>Global type registry: type name -> (module name, visibility)
connascence_stats: ConnascenceStatsConnascence analysis statistics
Implementations§
Source§impl ProjectMetrics
impl ProjectMetrics
pub fn new() -> Self
Sourcepub fn add_module(&mut self, metrics: ModuleMetrics)
pub fn add_module(&mut self, metrics: ModuleMetrics)
Add module metrics
Sourcepub fn add_coupling(&mut self, coupling: CouplingMetrics)
pub fn add_coupling(&mut self, coupling: CouplingMetrics)
Add coupling
Sourcepub fn register_type(
&mut self,
type_name: String,
module_name: String,
visibility: Visibility,
)
pub fn register_type( &mut self, type_name: String, module_name: String, visibility: Visibility, )
Register a type definition in the global registry
Sourcepub fn get_type_visibility(&self, type_name: &str) -> Option<Visibility>
pub fn get_type_visibility(&self, type_name: &str) -> Option<Visibility>
Look up visibility of a type by name
Sourcepub fn get_type_module(&self, type_name: &str) -> Option<&str>
pub fn get_type_module(&self, type_name: &str) -> Option<&str>
Look up the module where a type is defined
Sourcepub fn update_coupling_visibility(&mut self)
pub fn update_coupling_visibility(&mut self)
Update visibility information for existing couplings
This should be called after all modules have been analyzed to populate the target_visibility field of couplings.
Sourcepub fn module_count(&self) -> usize
pub fn module_count(&self) -> usize
Get total module count
Sourcepub fn coupling_count(&self) -> usize
pub fn coupling_count(&self) -> usize
Get total coupling count
Sourcepub fn average_strength(&self) -> Option<f64>
pub fn average_strength(&self) -> Option<f64>
Calculate average strength across all couplings
Sourcepub fn average_distance(&self) -> Option<f64>
pub fn average_distance(&self) -> Option<f64>
Calculate average distance across all couplings
Sourcepub fn update_volatility_from_git(&mut self)
pub fn update_volatility_from_git(&mut self)
Update volatility for all couplings based on file changes
This should be called after git history analysis to update the volatility of each coupling based on how often the target module/file has changed.
Sourcepub fn detect_circular_dependencies(&self) -> Vec<Vec<String>>
pub fn detect_circular_dependencies(&self) -> Vec<Vec<String>>
Detect circular dependencies in the project
Returns a list of cycles, where each cycle is a list of module names forming the circular dependency chain.
Sourcepub fn circular_dependency_summary(&self) -> CircularDependencySummary
pub fn circular_dependency_summary(&self) -> CircularDependencySummary
Get circular dependency summary
Trait Implementations§
Source§impl Debug for ProjectMetrics
impl Debug for ProjectMetrics
Source§impl Default for ProjectMetrics
impl Default for ProjectMetrics
Source§fn default() -> ProjectMetrics
fn default() -> ProjectMetrics
Auto Trait Implementations§
impl Freeze for ProjectMetrics
impl RefUnwindSafe for ProjectMetrics
impl Send for ProjectMetrics
impl Sync for ProjectMetrics
impl Unpin for ProjectMetrics
impl UnwindSafe for ProjectMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more