name: code-review description: 专注于代码质量、安全性和可维护性的专家级代码审查专家。用于审查代码变更、确保高开发标准或进行安全审计。提供按优先级组织的可操作反馈。 author: Joseph OBrien status: unpublished updated: ‘2025-12-23’ version: 1.0.1 tag: skill type: skill
代码审查
此技能提供专家级的代码审查能力,重点关注代码质量、安全漏洞和可维护性。它分析代码变更并提供按优先级排序的可操作反馈。
何时使用此技能
- 编写或修改代码后,以确保质量标准
- 合并拉取请求或部署变更之前
- 进行安全审计或漏洞评估时
- 为项目建立代码质量标准时
- 审查代码以进行性能优化时
- 确保代码遵循项目约定和最佳实践时
此技能的功能
- 分析代码变更:审查git差异和修改的文件以了解变更内容
- 安全审计:识别暴露的密钥、API密钥和安全漏洞
- 质量评估:评估代码可读性、可维护性和最佳实践
- 性能审查:识别潜在性能问题和优化机会
- 标准合规性:确保代码遵循项目约定和风格指南
- 优先级反馈:按严重性组织发现的问题(关键、警告、建议)
使用方法
基本代码审查
审查此分支中的最近代码变更
检查此文件的安全问题和代码质量
审查特定文件
审查src/auth.js中的安全漏洞
审查此拉取请求中的变更
审查流程
1. 分析变更
调用时:
-
获取最近变更:运行
git diff查看变更内容git diff $(git merge-base HEAD main)..HEAD -
关注修改的文件:优先处理实际发生变化的文件
-
审查上下文:从提交消息或对话中理解变更目的
2. 审查清单
对每个文件检查:
代码质量:
- 代码简洁易读
- 函数和变量命名恰当
- 无重复代码
- 适当的错误处理
- 良好的测试覆盖率
- 已考虑性能因素
安全性:
- 无暴露的密钥或API密钥
- 已实施输入验证
- 适当的身份验证/授权
- 用户输入的安全处理
- 无SQL注入或XSS漏洞
可维护性:
- 一致的代码风格
- 适当的注释(不过度)
- 清晰的函数/方法结构
- 适当的关注点分离
- 无不必要的复杂性
最佳实践:
- 遵循框架/库约定
- 正确使用设计模式
- 高效的算法和数据结构
- 适当使用async/await或promises
- 适当的资源清理
3. 组织反馈
按三个优先级级别提供反馈:
关键问题(必须修复):
- 安全漏洞
- 会导致故障的错误
- 破坏现有功能的代码
- 会影响用户的性能问题
警告(应该修复):
- 影响可维护性的代码质量问题
- 潜在错误或边界情况
- 性能优化
- 缺少错误处理
- 不完整的测试覆盖率
建议(考虑改进):
- 代码风格改进
- 重构机会
- 文档增强
- 最佳实践建议
- 次要优化
4. 提供具体示例
对每个发现的问题:
- 位置:文件路径和行号
- 问题:问题的清晰描述
- 影响:为什么这很重要
- 修复:显示如何修复的具体代码示例
- 理由:解释为什么修复更好
示例
示例1:发现安全问题
输入:审查src/api/auth.js
输出:
## 代码审查:src/api/auth.js
### 关键问题
**1. 暴露的API密钥**
- **位置**:`src/api/auth.js:23`
- **问题**:源代码中硬编码的API密钥
- **代码**:
```javascript
const API_KEY = "sk_live_1234567890abcdef"; // ❌ 暴露的密钥
-
修复:使用环境变量
const API_KEY = process.env.API_KEY; // ✅ 安全 -
影响:这会在版本控制中暴露您的API密钥,允许未经授权的访问
警告
2. 缺少输入验证
- 位置:
src/api/auth.js:45 - 问题:处理前未对用户输入进行验证
- 建议:在身份验证前添加输入验证
示例2:代码质量审查
输入:审查最近变更
输出:
## 代码审查摘要
**审查文件**:5
**关键问题**:0
**警告**:3
**建议**:5
### 警告
**1. 重复代码**
- **文件**:`src/utils/format.js:12-25`和`src/utils/display.js:8-21`
- **问题**:相同的格式化逻辑重复
- **修复**:提取到共享实用函数
**2. 缺少错误处理**
- **位置**:`src/api/users.js:34`
- **问题**:异步操作没有try/catch
- **修复**:添加适当的错误处理
### 建议
**1. 改进变量命名**
- **位置**:`src/components/List.jsx:15`
- **当前**:`const d = data.map(...)`
- **建议**:`const formattedItems = data.map(...)`
参考文件
如需全面审查清单,请根据需要加载参考文件:
references/review_checklist.md- 安全、代码质量、性能、测试、文档和最佳实践的详细清单references/CODE_ANALYSIS.template.md- 包含安全、性能和可维护性部分的代码分析报告模板
进行彻底审查时,加载references/review_checklist.md并使用适当的清单部分。
最佳实践
审查重点领域
- 安全第一:始终首先检查安全漏洞
- 上下文重要:在审查前理解变更目的
- 建设性:提供可操作的反馈,不仅仅是批评
- 优先级:关注必须修复的关键问题
- 解释原因:帮助开发人员理解建议背后的理由
审查指南
- 具体:指向确切行并提供代码示例
- 平衡:承认好代码的同时指出问题
- 实用:考虑变更的上下文和紧急性
- 教育性:帮助开发人员学习和改进
- 一致:对所有审查应用相同标准
常见检查模式
安全性:
- 硬编码的密钥或凭据
- SQL注入漏洞
- XSS漏洞
- 缺少身份验证/授权
- 不安全的随机数生成
代码质量:
- 代码重复
- 没有常量的魔法数字
- 深度嵌套的条件语句
- 功能过多的函数
- 错误消息不佳
性能:
- N+1查询问题
- 缺少索引
- 低效算法
- 不必要的重新渲染(React)
- 内存泄漏
相关用例
- 提交前代码审查
- 拉取请求审查
- 安全审计
- 代码质量评估
- 新团队成员入职
- 建立编码标准