tokmd_analysis_types/complexity/
file.rs1use serde::{Deserialize, Serialize};
6
7use super::ComplexityRisk;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct FileComplexity {
11 pub path: String,
12 pub module: String,
13 pub function_count: usize,
14 pub max_function_length: usize,
15 pub cyclomatic_complexity: usize,
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub cognitive_complexity: Option<usize>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub max_nesting: Option<usize>,
22 pub risk_level: ComplexityRisk,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub functions: Option<Vec<FunctionComplexityDetail>>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct FunctionComplexityDetail {
31 pub name: String,
33 pub line_start: usize,
35 pub line_end: usize,
37 pub length: usize,
39 pub cyclomatic: usize,
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub cognitive: Option<usize>,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub max_nesting: Option<usize>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub param_count: Option<usize>,
50}