Files
2026Technology-Competition/data/custom-rule-demo/result-report.md
T

68 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自定义规则审查联动 — 验证结果报告(覆盖全演示)
## 验证信息
| 项 | 值 |
|---|---|
| 验证日期 | 2026-09-07 |
| 验证功能 | 自定义规则审查联动——团队编码风格规则在真实代码审查中的覆盖度(对应导入验证清单 C3 检查点) |
| 规则文件 | `data/custom-rule-demo/team-style-rules.yaml`(5 条团队私有约定,经 UI 导入) |
| 测试代码 | `data/custom-rule-demo/TeamStyleService.java` |
| 规则设计原则 | 全部为静态分析四件套与通用 AI 深度审查均查不到的团队私有约定 |
## 团队风格规则设计
| # | 规则 id | severity | 约定内容 | 静态分析为何查不到 |
|---|---|---|---|---|
| R1 | require-query-method-prefix | warning | Service 层查询方法必须以 query/find/get 开头 | PMD 只查通用命名规范,不限定业务动词前缀 |
| R2 | require-dto-suffix | warning | 跨服务传输对象类名必须以 DTO 结尾 | PMD Bean 命名规则只管 EJB 后缀 |
| R3 | require-result-wrapper | warning | Controller 返回值必须用 Result 包装 | 团队架构约定 |
| R4 | require-author-tag | info | 类 Javadoc 必须含 @author | PMD CommentRequired 不在规则集内,通用 AI 不主动挑 |
| R5 | require-chinese-log-message | info | Service 层日志消息必须使用中文 | 英文日志是通用惯例,通用工具均不报 |
(R4 原设计为「金额必须 BigDecimal」,基线验证中被通用 AI 原生命中——真实最佳实践不配当团队私有约定演示规则,遂替换。)
## 测试代码构造
`TeamStyleService.java` 要求**双重干净**:静态分析零告警(PMD 零报告达成)+ 通用 AI 深度审查仅剩开放性设计建议(经 3 轮迭代:11 → 4 → 6 条,均为设计级 nitpick,无 error 级)。代码内含 5 处无痕埋点(不加任何提示注释,防止 AI 照抄注释而非按规则判定)。
## 验证过程
1. **基线审查**(无自定义规则):PMD 0 告警;通用 AI 建议 4-6 条逐轮波动(11 → 4 → 6,均为 equals/hashCode、Optional 语义、Map 优化等开放性设计建议)
2. **导入规则**UI 导入 team-style-rules.yaml5 条全部保留、零去重标注(纯约定对内置静态规则零重复)
3. **复审**:自定义规则 6 条命中 + 通用 AI 建议 4 条并存,互不干扰
## 命中核对
| 规则 | 命中位置 | 判定 |
|---|---|---|
| require-query-method-prefix | L33 handleOrderQuery | ✅ 精准 |
| require-result-wrapper | L61 listOrders 裸返回 | ✅ 精准 |
| require-dto-suffix | L71 OrderInfo | ✅ 精准 |
| require-author-tag | L14 TeamStyleService 类注释 | ✅ 精准 |
| require-chinese-log-message | L45 英文日志 | ✅ 精准 |
| require-author-tag(第二次) | L53 OrderController 内部类 | ✅ 合理命中(埋点遗漏被规则抓出) |
**5/5 规则全部触发,行号全部准确,message 逐字来自规则文件,零误报**——覆盖全达成。
## 关键发现
1. **确定性与开放性对比(演示核心叙事)**:通用 AI 建议逐轮波动(11→4→6→4),团队规则命中稳定精准——通用 AI 提供开放性建议,自定义规则提供确定性的团队约定检查
2. **两类发现在报告中独立分区**:「自定义规则 · N 个问题」(ruleId 带 `custom:` 前缀)与「AI 审查 · N 条建议」互不混淆
3. **通用 AI 与团队规则的边界被实测划清**:「金额必须 BigDecimal」被通用 AI 原生捕获(真实最佳实践),「@author 标注」「中文日志」通用 AI 零感知(纯团队约定)——自定义规则的价值空间 = 通用最佳实践之外的团队私有约定
4. **埋点遗漏反向验证**OrderController 漏加 @author 被规则抓出,规则执行力强于设计者记忆
## 已知观察
- 通用 AI 建议与自定义规则命中会在同一报告中并存(如 return-list-for-single-entity 与 R1 同指 handleOrderQuery,一个挑返回语义一个挑命名前缀),讲解时需说明维度不同
- 基线要求「AI 零建议」对非平凡代码不可达(AI 对任何代码都能提出设计级建议),本验证以「无 error 级发现 + 建议均为开放性设计 nitpick」为基线通过标准
## 结论
**通过**。团队风格规则在真实代码审查中全覆盖命中(5/5),命中行号与 message 精准,与静态分析、通用 AI 审查通道清晰分离。自定义规则「补齐团队私有约定盲区」的价值定位得到端到端实证。
## 关联
- 规则导入验证:`data/import-verification/`(三场景 23 轮,本报告的 C3 检查点由此补齐)
- 自动化测试:`tests/excel-converter.test.ts``tests/method-extractor.test.ts`CodeLens 依赖的方法提取)