fob_graph/memory/
statistics.rs

1//! Statistics methods for ModuleGraph.
2
3use super::super::GraphStatistics;
4use super::graph::ModuleGraph;
5use crate::Result;
6
7impl ModuleGraph {
8    /// Compute statistics snapshot for dashboards.
9    pub fn statistics(&self) -> Result<GraphStatistics> {
10        let unused = self.unused_exports()?;
11        let unreachable = self.unreachable_modules()?;
12        let all_modules = self.modules()?;
13        let side_effect_module_count = all_modules.iter().filter(|m| m.has_side_effects).count();
14        let external_dependency_count = self.external_dependencies()?.len();
15        let entry_points = self.entry_points()?;
16
17        Ok(GraphStatistics::new(
18            all_modules.len(),
19            entry_points.len(),
20            external_dependency_count,
21            side_effect_module_count,
22            unused.len(),
23            unreachable.len(),
24        ))
25    }
26}