| name | code-review |
| description | 三阶段结构化代码审查(发现→验证→分级),输出P0/P1/P2/历史遗留问题清单 |
Code Review 技能
触发条件
当用户说"review一下"、"帮我审审"、"做code review"、"看看有没有问题"时触发。
执行流程(三阶段)
Phase 1:发现
- 用
glob 了解项目结构和文件范围
- 用
grep 定位关键函数、类、配置入口
- 用
file_operation(read, offset, limit=50) 精确读取待审查代码
- 按维度并行扫描:安全 → 正确性 → 性能
- 记录所有疑点,不急于下结论
Phase 2:验证
对每个发现进行二次验证:
- 重新读取上下文(前后 10-20 行)确认问题真实存在
- 检查是否已有防护措施
- 区分新增问题 vs 历史遗留
- 验证未通过 → 丢弃,不出现在报告中
Phase 3:分级与输出
按 P0/P1/P2/Pre-existing 严格定级,按标准格式输出报告。
检查清单
🔴 P0 必改(正确性缺陷)
| 维度 | 检查项 |
|---|
| 安全 | 硬编码密钥/密码/Token |
| 安全 | 用户输入未校验(SQL注入/XSS/命令注入) |
| 安全 | 文件路径未校验(目录穿越) |
| 正确性 | 空指针/None未处理 |
| 正确性 | 异常被空except吞掉 |
| 正确性 | 资源泄漏(文件/连接/锁未释放) |
| 正确性 | 逻辑错误(条件反/off-by-one) |
| 测试 | 核心逻辑无单测 |
🟡 P1 建议(上限 5 条)
| 维度 | 检查项 |
|---|
| 可读性 | 函数>80行或嵌套>3层 |
| 可读性 | 魔法数字未定义为常量 |
| 可读性 | 命名不清晰 |
| 性能 | N+1查询、循环内重复计算 |
| 可维护性 | 重复代码未提取 |
🟢 P2 可选
⚪ Pre-existing 历史遗留
每条发现三要素
- 位置:
文件名:行号
- 问题:什么会出错
- 修改方案:具体代码修改建议
输出格式
## 代码审查报告
### 🔴 必改(P0)
- `文件名:行号` — 问题。
建议:修改方案(含代码片段)。
### 🟡 建议(P1)
- `文件名:行号` — 问题。
建议:优化方向。
### 🟢 可选(P2)
- `(整体)` — 建议。
### ⚪ 历史遗留(Pre-existing)
- `文件名:行号` — [历史遗留] 问题。
### 总结
- 审查范围:X 个文件(本次变更 X 个)
- 必改:X | 建议:X | 可选:X | 历史遗留:X
- 总体评价:一句话
- 严重程度分布:P0 X% | P1 X%