Code Review Skill
version: 1.0.0
代码审查规范。QA 主导审查,确保代码质量。
审查流程
code
开发完成 → 提交 PR → QA 代码审查 → 通过 → 合并
↓
不通过 → 修改 → 重新审查
审查职责
| 角色 | 审查重点 |
|---|---|
| QA | 代码规范、质量、安全、可测试性 |
| 同角色 Agent | 业务逻辑、实现方案(FE 审 FE、BE 审 BE) |
| Arch | 架构一致性(大变更时) |
审查清单
通用检查(所有代码)
- • 规范:lint 通过、格式化正确
- • 命名:变量/函数命名清晰、符合规范
- • 注释:关键逻辑有注释、无过时注释
- • 复杂度:函数不超过 50 行、嵌套不超过 3 层
- • 重复:无明显重复代码
- • 安全:无硬编码密钥、无 SQL 注入风险
前端检查(FE)
- • 类型:TypeScript 类型完整、无 any
- • 组件:职责单一、Props 有类型
- • 样式:符合设计规范、无内联样式滥用
- • 性能:无不必要的渲染、列表有 key
- • 可访问性:有 alt、有 aria-label
后端检查(BE)
- • 契约:与 API 契约一致
- • 校验:输入参数有校验
- • 错误处理:有统一错误格式、不吞异常
- • 日志:关键操作有日志
- • 事务:数据操作有事务保护
Schema 检查(DBA)
- • 命名:符合命名规范
- • 索引:必要索引已添加
- • 约束:必要约束已定义
- • 迁移:有 up 和 down
审查结果
通过 ✅
code
LGTM(Looks Good To Me) 代码质量良好,可以合并。
条件通过 ⚠️
code
Approve with comments 可以合并,但建议后续改进: - [ ] 建议1 - [ ] 建议2
不通过 🔴
code
Request changes 需要修改后重新审查: 1. [必须修改] 问题描述 2. [必须修改] 问题描述
审查评论规范
评论类型标记
code
[必须] 这里有 bug,需要修复 [建议] 这里可以用更简洁的写法 [疑问] 这个逻辑是什么意思? [赞] 这个实现很优雅 👍
好的评论示例
code
[必须] 这里缺少 null 检查,当 user 为 null 时会 crash 建议改为: const name = user?.name ?? 'Unknown'; [建议] 这个函数有点长(60行),建议拆分成: - validateInput() - processData() - formatOutput()
差的评论示例
code
❌ "这不对" — 没说哪里不对、怎么改 ❌ "重写" — 没说为什么、怎么重写 ❌ "??" — 表意不明
审查礼仪
审查者
- •及时响应(24 小时内)
- •评论具体、有建设性
- •区分"必须改"和"建议改"
- •承认好的实现
被审查者
- •感谢反馈
- •解释不同意的点
- •及时修改
- •修改后请求重新审查
审查时效
| PR 类型 | 期望审查时间 |
|---|---|
| Hotfix | 2 小时内 |
| 小 PR(< 100 行) | 24 小时内 |
| 大 PR(> 100 行) | 48 小时内 |
自审清单
提交 PR 前先自审:
- • 代码能运行
- • lint 通过
- • 自测功能正常
- • 无调试代码(console.log 等)
- • PR 描述清晰