Skip to content

Commit 24beb64

Browse files
committed
Fixing test errors
1 parent 00dba43 commit 24beb64

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

crates/diff-engine/src/changes.rs

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,8 @@ impl ChangeClassifier {
375375
evidence,
376376
alternatives: Vec::new(),
377377
complexity_score: target_signature
378-
.map(|s| s.complexity_metrics.cyclomatic_complexity as f64)
378+
.and_then(|s| s.complexity_metrics.as_ref())
379+
.map(|m| m.cyclomatic_complexity as f64)
379380
.unwrap_or(1.0),
380381
},
381382
secondary_types: Vec::new(),
@@ -430,7 +431,8 @@ impl ChangeClassifier {
430431
evidence,
431432
alternatives: Vec::new(),
432433
complexity_score: source_signature
433-
.map(|s| s.complexity_metrics.cyclomatic_complexity as f64)
434+
.and_then(|s| s.complexity_metrics.as_ref())
435+
.map(|m| m.cyclomatic_complexity as f64)
434436
.unwrap_or(1.0),
435437
},
436438
secondary_types: Vec::new(),
@@ -588,8 +590,12 @@ impl ChangeClassifier {
588590
});
589591

590592
// Analyze complexity changes
591-
let complexity_change = tgt_sig.complexity_metrics.cyclomatic_complexity as f64
592-
- src_sig.complexity_metrics.cyclomatic_complexity as f64;
593+
let complexity_change = if let (Some(tgt_metrics), Some(src_metrics)) =
594+
(&tgt_sig.complexity_metrics, &src_sig.complexity_metrics) {
595+
tgt_metrics.cyclomatic_complexity as f64 - src_metrics.cyclomatic_complexity as f64
596+
} else {
597+
0.0
598+
};
593599

594600
if complexity_change.abs() > 0.1 {
595601
characteristics.push(ChangeCharacteristic {
@@ -780,15 +786,19 @@ impl ChangeClassifier {
780786
weight_sum += 0.1;
781787

782788
// Complexity similarity (weight: 0.2)
783-
let complexity_sim = {
784-
let c1 = sig1.complexity_metrics.cyclomatic_complexity as f64;
785-
let c2 = sig2.complexity_metrics.cyclomatic_complexity as f64;
786-
let max_complexity = c1.max(c2);
787-
if max_complexity == 0.0 {
788-
1.0
789-
} else {
790-
1.0 - (c1 - c2).abs() / max_complexity
789+
let complexity_sim = match (&sig1.complexity_metrics, &sig2.complexity_metrics) {
790+
(Some(m1), Some(m2)) => {
791+
let c1 = m1.cyclomatic_complexity as f64;
792+
let c2 = m2.cyclomatic_complexity as f64;
793+
let max_complexity = c1.max(c2);
794+
if max_complexity == 0.0 {
795+
1.0
796+
} else {
797+
1.0 - (c1 - c2).abs() / max_complexity
798+
}
791799
}
800+
(None, None) => 1.0,
801+
_ => 0.5, // One has metrics, other doesn't
792802
};
793803
total_score += complexity_sim * 0.2;
794804
weight_sum += 0.2;

0 commit comments

Comments
 (0)