## 缺陷聚类 (Defect Clustering)

**目标**：识别存活缺陷中的关联关系，将独立但相关的缺陷标记为聚类，提示系统性风险。

**与去重的区别**：去重合并相同根因的缺陷为一份报告；聚类标记关联但独立的缺陷，不合并报告。

### 聚类模式

#### 同函数多缺陷

同一函数内存在 2 个及以上独立缺陷：

| 聚类信号 | 判定 |
|---------|------|
| 同一函数名出现 2+ 次在不同缺陷的位置描述中 | 标记聚类："[函数名] 存在多个缺陷，建议整体审查" |

#### 同文件多缺陷

同一文件内存在 3 个及以上缺陷：

| 聚类信号 | 判定 |
|---------|------|
| 同一文件路径出现 3+ 次在不同缺陷中 | 标记聚类："[文件名] 存在系统性问题" |
| 同一文件内缺陷覆盖了多个不同函数 | 标记聚类："[文件名] 多处存在缺陷，建议重构" |

#### 同 API 多安全缺陷

同一 API 接口存在多个安全类型缺陷：

| 聚类信号 | 判定 |
|---------|------|
| 同一 API 路径/函数名有 2+ 个安全类型缺陷（注入/XSS/认证/授权） | 标记聚类："[API名] 需要安全加固" |

#### 同数据流路径

多个缺陷描述涉及同一数据流路径：

| 聚类信号 | 判定 |
|---------|------|
| 多个缺陷的描述中提到相同的输入源→处理→输出链路 | 标记聚类："[路径名] 存在系统性风险" |

#### 同组件/模块多缺陷

同一组件或模块存在多个缺陷：

| 聚类信号 | 判定 |
|---------|------|
| 同一包/模块/目录下有 3+ 个缺陷 | 标记聚类："[组件名] 质量堪忧，建议系统性排查" |

### 聚类规则

- **基于缺陷报告中的位置信息**：文件路径、函数名、API 路径、模块名
- **不修改缺陷报告内容**：聚类信息作为附加标注，在报告汇总部分呈现
- **一个缺陷可以属于多个聚类**：如同一个函数中既有安全缺陷又有逻辑缺陷
- **仅在存活缺陷 >= 2 时执行**：单个缺陷无需聚类
