代码审查概述
Claude Code 可以帮助进行高效的代码审查,发现潜在问题并提供改进建议。
审查范围
功能正确性、代码质量、性能问题、安全风险、可维护性。
基础审查流程
快速审查
bash
# 审查单个文件
claude --review src/utils/helper.ts
# 审查改动的文件
claude --review --diff HEAD~1
# 审查 PR
claude --review --pr=https://github.com/user/repo/pull/123审查配置
json
// .claude/review-config.json
{
"review": {
"focus": ["security", "performance", "best-practices"],
"exclude": ["test files", "generated code"],
"rules": {
"maxComplexity": 10,
"maxLineLength": 120,
"requireDocumentation": true
}
}
}审查维度
1. 功能正确性
bash
# 提示词示例
claude --review --focus=correctness src/api/user.ts
# 输出示例
## 功能正确性审查
### 发现的问题
1. **边界条件未处理** (行 45)
```typescript
const user = users.find(u => u.id === id);
// 问题:如果 id 不存在,user 为 undefined
// 建议:添加空值检查- 异步错误未捕获 (行 78)
typescript
async function fetchData() { const data = await api.getData(); // 问题:缺少 try-catch }
### 2. 性能问题
```bash
# 性能审查
claude --review --focus=performance src/services/query.ts
# 输出示例
## 性能审查
### 发现的问题
1. **N+1 查询问题** (行 23)
```typescript
for (const user of users) {
const posts = await db.getPosts(user.id);
// 问题:循环内查询,应使用 JOIN
}
-
重复计算 (行 56)
typescriptconst result = items.filter(...).map(...).reduce(...); // 建议:合并为单次遍历 -
大对象拷贝 (行 89)
typescriptconst copy = { ...largeObject }; // 建议:考虑使用只读引用
### 3. 安全问题
```bash
# 安全审查
claude --review --focus=security src/auth/login.ts
# 输出示例
## 安全审查
### 发现的问题
1. **SQL 注入风险** (行 34)
```typescript
const query = `SELECT * FROM users WHERE name = '${name}'`;
// 严重:高危!使用参数化查询
-
密码明文存储 (行 56)
typescriptconst user = { password: plainText }; // 严重:必须使用哈希 -
敏感信息日志 (行 78)
typescriptlogger.info(`Login attempt: ${password}`); // 高危:禁止记录密码 -
CORS 配置过宽 (行 90)
typescriptapp.use(cors({ origin: '*' })); // 中危:限制允许的域名
### 4. 代码风格
```bash
# 风格审查
claude --review --focus=style src/utils/
# 输出示例
## 代码风格审查
### 发现的问题
1. **命名不规范** (行 12)
```typescript
function calc(x, y, z) { } // 建议:使用有意义的名称
-
缺少文档注释 (行 45)
typescriptasync function processData() { } // 建议:添加 JSDoc 注释 -
魔法数字 (行 67)
typescriptif (status === 1) { } // 建议:使用枚举或常量
## PR 审查
### 自动审查 PR
```bash
# 审查 PR
claude --review --pr=https://github.com/user/repo/pull/123
# 审查 PR 并添加评论
claude --review --pr=https://github.com/user/repo/pull/123 --post-comment
# 只审查特定文件
claude --review --pr=https://github.com/user/repo/pull/123 --files=src/api/*.ts
PR 审查报告
markdown
## PR #123 审查报告
### 概述
- 文件改动:12 个
- 新增代码:456 行
- 删除代码:123 行
- **总体评价**:需要修改后再合并
### 必须修复的问题
1. **[安全] SQL 注入漏洞** (src/api/user.ts:45)
- 使用参数化查询替代字符串拼接
2. **[功能] 空值未检查** (src/services/auth.ts:78)
- 添加用户不存在时的错误处理
### 建议改进
3. **[性能] N+1 查询** (src/services/post.ts:23)
- 使用批量查询替代循环查询
4. **[风格] 缺少文档** (src/utils/helper.ts:1)
- 添加模块级 JSDoc 注释
### 通过的检查
✅ 错误处理
✅ 测试覆盖
✅ 类型定义
✅ 命名规范团队审查配置
审查规则
javascript
// .claude/review-rules.js
export default {
// 严重程度分级
severity: {
blocking: ["security", "correctness"],
warning: ["performance", "maintainability"],
suggestion: ["style", "readability"],
},
// 审查范围
scope: {
checkSecurity: true,
checkPerformance: true,
checkBestPractices: true,
checkStyle: true,
},
// 忽略规则
ignore: {
paths: ["**/*.test.ts", "**/node_modules/**"],
patterns: ["TODO:", "FIXME:"],
},
// 自动修复
autoFix: {
style: true,
imports: true,
types: false, // 需人工确认
},
};CI 集成
yaml
# .github/workflows/review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run AI Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude --review \
--diff \
--format=github-comment \
--severity=blocking,warning \
> review_result.md
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const result = fs.readFileSync('review_result.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: result
});最佳实践
1. 审查检查清单
代码审查检查清单:
功能:
□ 逻辑正确
□ 边界条件处理
□ 错误处理
□ 测试覆盖
性能:
□ 无 N+1 查询
□ 适当缓存
□ 无重复计算
安全:
□ 无注入风险
□ 敏感数据保护
□ 权限检查
风格:
□ 命名清晰
□ 代码格式化
□ 有适当注释
2. 审查对话模板
bash
# 标准审查
claude --review src/utils/helper.ts
# 高管问题审查
claude --review --focus=critical src/
# 快速检查
claude --review --quick src/api/
# 详细审查
claude --review --detailed src/services/3. 修复验证
bash
# 审查修复
claude --review --diff HEAD
# 验证修复
claude --verify --fix=security src/api/user.ts
# 重新审查
claude --review src/api/user.ts审查收益
通过 Claude Code 辅助代码审查,可以提高代码质量,减少 Bug,提升团队效率。
总结
Claude Code 代码审查要点:
- 多维度审查:功能、性能、安全、风格
- 自动化流程:集成到 CI/CD
- 团队协作:统一的审查标准和规则
- 持续改进:跟踪问题,优化规则
合理的代码审查是保障代码质量的重要环节。