coderabbit-reference-architecture
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCodeRabbit Reference Architecture
CodeRabbit参考架构
Overview
概述
Configure CodeRabbit AI code review for team workflows. Covers repository configuration, custom review instructions, path-based rules, and integration with CI pipelines for automated review enforcement.
为团队工作流配置CodeRabbit AI代码审查。内容涵盖仓库配置、自定义审查指令、基于路径的规则,以及与CI流水线集成以实现自动化审查强制执行。
Prerequisites
前提条件
- CodeRabbit GitHub/GitLab app installed
- Repository admin access for configuration
- Understanding of team coding standards
- CI pipeline for review status checks
- 已安装CodeRabbit GitHub/GitLab应用
- 拥有仓库管理员权限以进行配置
- 了解团队编码标准
- 具备用于审查状态检查的CI流水线
Architecture Diagram
架构图
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Developer │────▶│ Pull │────▶│ CodeRabbit │
│ Push/PR │ │ Request │ │ AI Review │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌────────────────────────────┤
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Line-level │ │ Summary │
│ Comments │ │ Review │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Developer │ │ CI Status │
│ Response │ │ Check │
└──────────────┘ └──────────────┘┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Developer │────▶│ Pull │────▶│ CodeRabbit │
│ Push/PR │ │ Request │ │ AI Review │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌────────────────────────────┤
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Line-level │ │ Summary │
│ Comments │ │ Review │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Developer │ │ CI Status │
│ Response │ │ Check │
└──────────────┘ └──────────────┘Instructions
操作步骤
Step 1: Create Repository Configuration
步骤1:创建仓库配置
yaml
undefinedyaml
undefined.coderabbit.yaml - Root configuration
.coderabbit.yaml - Root configuration
language: "en-US"
early_access: false
reviews:
profile: "assertive" # Options: chill, assertive, proactive
request_changes_workflow: true
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: false
path_instructions:
- path: "src/api/"
instructions: |
Review for REST API best practices:
- Validate all inputs with zod schemas
- Return proper HTTP status codes
- Include error response bodies per RFC 7807 # 7807 = configured value
- Check for SQL injection in query parameters
- path: "src/components/"
instructions: |
Review React components for:
- Proper use of hooks (no conditional hooks)
- Memoization where appropriate
- Accessibility (aria labels, keyboard navigation)
- Component size (flag if >200 lines) # HTTP 200 OK
- path: "**/.test."
instructions: |
Review tests for:
- Meaningful test descriptions
- Edge cases covered
- No implementation details tested
- Proper async handling
auto_review:
enabled: true
drafts: false
base_branches:
- "main"
- "develop"
ignore_title_keywords:
- "WIP"
- "DO NOT MERGE"
chat:
auto_reply: true
undefinedlanguage: "en-US"
early_access: false
reviews:
profile: "assertive" # Options: chill, assertive, proactive
request_changes_workflow: true
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: false
path_instructions:
- path: "src/api/"
instructions: |
Review for REST API best practices:
- Validate all inputs with zod schemas
- Return proper HTTP status codes
- Include error response bodies per RFC 7807 # 7807 = configured value
- Check for SQL injection in query parameters
- path: "src/components/"
instructions: |
Review React components for:
- Proper use of hooks (no conditional hooks)
- Memoization where appropriate
- Accessibility (aria labels, keyboard navigation)
- Component size (flag if >200 lines) # HTTP 200 OK
- path: "**/.test."
instructions: |
Review tests for:
- Meaningful test descriptions
- Edge cases covered
- No implementation details tested
- Proper async handling
auto_review:
enabled: true
drafts: false
base_branches:
- "main"
- "develop"
ignore_title_keywords:
- "WIP"
- "DO NOT MERGE"
chat:
auto_reply: true
undefinedStep 2: Configure Path-Based Review Rules
步骤2:配置基于路径的审查规则
yaml
undefinedyaml
undefined.coderabbit.yaml continued
.coderabbit.yaml continued
reviews:
path_filters:
# Skip auto-generated files
- "!/*.generated.ts"
- "!/generated/"
- "!package-lock.json"
- "!pnpm-lock.yaml"
- "!/*.min.js"
- "!dist/**"
# Always review security-sensitive paths
- "+src/auth/**"
- "+src/middleware/**"
- "+**/migrations/**"tools:
eslint:
enabled: true
biome:
enabled: true
shellcheck:
enabled: true
markdownlint:
enabled: true
undefinedreviews:
path_filters:
# Skip auto-generated files
- "!/*.generated.ts"
- "!/generated/"
- "!package-lock.json"
- "!pnpm-lock.yaml"
- "!/*.min.js"
- "!dist/**"
# Always review security-sensitive paths
- "+src/auth/**"
- "+src/middleware/**"
- "+**/migrations/**"tools:
eslint:
enabled: true
biome:
enabled: true
shellcheck:
enabled: true
markdownlint:
enabled: true
undefinedStep 3: Custom Review Instructions for Team Standards
步骤3:为团队标准自定义审查指令
yaml
undefinedyaml
undefined.coderabbit.yaml - Team-specific instructions
.coderabbit.yaml - Team-specific instructions
reviews:
path_instructions:
- path: "**"
instructions: |
Team coding standards:
1. All exported functions must have JSDoc comments
2. Use named exports, never default exports
3. Prefer const assertions for literal types
4. Error handling: never catch and ignore silently
5. Logging: use structured logger, never console.log in production
- path: "src/db/**"
instructions: |
Database layer rules:
- All queries must use parameterized statements
- Include index hints for complex queries
- Transactions required for multi-table mutations
- Migration files must be reversible
- path: ".github/workflows/**"
instructions: |
CI/CD pipeline rules:
- Pin all action versions to SHA, not tags
- Never use secrets in step names or logs
- Include timeout-minutes on all jobs
- Use OIDC for cloud provider authundefinedreviews:
path_instructions:
- path: "**"
instructions: |
Team coding standards:
1. All exported functions must have JSDoc comments
2. Use named exports, never default exports
3. Prefer const assertions for literal types
4. Error handling: never catch and ignore silently
5. Logging: use structured logger, never console.log in production
- path: "src/db/**"
instructions: |
Database layer rules:
- All queries must use parameterized statements
- Include index hints for complex queries
- Transactions required for multi-table mutations
- Migration files must be reversible
- path: ".github/workflows/**"
instructions: |
CI/CD pipeline rules:
- Pin all action versions to SHA, not tags
- Never use secrets in step names or logs
- Include timeout-minutes on all jobs
- Use OIDC for cloud provider authundefinedStep 4: Integrate with CI Pipeline
步骤4:与CI流水线集成
yaml
undefinedyaml
undefined.github/workflows/pr-checks.yml
.github/workflows/pr-checks.yml
name: PR Checks
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
wait-for-coderabbit:
runs-on: ubuntu-latest
steps:
- name: Wait for CodeRabbit review
uses: actions/github-script@v7
with:
script: |
// Check if CodeRabbit has reviewed
const reviews = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
const coderabbitReview = reviews.data.find(
r => r.user.login === 'coderabbitai[bot]'
);
if (!coderabbitReview) {
core.info('Waiting for CodeRabbit review...');
}undefinedname: PR Checks
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
wait-for-coderabbit:
runs-on: ubuntu-latest
steps:
- name: Wait for CodeRabbit review
uses: actions/github-script@v7
with:
script: |
// Check if CodeRabbit has reviewed
const reviews = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
const coderabbitReview = reviews.data.find(
r => r.user.login === 'coderabbitai[bot]'
);
if (!coderabbitReview) {
core.info('Waiting for CodeRabbit review...');
}undefinedError Handling
错误处理
| Issue | Cause | Solution |
|---|---|---|
| Review not triggered | PR to non-configured branch | Add branch to |
| Too many comments | Profile too aggressive | Switch to |
| Ignoring config changes | YAML syntax error | Validate YAML before committing |
| Reviewing generated files | Missing path filter | Add |
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 未触发审查 | 拉取请求提交至未配置的分支 | 将分支添加至 |
| 评论过多 | 审查配置文件过于激进 | 切换为 |
| 忽略配置变更 | YAML语法错误 | 提交前验证YAML语法 |
| 审查了自动生成的文件 | 缺少路径过滤规则 | 添加 |
Examples
示例
Minimal Configuration
最简配置
yaml
undefinedyaml
undefined.coderabbit.yaml - Quick start
.coderabbit.yaml - Quick start
reviews:
profile: "assertive"
auto_review:
enabled: true
drafts: false
undefinedreviews:
profile: "assertive"
auto_review:
enabled: true
drafts: false
undefinedResources
参考资源
Output
输出结果
- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale
- 已应用到项目中的配置文件或代码变更
- 确认正确实现的验证报告
- 变更内容及其依据的总结