use crate::domain::Finding;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CouplingFindingKind {
Cycle,
SdpViolation,
ThresholdExceeded,
Structural,
}
#[derive(Debug, Clone, PartialEq)]
pub enum CouplingFindingDetails {
Cycle {
modules: Vec<String>,
},
SdpViolation {
from_module: String,
to_module: String,
from_instability: f64,
to_instability: f64,
},
ThresholdExceeded {
module_name: String,
afferent: usize,
efferent: usize,
instability: f64,
},
Structural {
item_name: String,
code: String,
detail: String,
},
}
#[derive(Debug, Clone, PartialEq)]
pub struct CouplingFinding {
pub common: Finding,
pub kind: CouplingFindingKind,
pub details: CouplingFindingDetails,
}