# 代码审查标准 ## 目的 代码审查确保代码合并前的质量、安全性和可维护性。此规则定义何时以及如何进行代码审查。 ## 何时审查 **强制审查触发条件:** - 编写或修改代码后 - 提交到共享分支之前 - 更改安全敏感代码时(认证、支付、用户数据) - 进行架构更改时 - 合并 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) - 代理委托