# 代码审查标准

## 目的

代码审查确保代码合并前的质量、安全性和可维护性。此规则定义何时以及如何进行代码审查。

## 何时审查

**强制审查触发条件：**

- 编写或修改代码后
- 提交到共享分支之前
- 更改安全敏感代码时（认证、支付、用户数据）
- 进行架构更改时
- 合并 pull request 之前

**审查前要求：**

在请求审查之前，确保：

- 所有自动化检查（CI/CD）已通过
- 合并冲突已解决
- 分支已与目标分支同步

## 审查检查清单

在标记代码完成之前：

- [ ] 代码可读且命名良好
- [ ] 函数聚焦（<50 行）
- [ ] 文件内聚（<800 行）
- [ ] 无深层嵌套（>4 层）
- [ ] 错误显式处理
- [ ] 无硬编码密钥或凭据
- [ ] 无 console.log 或调试语句
- [ ] 新功能有测试
- [ ] 测试覆盖率满足 80% 最低要求

## 安全审查触发条件

**停止并使用 security-reviewer 代理当：**

- 认证或授权代码
- 用户输入处理
- 数据库查询
- 文件系统操作
- 外部 API 调用
- 加密操作
- 支付或金融代码

## 审查严重级别

| 级别 | 含义 | 行动 |
|-------|---------|--------|
| CRITICAL（关键） | 安全漏洞或数据丢失风险 | **阻止** - 合并前必须修复 |
| HIGH（高） | Bug 或重大质量问题 | **警告** - 合并前应修复 |
| MEDIUM（中） | 可维护性问题 | **信息** - 考虑修复 |
| LOW（低） | 风格或次要建议 | **注意** - 可选 |

## 代理使用

使用这些代理进行代码审查：

| 代理 | 用途 |
|-------|--------|
| **code-reviewer** | 通用代码质量、模式、最佳实践 |
| **security-reviewer** | 安全漏洞、OWASP Top 10 |
| **typescript-reviewer** | TypeScript/JavaScript 特定问题 |
| **python-reviewer** | Python 特定问题 |
| **go-reviewer** | Go 特定问题 |
| **rust-reviewer** | Rust 特定问题 |

## 审查工作流

```
1. 运行 git diff 了解更改
2. 先检查安全检查清单
3. 审查代码质量检查清单
4. 运行相关测试
5. 验证覆盖率 >= 80%
6. 使用适当的代理进行详细审查
```

## 常见问题捕获

### 安全

- 硬编码凭据（API 密钥、密码、令牌）
- SQL 注入（查询中的字符串拼接）
- XSS 漏洞（未转义的用户输入）
- 路径遍历（未净化的文件路径）
- CSRF 保护缺失
- 认证绕过

### 代码质量

- 大函数（>50 行）- 拆分为更小的
- 大文件（>800 行）- 提取模块
- 深层嵌套（>4 层）- 使用提前返回
- 缺少错误处理 - 显式处理
- 变更模式 - 优先使用不可变操作
- 缺少测试 - 添加测试覆盖

### 性能

- N+1 查询 - 使用 JOIN 或批处理
- 缺少分页 - 给查询添加 LIMIT
- 无界查询 - 添加约束
- 缺少缓存 - 缓存昂贵操作

## 批准标准

- **批准**：无关键或高优先级问题
- **警告**：仅有高优先级问题（谨慎合并）
- **阻止**：发现关键问题

## 与其他规则的集成

此规则与以下规则配合：

- [testing.md](testing.md) - 测试覆盖率要求
- [security.md](security.md) - 安全检查清单
- [git-workflow.md](git-workflow.md) - 提交标准
- [agents.md](agents.md) - 代理委托
