Skills: 代码审查技能
最后更新:2026-08-31
代码审查是质量的第一道防线——一个优秀的审查 Skill 相当于给团队配了一个不知疲倦的高级审查员。
1. 审查维度设计
(1) 核心审查维度
| 维度 | 检查项 | 严重程度 |
|---|---|---|
| 安全性 | SQL 注入、XSS、硬编码密钥、不安全依赖 | 🔴 关键 |
| 性能 | N+1 查询、内存泄漏、不必要的循环 | 🟡 重要 |
| 可读性 | 命名规范、函数长度、注释充分性 | 🟢 建议 |
| 最佳实践 | 错误处理、SOLID 原则、DRY | 🟡 重要 |
| 测试覆盖 | 单元测试、边界条件、异常路径 | 🟡 重要 |
(2) 语言特定维度
MARKDOWN
## Python 额外检查
- type hints 完整性
- docstring 格式(Google/NumPy 风格)
- f-string vs format/concat
- 异常捕获范围(避免 bare except)
## TypeScript 额外检查
- any 类型使用
- 类型断言合理性
- 接口定义完整性
- 可选属性标注
2. 审查流程设计
(1) 标准流程
TEXT
📖 仅展示
代码审查流程
├── 1. 收集变更
│ ├── 读取 git diff(变更文件列表)
│ └── 确定审查范围
├── 2. 逐文件审查
│ ├── Read 读取文件
│ ├── Grep 搜索关联上下文
│ └── 按维度逐一检查
├── 3. 输出报告
│ ├── 按严重程度排序
│ ├── 给出具体修改建议
│ └── 包含代码示例
└── 4. 总结评估
├── 整体评分
└── 是否建议合并
(2) 增量审查 vs 全量审查
| 类型 | 范围 | 适用场景 |
|---|---|---|
| 增量审查 | 只审查变更部分 | PR/MR 审查 |
| 全量审查 | 审查整个模块 | 新人代码审查、重构后验证 |
3. 审查报告格式
(1) 标准输出模板
MARKDOWN
## 代码审查报告
### 📊 总览
- 审查文件:3 个
- 发现问题:5 个(🔴 1 / 🟡 2 / 🟢 2)
- 整体评分:7/10
- 建议:⚠️ 修复关键问题后合并
### 🔴 关键问题
**[SEC-001] SQL 注入风险**
📍 位置:src/auth/login.py:42
📝 使用字符串拼接构建 SQL 查询
✅ 建议:
```python
query = "SELECT * FROM users WHERE name = ?"
cursor.execute(query, (username,))
🟡 重要问题
...
🟢 改进建议
...
### (2) 评分体系
```text
评分规则:
- 🔴 关键问题:每个 -3 分
- 🟡 重要问题:每个 -1 分
- 🟢 改进建议:每个 -0.5 分
- 基础分:10 分
- 最低分:0 分
合并建议:
- ≥ 8 分:✅ 建议合并
- 5-7 分:⚠️ 修复后合并
- < 5 分:❌ 不建议合并
4. 审查 Skill 实战
▶ 示例:全维度审查 Skill
Alice 为团队创建了标准化的审查 Skill:
YAML
---
name: full-review
description: "全维度代码审查"
triggers:
- keyword: "full-review|全面审查"
tools:
- Read
- Grep
- Glob
- Bash
---
MARKDOWN
## 审查流程
1. Glob 确定审查文件范围
2. 对每个文件按维度检查:
- 安全性:Grep 搜索危险模式
- 性能:Read 分析算法复杂度
- 可读性:检查命名和结构
- 测试:确认测试覆盖
3. 汇总输出审查报告
Bob 评价:"标准化报告让审查结果一目了然——红灯必须修,黄灯看情况,绿灯锦上添花。"
❓ 常见问题
Q 审查太严格会不会拖慢开发?
A 会。建议分两档——PR 审查只检查安全性和关键逻辑,定期全量审查覆盖全部维度。
Q AI 审查能替代人工审查吗?
A 不能完全替代。AI 擅长模式匹配和安全扫描,人工擅长架构评审和业务逻辑判断。两者互补最好。
Q 如何避免审查报告太长?
A 设置严重程度过滤,默认只输出 🟡 及以上问题。🟢 建议可选输出。
📖 小节
- 五大审查维度:安全、性能、可读、最佳实践、测试覆盖
- 标准流程:收集变更 → 逐文件审查 → 输出报告 → 总结评估
- 报告格式:总览 + 分级问题 + 评分 + 合并建议
- 评分体系:10 分制,按问题严重程度扣分
📝 作业
- 基础题(难度⭐):创建一个安全审查 Skill,只检查 SQL 注入、XSS、硬编码密钥三项。
- 进阶题(难度⭐⭐):创建一个全维度审查 Skill,输出标准格式的审查报告,包含评分和合并建议。
- 挑战题(难度⭐⭐⭐):创建一个增量审查 Skill,只审查 git diff 中的变更,并为不同语言自动调整审查维度。