name: 代码审查 description: 使用专门的审查模式自动化代码审查,针对拉取请求。分析代码的质量、安全性、性能和最佳实践。适用于代码变更审查、PR审查或代码审计。 source: anthropics/claude-code license: Apache-2.0
代码审查
审查类别
1. 安全审查
检查:
- SQL注入漏洞
- XSS(跨站脚本)
- 命令注入
- 不安全的反序列化
- 硬编码的秘密/凭证
- 不正确的认证/授权
- 不安全的直接对象引用
2. 性能审查
检查:
- N+1查询
- 缺失的数据库索引
- 不必要的重新渲染(React)
- 内存泄漏
- 异步代码中的阻塞操作
- 缺失的缓存机会
- 大型捆绑包大小
3. 代码质量审查
检查:
- 代码重复(DRY违规)
- 功能做太多(SRP违规)
- 深层嵌套/复杂条件
- 魔术数字/字符串
- 命名不佳
- 缺失的错误处理
- 不完整的类型覆盖
4. 测试审查
检查:
- 新代码的缺失测试覆盖
- 不测试行为的测试
- 不稳定测试模式
- 缺失的边缘案例
- 模拟的外部依赖
审查输出格式
## 代码审查摘要
### 🔴 关键(必须修复)
- **[文件:行]** [问题描述]
- **原因:** [解释]
- **修复:** [建议修复]
### 🟡 建议(应考虑)
- **[文件:行]** [问题描述]
- **原因:** [解释]
- **修复:** [建议修复]
### 🟢 细节(可选)
- **[文件:行]** [次要建议]
### ✅ 优点
- [对良好模式的积极反馈]
常见模式标记
安全
// 坏:SQL注入
const query = `SELECT * FROM users WHERE id = ${userId}`;
// 好:参数化查询
const query = 'SELECT * FROM users WHERE id = $1';
await db.query(query, [userId]);
性能
// 坏:N+1查询
users.forEach(async user => {
const posts = await getPosts(user.id);
});
// 好:批量查询
const userIds = users.map(u => u.id);
const posts = await getPostsForUsers(userIds);
错误处理
// 坏:吞噬错误
try {
await riskyOperation();
} catch (e) {}
// 好:处理或传播
try {
await riskyOperation();
} catch (e) {
logger.error('操作失败', { error: e });
throw new AppError('操作失败', { cause: e });
}
审查清单
- [ ] 无硬编码秘密
- [ ] 输入验证存在
- [ ] 错误处理完整
- [ ] 类型/接口定义
- [ ] 为新代码添加测试
- [ ] 无明显性能问题
- [ ] 代码可读且文档化
- [ ] 破坏性更改文档化