零度AI
高级15 分钟阅读

Claude Code 代码审查实战

使用 Claude Code 进行高效代码审查,发现 Bug 和安全问题,提高代码质量

Claude Code代码审查Code Review质量保证最佳实践

代码审查概述

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
   // 建议:添加空值检查
  1. 异步错误未捕获 (行 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 }
  1. 重复计算 (行 56)

    typescript
    const result = items.filter(...).map(...).reduce(...);
    // 建议:合并为单次遍历
  2. 大对象拷贝 (行 89)

    typescript
    const copy = { ...largeObject };
    // 建议:考虑使用只读引用
### 3. 安全问题 ```bash # 安全审查 claude --review --focus=security src/auth/login.ts # 输出示例 ## 安全审查 ### 发现的问题 1. **SQL 注入风险** (行 34) ```typescript const query = `SELECT * FROM users WHERE name = '${name}'`; // 严重:高危!使用参数化查询
  1. 密码明文存储 (行 56)

    typescript
    const user = { password: plainText };
    // 严重:必须使用哈希
  2. 敏感信息日志 (行 78)

    typescript
    logger.info(`Login attempt: ${password}`);
    // 高危:禁止记录密码
  3. CORS 配置过宽 (行 90)

    typescript
    app.use(cors({ origin: '*' }));
    // 中危:限制允许的域名
### 4. 代码风格 ```bash # 风格审查 claude --review --focus=style src/utils/ # 输出示例 ## 代码风格审查 ### 发现的问题 1. **命名不规范** (行 12) ```typescript function calc(x, y, z) { } // 建议:使用有意义的名称
  1. 缺少文档注释 (行 45)

    typescript
    async function processData() { }
    // 建议:添加 JSDoc 注释
  2. 魔法数字 (行 67)

    typescript
    if (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 代码审查要点:

  1. 多维度审查:功能、性能、安全、风格
  2. 自动化流程:集成到 CI/CD
  3. 团队协作:统一的审查标准和规则
  4. 持续改进:跟踪问题,优化规则

合理的代码审查是保障代码质量的重要环节。