专题:Claude Code 工作流系统学习
关键词:Claude Code, 代码审查, Code Review, PR, GitHub Actions, 自动化, CLAUDE.md, 审查流程, CI/CD
一、概述
代码审查(Code Review)是软件开发质量保障的核心环节。传统的人工审查方式受限于审查者的时间、精力和经验,难以在大型项目中保持一致性。Claude Code 作为AI驱动的代码审查工具,能够自动化执行从风格检查到架构分析的完整审查流程,显著提升审查效率和质量。
自动化代码审查工作流的核心价值在于:将重复性的检查工作交给AI完成,让人类开发者专注于需要深度判断的业务逻辑和架构决策。通过合理配置审查规则和触发条件,可以实现从代码提交到审查反馈的全链路自动化。
核心收益:审查时间缩短 60-80% | 发现缺陷率提升 3-5 倍 | 审查标准一致性 100% | 人力投入降低 70%
二、审查流程设计
一个完整的自动化审查流程包含三个核心维度:触发条件决定"何时审",审查范围决定"审什么",深度级别决定"怎么审"。
2.1 触发条件
触发条件定义了启动审查的事件类型。Claude Code 支持以下几种常见的触发模式:
- PR创建/更新触发:当开发者创建新的Pull Request或向已有PR推送新提交时自动触发审查。这是最常用的模式,适合在合并前对变更进行全面检查。
- 定时触发:按固定时间间隔(如每天凌晨)扫描指定分支上的未审查代码,适用于持续监控开发分支的质量状态。
- 手动触发:开发者通过Comment命令(如 /review)或CLI手动发起审查,灵活性最高,适合需要按需审查的场景。
- 提交前触发:通过pre-commit钩子在代码提交前执行快速扫描,将问题拦截在本地。
# GitHub Actions 触发条件配置示例
name: Code Review
on:
pull_request: # PR创建和更新时触发
types: [opened, synchronize, reopened]
paths: # 限定审查的文件路径
- 'src/**'
- '!src/generated/**' # 排除自动生成代码
push: # 直接推送main时触发
branches: [main]
paths:
- 'src/**'
workflow_dispatch: # 支持手动触发
schedule: # 每天凌晨2点定时扫描
- cron: '0 2 * * *'
2.2 审查范围
审查范围决定了哪些代码变更需要纳入审查。合理的范围配置可以避免不必要的审查开销,让AI和人力都聚焦在高价值区域。
- 变更范围:仅审查PR中发生变更的文件,而非整个代码库。这是默认行为,效率最高。
- 影响范围:审查变更文件及其直接依赖/被依赖的文件,适合评估变更的连锁影响。
- 模块范围:按模块或功能区域划定审查边界,例如只审查支付模块或用户认证模块的变更。
- 全量范围:审查整个代码库的关键文件,适合定期的架构审计或安全扫描。
# Claude Code 审查范围配置 (claude-review.yml)
review:
scope: changed_files # changed_files | affected_files | module | full
# 当 scope 为 module 时生效
module_paths:
- "src/payment/**"
- "src/auth/**"
# 始终排除的目录
exclude:
- "**/generated/**"
- "**/*.min.js"
- "**/vendor/**"
- "**/*.snap"
# 变更量阈值(行数),超出则升级审查级别
size_thresholds:
warning: 300 # 变更超过300行发出警告
critical: 1000 # 变更超过1000行要求拆分PR
2.3 深度级别
审查深度级别决定了Claude Code对代码的分析程度。根据不同场景选择合适的级别,在效率和质量之间取得平衡。
| 级别 | 名称 | 扫描内容 | 耗时(200行) | 适用场景 |
| L1 | 快速扫描 | 语法错误、格式问题 | <5秒 | pre-commit钩子 |
| L2 | 风格审查 | 代码风格、命名规范 | 10-15秒 | 日常提交 |
| L3 | 逻辑审查 | 逻辑错误、边界条件 | 30-45秒 | 常规PR |
| L4 | 安全审查 | 安全漏洞、注入风险 | 45-60秒 | 安全敏感PR |
| L5 | 架构审查 | 设计模式、模块耦合 | 60-90秒 | 架构变更PR |
# 深度级别配置示例
review:
# 默认深度级别
default_depth: L3
# 根据文件路径自动选择深度
path_rules:
- pattern: "**/security/**"
depth: L4
- pattern: "**/controllers/**"
depth: L3
- pattern: "**/tests/**"
depth: L2
- pattern: "**/*.test.ts"
depth: L2
- pattern: "**/config/**"
depth: L1
# 自动升级条件
auto_escalate:
- condition: "涉及数据库Schema变更"
to: L4
- condition: "涉及公共API接口变更"
to: L4
- condition: "变更文件超过20个"
to: L5
三、审查规则配置
审查规则是自动化代码审查的核心知识库。通过精心设计的规则体系,Claude Code能够理解项目特有的编码规范和架构约束,做出贴合项目上下文的判断。
3.1 CLAUDE.md 规则定义
CLAUDE.md 是Claude Code的项目级指令文件,在其中定义审查规则是最直接有效的方式。规则应覆盖代码风格、命名规范、架构约束、安全性要求等方面。
# .claude/CLAUDE.md — 审查规则定义示例
# 代码审查规则
## 通用规范
- TypeScript 代码必须使用严格模式(strict: true)
- 函数复杂度不得超过15个圈复杂度(cyclomatic complexity)
- 禁止使用 `any` 类型,必须使用 `unknown` 替代
- 所有公共函数必须有 JSDoc 注释
- 异步操作必须使用 async/await,禁止裸 Promise
## 架构约束
- Service 层禁止直接操作数据库,必须通过 Repository 层
- Controller 层禁止包含业务逻辑
- 跨模块引用必须通过接口层,禁止直接 import 内部模块
- 循环依赖(Circular Dependency)必须避免
## 安全规则
- 用户输入必须经过参数化查询或 ORM 框架处理
- 禁止在日志中输出用户敏感信息(密码、Token、身份证号)
- 所有 API endpoint 必须有权限校验
- 文件上传必须校验文件类型和大小
3.2 自定义审查提示模板
针对不同类型的审查任务,可以设计专门的提示(Prompt)模板,引导Claude Code聚焦在特定维度的分析上。模板支持变量注入和条件输出。
# 自定义审查提示模板示例
# templates/security-review.md
你正在对以下代码变更进行**安全审查**。
请重点关注:
## 1. 注入漏洞检查
- SQL/NoSQL 注入:所有数据库查询是否使用了参数化查询?
- 命令注入:是否存在直接拼接系统命令的情况?
- XSS 注入:输出的用户数据是否经过转义?
## 2. 认证与授权
- 新增的 API 端点是否有权限控制?
- Token/API Key 是否硬编码在代码中?
- 会话管理是否存在安全漏洞?
## 3. 敏感数据
- 日志中是否打印了密码、Token、信用卡号?
- 敏感配置是否存储在环境变量中而非代码中?
- 数据传输是否使用了 HTTPS/TLS?
## 变更信息
- 分支: {{ branch }}
- 变更文件: {{ files | join(', ') }}
- 变更行数: {{ changes }}
## 输出格式
对每个发现的问题,请按以下格式输出:
```
[严重程度: HIGH/MEDIUM/LOW] 问题描述
文件: 文件路径:行号
建议: 修复方案
```
3.3 忽略文件与目录配置
合理配置忽略规则可以大幅减少不必要的审查噪声。自动生成的代码、第三方依赖、测试快照等文件不应纳入审查范围。
# .claude-review-ignore — 忽略规则配置
# 语法:使用 .gitignore 风格的 glob 模式
# 自动生成的文件
**/generated/**
**/*.gen.*
**/dist/**
**/build/**
**/output/**
# 第三方依赖
**/node_modules/**
**/vendor/**
**/lib/**
# 静态资源和配置文件
**/*.min.js
**/*.min.css
**/*.map
**/*.snap
**/*.lock
**/*.svg
**/*.png
**/*.jpg
**/*.ico
# 文档和配置文件
**/package-lock.json
**/yarn.lock
**/.env
**/.env.*
**/tsconfig.json
**/*.config.*
最佳实践:将忽略规则存储在版本控制中(如 .claude-review-ignore),确保团队所有成员使用一致的忽略配置。同时支持本地覆盖(.claude-review-ignore.local),方便个别开发者调试。
四、审查类型详解
Claude Code 支持五种主要的审查类型,每种类型聚焦于代码质量的不同维度。在实际项目中,通常按优先级组合使用这些审查类型。
4.1 风格审查(Style Review)
风格审查关注代码的可读性和一致性。虽然ESLint、Prettier等工具可以处理格式化问题,但风格审查能识别更深层的编码习惯问题,如命名语义、注释质量、模块组织等。
# 风格审查 Prompt
review:
style:
enabled: true
rules:
- "变量命名是否清晰表达其用途"
- "函数命名是否符合动词+名词格式"
- "常量是否使用 UPPER_SNAKE_CASE"
- "类名是否使用 PascalCase"
- "私有属性/方法是否以 _ 开头"
- "每行代码是否控制在120字符以内"
- "空行使用是否合理(逻辑块分隔)"
- "注释是否解释"为什么"而非"是什么""
# 检查示例
examples:
bad: "let d = new Date(); // 获取日期"
good: "let currentDate = new Date();"
4.2 逻辑审查(Logic Review)
逻辑审查是最具价值的审查类型之一,能够发现潜在的逻辑错误、边界条件遗漏和竞态条件。
# 逻辑审查关注的典型问题
# [问题1] 空指针/空值检查遗漏
# ❌ 错误代码
fun getUserName(userId: Int): String {
val user = userRepository.findById(userId)
return user.name // 可能抛出 NullPointerException
}
# ✅ 修复代码
fun getUserName(userId: Int): String? {
val user = userRepository.findById(userId)
return user?.name // 安全调用
}
# [问题2] 边界条件遗漏
# ❌ 错误代码
fun calculateDiscount(amount: Double): Double {
return amount * 0.1 // 未处理负数和零的情况
}
# ✅ 修复代码
fun calculateDiscount(amount: Double): Double {
require(amount > 0) { "金额必须大于0" }
if (amount < 100) return 0.0
return amount * 0.1
}
# [问题3] 资源未释放
# ❌ 错误代码
fun readConfig(path: String): String {
val reader = BufferedReader(FileReader(path))
return reader.readLine() // reader 未关闭
}
# ✅ 修复代码
fun readConfig(path: String): String {
BufferedReader(FileReader(path)).use { reader ->
return reader.readLine() // use 自动关闭资源
}
}
4.3 安全审查(Security Review)
安全审查专门检测代码中的安全漏洞。这是自动化审查中权重最高的类型,因为安全漏洞的发现时间越晚,修复成本越高。
# 安全审查检测清单
# [XSS 漏洞] 用户输入直接嵌入HTML
# ❌ 不安全
app.get('/search', (req, res) => {
res.send('<div>搜索结果: ' + req.query.q + '</div>');
});
# ✅ 安全(使用模板引擎自动转义)
app.get('/search', (req, res) => {
res.render('search', { query: req.query.q });
});
# [SQL 注入] 字符串拼接查询
# ❌ 不安全
const sql = `SELECT * FROM users WHERE id = ${userId}`;
# ✅ 安全(参数化查询)
const sql = 'SELECT * FROM users WHERE id = ?';
# [信息泄露] 堆栈信息暴露
# ❌ 不安全
app.use((err, req, res, next) => {
res.status(500).json({ error: err.stack });
});
# ✅ 安全(生产环境隐藏详情)
app.use((err, req, res, next) => {
if (process.env.NODE_ENV === 'production') {
res.status(500).json({ error: '内部服务器错误' });
} else {
res.status(500).json({ error: err.stack });
}
});
4.4 性能审查(Performance Review)
性能审查识别可能引发性能问题的代码模式,包括不必要的计算、内存泄漏、N+1查询、未优化的数据库访问等。
# 性能审查 — 典型优化场景
# [N+1 查询] 循环中频繁查询数据库
# ❌ 低效
const orders = await Order.find({ userId: user.id });
for (const order of orders) {
const items = await OrderItem.find({ orderId: order.id });
// 每个 order 都触发一次数据库查询
}
# ✅ 优化(批量查询)
const orders = await Order.find({ userId: user.id });
const orderIds = orders.map(o => o.id);
const items = await OrderItem.find({ orderId: { $in: orderIds } });
const itemsByOrder = groupBy(items, 'orderId');
# [不必要的数组操作]
# ❌ 低效(多次遍历)
const numbers = [1, 2, 3, ..., 10000];
const evens = numbers.filter(n => n % 2 === 0);
const doubled = evens.map(n => n * 2);
const sum = doubled.reduce((a, b) => a + b, 0);
# ✅ 优化(单次遍历)
const result = numbers.reduce((acc, n) => {
if (n % 2 === 0) acc += n * 2;
return acc;
}, 0);
4.5 架构审查(Architecture Review)
架构审查从更高的抽象层次分析代码变更是否遵循既定的架构原则和设计模式。这是审查深度最高、对AI理解能力要求最强的类型。
# 架构审查检查项
# [依赖方向] 检查依赖是否违反分层架构
review:
architecture:
layer_rules:
- layer: "controller"
allowed_dependencies: ["service"]
denied_dependencies: ["repository", "database"]
- layer: "service"
allowed_dependencies: ["repository", "external"]
denied_dependencies: ["controller"]
- layer: "repository"
allowed_dependencies: ["database"]
denied_dependencies: ["controller", "service"]
# [模块耦合] 检测模块间的不当耦合
module_coupling:
max_coupling_score: 20
disallowed_cross_refs:
- from: "payment"
to: "notification"
reason: "支付模块不应直接依赖通知模块"
# [设计模式一致性]
pattern_enforcement:
- pattern: "Repository"
enforce: "所有数据访问必须通过Repository接口"
- pattern: "Singleton"
enforce: "所有服务类应为单例,禁止状态字段"
审查类型选择策略:并非每次审查都需要执行全部五种类型。推荐的做法是:日常PR执行L3级别(风格+逻辑),安全相关PR自动升级到L4(+安全),涉及架构变更的PR执行L5(全部类型)。
五、PR自动审查集成
将Claude Code与主流CI/CD平台集成,是实现PR自动审查的关键环节。以下是三种主要平台的集成方案。
5.1 GitHub Actions 集成
GitHub Actions 提供了最灵活的集成方式。通过官方 claude-code-action 或自定义 Action,可以在PR事件触发时自动运行审查。
# .github/workflows/code-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
paths-ignore:
- 'docs/**'
- '*.md'
permissions:
contents: read
pull-requests: write
checks: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run Claude Code Review
uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
review_depth: L3
review_types: style,logic,security
auto_approve: false
comment_on_issue: true
- name: Upload Review Report
if: always()
uses: actions/upload-artifact@v4
with:
name: review-report
path: review-report.md
# 进阶:多Job并行审查
jobs:
quick-scan:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
review_depth: L1
review_types: style
comment_tag: quick-scan
deep-analysis:
needs: quick-scan
if: github.event.pull_request.changed_files < 20
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
review_depth: L4
review_types: logic,security,performance
comment_tag: deep-analysis
architecture-review:
needs: deep-analysis
if: contains(github.event.pull_request.labels.*.name, 'arch-review')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
review_depth: L5
review_types: architecture
comment_tag: arch-review
5.2 GitLab CI 集成
GitLab CI 通过自定义Job实现审查集成。利用GitLab的CI/CD变量和API接口,可以无缝集成Claude Code。
# .gitlab-ci.yml
variables:
CLAUDE_REVIEW_DEPTH: "L3"
CLAUDE_REVIEW_TYPES: "style,logic,security"
claude-code-review:
stage: review
image: node:20-alpine
only:
- merge_requests
script:
- npm install -g @anthropic-ai/claude-code
- claude-code review \
--depth $CLAUDE_REVIEW_DEPTH \
--types $CLAUDE_REVIEW_TYPES \
--gitlab-token $GITLAB_API_TOKEN \
--mr-id $CI_MERGE_REQUEST_IID \
--project-id $CI_PROJECT_ID
artifacts:
paths:
- review-report.md
expire_in: 30 days
environment:
name: review/$CI_MERGE_REQUEST_IID
5.3 Azure DevOps 集成
Azure DevOps 通过 Pipeline 任务和 Pull Request 评论API实现审查集成。
# azure-pipelines.yml
trigger: none
pr:
branches:
include:
- main
- develop
paths:
exclude:
- docs/*
pool:
vmImage: ubuntu-latest
steps:
- task: NodeTool@0
inputs:
versionSpec: '20'
- script: |
npm install -g @anthropic-ai/claude-code
claude-code review \
--depth $(REVIEW_DEPTH) \
--types $(REVIEW_TYPES) \
--azure-token $(AZURE_DEVOPS_TOKEN) \
--pr-id $(System.PullRequest.PullRequestId) \
--repo-id $(Build.Repository.ID)
displayName: 'Run Claude Code Review'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: review-report.md
artifactName: ReviewReport
安全建议:将 ANTHROPIC_API_KEY 等敏感信息存储在CI/CD平台的 Secrets 或 Variables 中,切勿硬编码在配置文件中。同时建议为Claude Code审查使用独立的API Key,并设置合理的用量上限。
六、审查结果处理
审查结果的处理方式直接影响开发者的体验和审查流程的落地效果。Claude Code 提供了多种结果输出和交互方式。
6.1 自动评论
审查结果以PR评论的形式呈现,支持行内评论(Inline Comment)和概要评论两种格式。
# 审查评论输出示例
## Claude Code 审查报告
### 概览
- **审查级别**: L3 (逻辑 + 安全)
- **审查文件**: 8 个文件,共 245 行变更
- **发现问题**: 4 个(HIGH: 1, MEDIUM: 2, LOW: 1)
---
### HIGH: SQL注入风险
src/repository/user-repository.ts:45
```typescript
// ❌ 发现:使用字符串拼接构建SQL查询
const sql = `SELECT * FROM users WHERE id = ${userId}`;
```
**影响**: 攻击者可构造恶意 userId 参数执行任意SQL命令
**建议**: 使用参数化查询
```typescript
// ✅ 修复方案
const sql = 'SELECT * FROM users WHERE id = ?';
```
### MEDIUM: 未处理的 Promise 拒绝
src/services/email-service.ts:78
```typescript
// ❌ 发现:未添加 catch 处理
sendEmail(user.email, template);
```
**建议**: 添加错误处理和日志记录
```typescript
// ✅ 修复方案
sendEmail(user.email, template).catch(err => {
logger.error('邮件发送失败', { userId: user.id, error: err });
});
```
### 审批建议: ⚠️ 不通过(存在安全漏洞,修复后重新审查)
6.2 修复建议与自动修复
Claude Code 不仅可以发现代码问题,还能直接生成修复方案。在适当配置下,甚至可以自动创建修复Commit或Suggest Change。
# 自动修复配置
review:
auto_fix:
enabled: true
# 仅对 LOW 和 MEDIUM 级别的问题自动修复
max_severity: MEDIUM
# 自动创建的PR标签
fix_branch_prefix: "claude-fix/"
# 自动修复的策略
strategy: commit # commit | suggest | comment_only
# 不对以下类型进行自动修复
exclude_rules:
- "架构相关"
- "需要人工决策的逻辑变更"
# 自动修复示例输出
claude-fix/fix-sql-injection-user-repository:
- 修复 src/repository/user-repository.ts:45 SQL注入问题
- 修复 src/services/email-service.ts:78 未处理的Promise拒绝
- 修复 src/utils/validator.ts:102 缺少输入校验
6.3 审批决策
根据审查结果,Claude Code 可以给出审批建议或自动执行审批。审批策略需要谨慎配置,避免漏过关键问题。
# 审批策略配置
review:
approval:
# 自动审批条件(全部满足时)
auto_approve:
enabled: false # 建议关闭自动审批,由人工最终确认
conditions:
- "未发现 HIGH 级别问题"
- "MEDIUM 级别问题不超过3个"
- "所有问题都已被处理(修复或确认)"
# 自动拒绝条件(任一满足时)
auto_reject:
enabled: true
conditions:
- "发现 HIGH 级别安全问题"
- "架构违规超过2处"
- "测试覆盖率下降超过5%"
# 条件审批(标记需要特定人员复审)
conditional_approve:
conditions:
- type: "security"
label: "需安全团队复审"
- type: "architecture"
label: "需架构师复审"
- type: "database"
label: "需DBA复审"
6.4 报告生成
审查报告可以按多种格式导出,用于统计分析和合规存档。
# 审查报告生成配置
review:
reporting:
formats:
- markdown # PR评论格式
- json # 机器可读格式,用于后续分析
- html # 可视化报告
# JSON 格式输出示例
output_example:
{
"review_id": "rev_abc123",
"timestamp": "2026-05-08T10:30:00Z",
"repository": "user-service",
"pr_number": 142,
"summary": {
"total_issues": 4,
"by_severity": { "HIGH": 1, "MEDIUM": 2, "LOW": 1 },
"by_type": { "security": 1, "logic": 2, "style": 1 }
},
"issues": [
{
"severity": "HIGH",
"type": "security",
"file": "src/repository/user-repository.ts",
"line": 45,
"description": "SQL注入风险",
"suggestion": "使用参数化查询替代字符串拼接",
"auto_fixable": true
}
],
"approval": {
"status": "rejected",
"reason": "存在HIGH级别安全漏洞"
}
}
# 趋势分析集成
trend_analysis:
enabled: true
storage: "database" # 将审查数据存入数据库
dashboard: "grafana" # 在Grafana中展示质量趋势
七、多级审查策略
不同类型的变更需要不同级别的审查。多级审查策略确保低风险变更快速通过,高风险变更得到充分检查。
7.1 快速扫描(L1-L2)
适用于:修复拼写错误、更新注释、修改文档、重构局部变量命名等微小变更。
# 快速扫描配置
quick-scan:
depth: L2
checks:
- code_style
- naming_convention
- comment_quality
output: summary_only
approval: auto_approve
threshold:
max_files: 3
max_lines: 50
7.2 深度分析(L3-L4)
适用于:新增功能、修改业务逻辑、修复Bug、重构中等规模代码。
# 深度分析配置
deep-analysis:
depth: L4
checks:
- code_style
- logic_correctness
- error_handling
- security
- performance
output: detailed
approval: conditional
rules:
- "审查所有新增函数的错误处理路径"
- "检查所有外部输入的数据验证"
- "分析变更对现有测试的影响"
- "评估性能影响(特别是热点路径)"
7.3 全面审查(L5)
适用于:架构重构、引入新技术栈、修改基础设施代码、跨模块重大变更。
# 全面审查配置
full-review:
depth: L5
checks:
- code_style
- logic_correctness
- security
- performance
- architecture
- backward_compatibility
- test_coverage
- documentation
output: comprehensive
approval: manual_only
additional_steps:
- "生成架构影响分析报告"
- "分析公共API兼容性"
- "评估数据库迁移方案"
- "审查监控和告警配置"
- "检查配置变更的灰度策略"
7.4 策略选择矩阵
根据变更的风险等级和影响范围,自动选择最合适的审查策略。
| 变更类型 | 风险等级 | 推荐策略 | 审批方式 |
| 注释/文档修改 | 极低 | 快速扫描 L1 | 自动通过 |
| 变量重命名 | 低 | 快速扫描 L2 | 自动通过 |
| 新增单元测试 | 低 | 深度分析 L3 | 自动/条件通过 |
| Bug修复 | 中 | 深度分析 L3 | 条件通过 |
| 新增功能 | 中高 | 深度分析 L4 | 条件通过 |
| 数据模型变更 | 高 | 全面审查 L5 | 人工审批 |
| 架构重构 | 极高 | 全面审查 L5 | 人工审批+团队复审 |
| 安全补丁 | 极高 | 全面审查 L5 | 安全团队审批 |
# 自动策略选择器
strategy_selector:
# 根据变更统计自动选择策略
rules:
- match:
changed_files: "<= 3"
changed_lines: "<= 50"
has_new_features: false
strategy: "quick-scan"
- match:
changed_files: "<= 20"
changed_lines: "<= 500"
has_security_changes: false
has_schema_changes: false
strategy: "deep-analysis"
- match:
has_security_changes: true
OR has_schema_changes: true
OR changed_lines: "> 500"
strategy: "full-review"
# 默认策略
- match: {}
strategy: "deep-analysis"
策略设计原则:多级审查的核心原则是"风险匹配"——审查力度与变更风险成正比。低风险变更走快速通道提升效率,高风险变更走完整流程保证质量。同时应支持策略的手动覆盖,让开发者可以根据实际情况灵活调整。
八、最佳实践与常见问题
8.1 渐进式部署策略
建议分三个阶段逐步引入自动化代码审查:
- 第一阶段(观察期):仅开启风格审查和逻辑审查,审查结果以Comment形式呈现,不做审批决策。让团队适应AI审查的存在,收集反馈并优化规则。
- 第二阶段(辅助期):开启安全审查和性能审查,引入条件审批建议。CI流程中审查结果作为参考而非阻塞条件。
- 第三阶段(自动化期):开启全部审查类型,配置自动审批规则。关键路径上的PR必须通过AI审查才能合并。
8.2 审查规则迭代
审查规则不是一成不变的,需要根据项目演化和团队反馈持续优化:
- 每月回顾审查结果的准确率和误报率
- 根据新的团队约定更新CLAUDE.md中的规则
- 将频繁出现的问题类型加入审查模板
- 建立审查结果的知识库,用于规则优化
8.3 常见问题解决
# 问题1:审查结果误报过多
解决方案:
1. 检查 CLAUDE.md 中的规则是否过于宽泛
2. 使用 .claude-review-ignore 排除非关键文件
3. 降低审查深度级别(从L4降到L3)
4. 添加具体的排除模式
# 问题2:审查耗时过长
解决方案:
1. 缩小审查范围(改为 changed_files 模式)
2. 增加变更行数阈值,小PR快速通过
3. 使用多级策略,高频变更走快速扫描
4. 排除测试文件和配置文件
# 问题3:开发者对抗审查流程
解决方案:
1. 展示审查发现的实际Bug案例,建立信任
2. 允许开发者覆盖审查建议(但记录在案)
3. 将审查结果纳入Code Health评分
4. 定期举办审查规则讨论会
"自动化代码审查不是为了取代人类的判断,而是让机器处理它擅长的模式识别和一致性检查,让开发者专注于架构设计、业务逻辑和创新思考。好的审查流程应当是一个协作系统——AI负责广度,人类负责深度。"
九、核心要点总结
- 流程四要素:自动化审查工作流由触发条件、审查范围、深度级别和结果处理四个核心要素组成,合理配置这四要素是在效率和质量之间取得平衡的关键。
- 规则即代码:审查规则应当像项目代码一样进行版本管理(存储在CLAUDE.md中),随着项目演进而持续迭代优化。
- 五种审查类型:风格审查、逻辑审查、安全审查、性能审查、架构审查,五种类型覆盖了代码质量的完整维度。
- CI/CD集成:通过GitHub Actions、GitLab CI、Azure DevOps等平台可以无缝集成Claude Code审查流程。
- 结果驱动反馈:审查结果通过自动评论、修复建议、审批决策、报告生成四种方式反馈给开发者,形成闭环。
- 风险匹配原则:多级审查策略的核心是审查力度与变更风险成正比,低风险走快速通道,高风险走完整流程。
- 渐进式部署:推荐观察期→辅助期→自动化期的三阶段部署策略,让团队逐步适应AI审查流程。