use crate::domain::Severity;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FunctionClassification {
Integration,
Operation,
Trivial,
Violation,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NestingHotspot {
pub line: usize,
pub nesting_depth: usize,
pub construct: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MagicNumberOccurrence {
pub line: usize,
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LogicOccurrenceRecord {
pub line: usize,
pub kind: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ComplexityMetricsRecord {
pub cognitive_complexity: usize,
pub cyclomatic_complexity: usize,
pub max_nesting: usize,
pub function_lines: usize,
pub unsafe_blocks: usize,
pub unwrap_count: usize,
pub expect_count: usize,
pub panic_count: usize,
pub todo_count: usize,
pub logic_count: usize,
pub call_count: usize,
pub hotspots: Vec<NestingHotspot>,
pub magic_numbers: Vec<MagicNumberOccurrence>,
pub logic_occurrences: Vec<LogicOccurrenceRecord>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct FunctionRecord {
pub name: String,
pub file: String,
pub line: usize,
pub qualified_name: String,
pub parent_type: Option<String>,
pub classification: FunctionClassification,
pub severity: Option<Severity>,
pub complexity: Option<ComplexityMetricsRecord>,
pub parameter_count: usize,
pub own_calls: Vec<String>,
pub is_trait_impl: bool,
pub is_test: bool,
pub effort_score: Option<f64>,
pub suppressed: bool,
pub complexity_suppressed: bool,
}