Skip to content

Commit 0f267ad

Browse files
committed
Fixing test errors
1 parent b2935e5 commit 0f267ad

File tree

3 files changed

+44
-33
lines changed

3 files changed

+44
-33
lines changed

crates/diff-engine/src/changes.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -456,10 +456,11 @@ impl ChangeClassifier {
456456
let mut alternatives = Vec::new();
457457
let mut secondary_types = Vec::new();
458458

459-
// Calculate similarity metrics if AST is available
460-
let similarity_metrics = if let (Some(src_ast), Some(tgt_ast)) = (source_ast, target_ast) {
461-
if let Some(scorer) = &self.similarity_scorer {
462-
Some(scorer.calculate_comprehensive_similarity(src_ast, tgt_ast)?)
459+
// Calculate similarity metrics if AST and signatures are available
460+
let similarity_metrics = if let (Some(src_ast), Some(tgt_ast), Some(src_sig), Some(tgt_sig)) =
461+
(source_ast, target_ast, source_signature, target_signature) {
462+
if let Some(scorer) = &mut self.similarity_scorer {
463+
Some(scorer.calculate_comprehensive_similarity(src_sig, src_ast, tgt_sig, tgt_ast)?)
463464
} else {
464465
None
465466
}
@@ -946,10 +947,12 @@ impl ChangeClassifier {
946947
}
947948

948949
// Complex functions have higher impact when deleted
949-
let complexity = signature.complexity_metrics.cyclomatic_complexity;
950-
if complexity > 10 {
951-
impact_level = ImpactLevel::High;
952-
effort_level = EffortLevel::Medium;
950+
if let Some(metrics) = &signature.complexity_metrics {
951+
let complexity = metrics.cyclomatic_complexity;
952+
if complexity > 10 {
953+
impact_level = ImpactLevel::High;
954+
effort_level = EffortLevel::Medium;
955+
}
953956
}
954957

955958
affected_components.push(source.name.clone());

crates/diff-engine/src/refactoring.rs

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,14 +1086,16 @@ impl RefactoringDetector {
10861086
// Signature analysis
10871087
if let (Some(src_sig), Some(tgt_sig)) = (source_sig, target_sig) {
10881088
// Check complexity reduction in source
1089-
if src_sig.complexity_metrics.cyclomatic_complexity > tgt_sig.complexity_metrics.cyclomatic_complexity {
1090-
confidence += 0.2;
1091-
}
1089+
if let (Some(src_metrics), Some(tgt_metrics)) = (&src_sig.complexity_metrics, &tgt_sig.complexity_metrics) {
1090+
if src_metrics.cyclomatic_complexity > tgt_metrics.cyclomatic_complexity {
1091+
confidence += 0.2;
1092+
}
10921093

1093-
// Check if extracted method has reasonable complexity
1094-
if tgt_sig.complexity_metrics.cyclomatic_complexity >= 2 &&
1095-
tgt_sig.complexity_metrics.cyclomatic_complexity <= 10 {
1096-
confidence += 0.1;
1094+
// Check if extracted method has reasonable complexity
1095+
if tgt_metrics.cyclomatic_complexity >= 2 &&
1096+
tgt_metrics.cyclomatic_complexity <= 10 {
1097+
confidence += 0.1;
1098+
}
10971099
}
10981100

10991101
// Check parameter patterns (extracted methods often have parameters from original)
@@ -1213,14 +1215,16 @@ impl RefactoringDetector {
12131215
// Signature analysis
12141216
if let (Some(del_sig), Some(mod_sig)) = (deleted_sig, modified_sig) {
12151217
// Check if deleted method was simple (good candidate for inlining)
1216-
if del_sig.complexity_metrics.cyclomatic_complexity <= 5 &&
1217-
del_sig.complexity_metrics.lines_of_code <= 20 {
1218-
confidence += 0.2;
1219-
}
1218+
if let (Some(del_metrics), Some(mod_metrics)) = (&del_sig.complexity_metrics, &mod_sig.complexity_metrics) {
1219+
if del_metrics.cyclomatic_complexity <= 5 &&
1220+
del_metrics.lines_of_code <= 20 {
1221+
confidence += 0.2;
1222+
}
12201223

1221-
// Check if modified method became more complex
1222-
if mod_sig.complexity_metrics.cyclomatic_complexity > del_sig.complexity_metrics.cyclomatic_complexity {
1223-
confidence += 0.1;
1224+
// Check if modified method became more complex
1225+
if mod_metrics.cyclomatic_complexity > del_metrics.cyclomatic_complexity {
1226+
confidence += 0.1;
1227+
}
12241228
}
12251229

12261230
// Check if deleted method had few parameters (easier to inline)
@@ -1338,11 +1342,13 @@ impl RefactoringDetector {
13381342
}
13391343

13401344
// Check complexity similarity
1341-
let complexity_diff = (src_sig.complexity_metrics.cyclomatic_complexity as f64
1342-
- tgt_sig.complexity_metrics.cyclomatic_complexity as f64).abs();
1345+
if let (Some(src_metrics), Some(tgt_metrics)) = (&src_sig.complexity_metrics, &tgt_sig.complexity_metrics) {
1346+
let complexity_diff = (src_metrics.cyclomatic_complexity as f64
1347+
- tgt_metrics.cyclomatic_complexity as f64).abs();
13431348

1344-
if complexity_diff <= 2.0 {
1345-
confidence += 0.1;
1349+
if complexity_diff <= 2.0 {
1350+
confidence += 0.1;
1351+
}
13461352
}
13471353
}
13481354

@@ -1439,11 +1445,13 @@ impl RefactoringDetector {
14391445
}
14401446

14411447
// Check complexity preservation
1442-
let complexity_diff = (src_sig.complexity_metrics.cyclomatic_complexity as f64
1443-
- tgt_sig.complexity_metrics.cyclomatic_complexity as f64).abs();
1448+
if let (Some(src_metrics), Some(tgt_metrics)) = (&src_sig.complexity_metrics, &tgt_sig.complexity_metrics) {
1449+
let complexity_diff = (src_metrics.cyclomatic_complexity as f64
1450+
- tgt_metrics.cyclomatic_complexity as f64).abs();
14441451

1445-
if complexity_diff <= 1.0 {
1446-
confidence += 0.05;
1452+
if complexity_diff <= 1.0 {
1453+
confidence += 0.05;
1454+
}
14471455
}
14481456
}
14491457

crates/diff-engine/src/tree_edit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,9 @@ impl TreeEditDistance {
448448
// Different costs for different types of updates
449449
match (node1, node2) {
450450
// Same category updates (e.g., both statements)
451-
(NodeType::IfStatement, NodeType::WhileStatement) |
452-
(NodeType::WhileStatement, NodeType::ForStatement) |
453-
(NodeType::ForStatement, NodeType::IfStatement) => self.config.update_cost * 0.5,
451+
(NodeType::IfStatement, NodeType::WhileLoop) |
452+
(NodeType::WhileLoop, NodeType::ForLoop) |
453+
(NodeType::ForLoop, NodeType::IfStatement) => self.config.update_cost * 0.5,
454454

455455
// Expression to expression updates
456456
(NodeType::BinaryExpression, NodeType::UnaryExpression) |

0 commit comments

Comments
 (0)