@@ -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
0 commit comments