SOP:审查发布
代码变更完成后,通过 AI 辅助审查 + 人工关键审查 + 安全扫描,确保安全发布。
适用场景
- PR 审查(自己的或他人的代码变更)
- 发布前检查
- 安全审查
前置条件
- 代码变更已完成并提交
- 有测试通过
- 有变更摘要(或让 AI 生成)
流程步骤
步骤 1:AI 辅助审查
让 Claude 做第一轮审查——它能快速扫描大量变更,找出你可能遗漏的问题:
审查当前分支相对于 main 的所有变更。按以下维度分析:
1. **逻辑正确性**:是否有逻辑错误、边界遗漏、类型不匹配?
2. **安全隐患**:是否有注入、泄露、未授权访问、不安全的加密?
3. **性能风险**:是否有 N+1 查询、内存泄漏、不必要的同步操作?
4. **架构一致性**:是否符合项目的架构约定?是否引入了不必要的复杂度?
5. **测试覆盖**:关键逻辑是否有对应测试?
按严重程度分类:🔴 严重 / 🟡 中等 / 🟢 低风险
输出格式:Markdown 表格审查维度速查表:
| 维度 | 检查什么 | 严重程度定义 |
|---|---|---|
| 逻辑 | 条件判断、边界值、null 处理、类型安全 | 🔴 会导致运行时错误 |
| 安全 | 输入验证、SQL 注入、XSS、CSRF、认证逻辑 | 🔴 所有安全问题都是严重 |
| 性能 | 数据库查询效率、缓存使用、异步操作 | 🟡 可能导致性能退化 |
| 架构 | 模块边界、接口设计、抽象层级 | 🟡 影响可维护性 |
| 测试 | 覆盖率、边界测试、回归测试 | 🟡 影响可靠性 |
步骤 2:人工关键审查
AI 审查后,你做第二轮审查——聚焦 AI 不擅长判断的维度:
AI 不擅长判断、你必须自己审查的:
| 维度 | 为什么 AI 不擅长 | 你需要审查什么 |
|---|---|---|
| 业务逻辑 | AI 不知道业务规则 | 变更是否满足业务需求 |
| 用户体验 | AI 不了解 UX 设计意图 | 变更是否影响用户体验 |
| 团队决策 | AI 不了解团队偏好 | 变更是否与团队约定一致 |
| 兼容性 | AI 不了解所有下游依赖 | 变更是否破坏现有客户端 |
| 运维影响 | AI 不了解部署环境 | 变更是否影响运维(如新增配置项) |
人工审查 checklist:
markdown
## PR 审查 Checklist
### 必须通过
- [ ] 变更与 PR 描述一致
- [ ] 测试全部通过
- [ ] 无安全漏洞(AI 审查 + 人工确认)
- [ ] 无 breaking changes(或已标记)
- [ ] 无性能退化风险
### 建议检查
- [ ] 代码风格与项目约定一致
- [ ] 无不必要的复杂度增加
- [ ] 错误处理完整
- [ ] 日志级别和格式与现有一致
- [ ] 配置变更已更新文档步骤 3:安全扫描
对安全相关变更做额外审查:
对以下文件做安全专项审查:
[列出涉及认证、加密、权限、数据处理的文件]
检查:
1. 输入是否经过验证?
2. 是否有硬编码的密钥或 token?
3. SQL 是否使用参数化查询?
4. 文件操作是否有路径遍历风险?
5. 是否有不安全的序列化/反序列化?安全审查维度表:
| OWASP 类别 | 在 Vibe Coding 中的风险 | 检查方式 |
|---|---|---|
| 注入 | AI 可能生成拼接 SQL/命令的代码 | 检查所有数据库/命令执行 |
| XSS | AI 可能未对用户输入做 HTML 转义 | 检查所有输出到 HTML 的变量 |
| 敏感数据泄露 | AI 可能把密钥写入代码/配置文件 | 检查所有常量和配置 |
| 访问控制 | AI 可能遗漏权限检查 | 检查所有端点是否验证权限 |
| 安全配置 | AI 可能使用不安全的默认配置 | 检查 CORS、TLS、cookie 设置 |
步骤 4:发布确认
所有审查通过后:
确认以下发布前检查:
1. 运行完整测试套件 + lint → 无错误
2. 搜索残留的 console.log / debug 代码 → 无残留
3. 检查 .env 和配置 → 无敏感值硬编码
4. 确认 CHANGELOG 已更新
5. 确认版本号已更新(如需要)发布前检查清单:
markdown
## 发布前检查清单
- [ ] 全量测试通过
- [ ] lint 无错误
- [ ] 无 console.log / debug 代码残留
- [ ] 无硬编码密钥/token
- [ ] CHANGELOG 已更新
- [ ] 版本号已更新
- [ ] 文档已更新(如有 API 变更)
- [ ] 迁移脚本已准备(如有数据库变更)常见问题
Q:AI 审查和人工审查的边界怎么划分? A:AI 扫量大(快速检查所有文件的安全、逻辑、性能),人审关键(业务逻辑、用户体验、兼容性)。AI 做广度,人做深度。
Q:AI 审查发现了大量问题怎么办? A:先按严重程度排序。🔴 严重问题必须全部修复。🟡 中等问题看是否影响发布。🟢 低风险可以后续迭代修复。不要试图在发布前修复所有小问题——那会延迟发布并增加引入新问题的风险。
Q:审查中发现了架构问题怎么办? A:架构问题通常不适合在当前 PR 中修复——记录到 decision-log,后续迭代处理。当前 PR 只解决当前问题。