use serde::{Deserialize, Serialize};
use super::ComplexityRisk;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileComplexity {
pub path: String,
pub module: String,
pub function_count: usize,
pub max_function_length: usize,
pub cyclomatic_complexity: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub cognitive_complexity: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_nesting: Option<usize>,
pub risk_level: ComplexityRisk,
#[serde(skip_serializing_if = "Option::is_none")]
pub functions: Option<Vec<FunctionComplexityDetail>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FunctionComplexityDetail {
pub name: String,
pub line_start: usize,
pub line_end: usize,
pub length: usize,
pub cyclomatic: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub cognitive: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_nesting: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub param_count: Option<usize>,
}