## 类型匹配（Critical）

### 触发信号

- 函数调用参数个数与定义不一致
- 函数调用参数类型与定义不一致
- 变量赋值类型与声明类型不一致
- 函数返回值类型与声明返回类型不一致
- 接口实现的签名与接口定义不一致

### 判定流程

1. **识别函数调用**：`Read` 提取变更代码中的函数调用，标记调用位置和参数
2. **验证参数匹配**：`find_definition` 查找被调函数的定义，对比：
   - 参数个数：调用处传了几参，定义处需要几参
   - 参数类型：调用处实参类型是否兼容定义处形参类型（需考虑隐式转换）
3. **验证返回类型**：`find_definition` 查找函数定义，`Read` 提取所有 `return` 语句，确认返回值类型与声明一致
4. **验证接口实现**：`find_definition` 查找接口定义，`find_references` 查找实现类，`Read` 对比方法签名是否完全匹配（参数类型、返回类型、可选参数）

### 证据构造

确认缺陷后，输出需包含：
- 调用/赋值位置（含文件:行号）
- 定义位置（函数/接口定义，含文件:行号）
- 不匹配详情（期望类型 vs 实际类型，期望参数个数 vs 实际个数）

### 排除

- TypeScript strict mode 已覆盖的类型检查（编译器保证）
- Python `Any` 类型的灵活调用（设计如此）
- 可选参数未传（函数定义中参数有默认值）
- 方法重载（合法的多签名）
- 第三方库函数调用的参数类型校验（三方依赖不可见，无法确认类型定义）
