use crate::core::types::{CodeStats, FileStats};
use crate::utils::errors::Result;
pub use types::*;
pub(crate) mod analyzer;
pub(crate) mod calculator;
mod languages;
mod quality;
mod types;
pub struct ComplexityStatsCalculator {
calculator: calculator::ComplexityCalculator,
}
impl ComplexityStatsCalculator {
pub fn new() -> Self {
Self {
calculator: calculator::ComplexityCalculator::new(),
}
}
pub fn calculate_complexity_stats(
&self,
file_stats: &FileStats,
file_path: &str,
) -> Result<ComplexityStats> {
self.calculator
.calculate_complexity_stats(file_stats, file_path)
}
pub fn calculate_project_complexity_stats(
&self,
code_stats: &CodeStats,
individual_files: &[(String, FileStats)],
) -> Result<ComplexityStats> {
self.calculator
.calculate_project_complexity_stats(code_stats, individual_files)
}
pub fn get_complexity_level(&self, complexity: f64) -> String {
self.calculator.get_complexity_level(complexity)
}
pub fn get_complexity_class(&self, complexity: f64) -> String {
self.calculator.get_complexity_class(complexity)
}
}
impl Default for ComplexityStatsCalculator {
fn default() -> Self {
Self::new()
}
}