用途
code-review 是一个专家级代码审查技能,聚焦于代码质量、安全漏洞和可维护性。它分析代码变更,并提供按优先级排序、可落地的反馈。
适用时机
- 在编写或修改代码后,确保达到质量标准
- 在合并 Pull Request 或部署变更之前
- 进行安全审计或漏洞评估时
- 为项目建立代码质量标准时
- 审查代码以寻找性能优化点时
- 确保代码遵循项目约定与最佳实践时
主要能力
- 分析代码变更:审查 git diff 和被修改的文件,理解改动了什么
- 安全审计:识别暴露的密钥、API key 以及安全漏洞
- 质量评估:评估代码可读性、可维护性与最佳实践
- 性能审查:识别潜在性能问题和优化机会
- 标准合规:确保代码遵循项目约定与风格指南
- 优先级反馈:按严重程度(Critical、Warnings、Suggestions)组织审查结果
使用方式
基础代码审查
可以用自然语言下达指令,例如:
- “审查本分支最近的代码变更”
- “检查这个文件的安全问题和代码质量”
审查指定文件
- “审查 src/auth.js 的安全漏洞”
- “审查这个 pull request 中的变更”
审查流程
1. 分析变更
被调用时:
- 获取最近变更:运行 git diff 查看改动
git diff $(git merge-base HEAD main)..HEAD
- 聚焦被修改的文件:优先处理有实际改动的文件
- 结合上下文:从提交信息或对话中理解变更目的
2. 审查检查清单
对每个文件检查:
代码质量:
- 代码简洁可读
- 函数和变量命名良好
- 无重复代码
- 恰当的错误处理
- 良好的测试覆盖
- 已考虑性能因素
安全性:
- 无暴露的密钥或 API key
- 已实现输入校验
- 恰当的身份认证/授权
- 安全处理用户输入
- 无 SQL 注入或 XSS 漏洞
可维护性:
- 代码风格一致
- 注释适当(不过度)
- 函数/方法结构清晰
- 关注点分离得当
- 无不必要的复杂度
最佳实践:
- 遵循框架/库约定
- 恰当使用设计模式
- 算法与数据结构高效
- 恰当使用 async/await 或 promises
- 恰当的资源清理
3. 组织反馈
反馈分三个优先级:
Critical Issues(必须修复):
- 安全漏洞
- 会导致失败的 bug
- 会破坏现有功能的代码
- 会影响用户的性能问题
Warnings(应当修复):
- 影响可维护性的代码质量问题
- 潜在 bug 或边界情况
- 性能优化点
- 缺失的错误处理
- 不完整的测试覆盖
Suggestions(可以考虑改进):
- 代码风格改进
- 重构机会
- 文档增强
- 最佳实践建议
- 次要优化
4. 提供具体示例
对每个发现的问题给出:
- Location:文件路径和行号
- Issue:问题的清晰描述
- Impact:为什么这很重要
- Fix:展示如何修复的具体代码示例
- Rationale:解释该修复为何更好
示例
示例 1:发现安全问题
输入:审查 src/api/auth.js
输出:
## Code Review: src/api/auth.js
### Critical Issues
**1. Exposed API Key**
- **Location**: `src/api/auth.js:23`
- **Issue**: Hardcoded API key in source code
- **Code**:
```javascript
const API_KEY = "sk_live_1234567890abcdef"; // ❌ Exposed secret
-
Fix: Use environment variables
const API_KEY = process.env.API_KEY; // ✅ Secure -
Impact: This exposes your API key in version control, allowing unauthorized access
Warnings
2. Missing Input Validation
- Location:
src/api/auth.js:45 - Issue: No validation on user input before processing
- Recommendation: Add input validation before authentication
### 示例 2:代码质量审查
输入:审查最近的变更
输出:
Code Review Summary
Files Reviewed: 5 Critical Issues: 0 Warnings: 3 Suggestions: 5
Warnings
1. Duplicated Code
- Files:
src/utils/format.js:12-25andsrc/utils/display.js:8-21 - Issue: Same formatting logic duplicated
- Fix: Extract to shared utility function
2. Missing Error Handling
- Location:
src/api/users.js:34 - Issue: No try/catch for async operation
- Fix: Add proper error handling
Suggestions
1. Improve Variable Naming
- Location:
src/components/List.jsx:15 - Current:
const d = data.map(...) - Suggested:
const formattedItems = data.map(...)
## 参考文件
进行完整审查时,可按需加载参考文件:
- references/review_checklist.md —— 覆盖安全、代码质量、性能、测试、文档和最佳实践的详细检查清单
- references/CODE_ANALYSIS.template.md —— 包含安全、性能和可维护性章节的代码分析报告模板
进行深入审查时,加载 references/review_checklist.md 并使用对应的检查清单章节。
## 最佳实践
### 审查关注点
- 安全优先:始终先检查安全漏洞
- 上下文很重要:审查前先理解变更目的
- 建设性:提供可执行的反馈,而不只是批评
- 排优先级:聚焦必须修复的关键问题
- 解释原因:帮助开发者理解建议背后的理由
### 审查准则
- 具体:指向确切的行并提供代码示例
- 平衡:既肯定好代码,也指出问题
- 务实:考虑变更的上下文与紧迫性
- 有教育意义:帮助开发者学习与提升
- 一致:在所有审查中应用相同标准
### 常见检查模式
安全性:
- 硬编码的密钥或凭据
- SQL 注入漏洞
- XSS 漏洞
- 缺失的身份认证/授权
- 不安全的随机数生成
代码质量:
- 代码重复
- 未定义常量的魔法数字
- 过深的嵌套条件
- 职责过多的函数
- 糟糕的错误信息
性能:
- N+1 查询问题
- 缺失索引
- 低效算法
- 不必要的重渲染(React)
- 内存泄漏
## 相关使用场景
- 提交前代码审查
- Pull Request 审查
- 安全审计
- 代码质量评估
- 新团队成员入职
- 建立编码标准