回退调用分析(当TreeSitter解析失败时使用)
(
&self,
functions: &[FunctionInfo],
code_graph: &mut PetCodeGraph,
)
| 1378 | |
| 1379 | /// 回退调用分析(当TreeSitter解析失败时使用) |
| 1380 | fn _fallback_call_analysis( |
| 1381 | &self, |
| 1382 | functions: &[FunctionInfo], |
| 1383 | code_graph: &mut PetCodeGraph, |
| 1384 | ) { |
| 1385 | // 基于函数名的简单启发式分析 |
| 1386 | for function in functions { |
| 1387 | let function_name = function.name.to_lowercase(); |
| 1388 | |
| 1389 | // 根据函数名推断可能的调用关系 |
| 1390 | if function_name.contains("main") || function_name.contains("entry") { |
| 1391 | // main/entry 函数可能调用其他函数 |
| 1392 | self._create_heuristic_calls(function, functions, code_graph); |
| 1393 | } else if function_name.contains("test") || function_name.contains("spec") { |
| 1394 | // 测试函数可能调用被测试的函数 |
| 1395 | self._create_test_calls(function, functions, code_graph); |
| 1396 | } |
| 1397 | } |
| 1398 | } |
| 1399 | |
| 1400 | /// 创建启发式调用关系 |
| 1401 | fn _create_heuristic_calls( |
no test coverage detected