12.5 代码审查清单
概述
Review 按"架构红线 → 安全 → 正确性 → 规范"四层组织。红线项(绕过 dao/反向依赖等)任何一项都应直接打回。
架构红线(一票否决)
text
□ 绕过 dao.Ctx 直连 g.DB() 查业务表
□ 手写 del_flag / tenant_id 条件
□ 租户级新表未登记 hooks.tenantTables
□ logic 反向 import internal/task
□ middleware 直接 import 业务包(应走 wire.go 函数变量)
□ internal/migrate 走 dao/logic(应 gdb 裸连)
□ base.go 导出函数超 15 个(应拆子包)
□ 整体运行 gf gen service 覆盖手工接口文件
□ 唯一预检范围 ≠ 唯一索引范围(Group 缺失)
□ gmeta path 带 /v1 版本段 / public 白名单三处不一致安全 Review
text
□ 新接口声明了 permission(或评审确认留空=登录即可)
□ 权限码符合 sys:{module小驼峰}:{action}
□ 入参有 gvalid 校验(required/范围/格式)
□ 敏感字段不出接口(password/salt)
□ 日志不打印密码/令牌(maskSecret 覆盖)
□ SQL 无字符串拼接(全参数化)
□ 文件上传走白名单+嗅探链(未自造上传口)
□ 富文本处理未破坏 [IMG_URL] 契约 / 未引入外站抓取(SSRF)
□ 新缓存键有失效点或短 TTL(对照 4.8 原则)正确性 Review
text
□ 事务边界正确(bcrypt/HTTP/文件 IO 不在事务内)
□ 钩子内无 append / 无 IO / 错误上抛
□ 错误处理不吞 err(不 _ = 忽略关键错误)
□ 分页走 PageData;空集 []
□ 导出走 applyFilters(导出=所见)
□ N+1 查询(循环内查库)→ 批查改造(userExpandNames 模式)
□ 并发安全(共享 map 加锁;goroutine 泄漏)
□ LastInsertId 回主键(禁雪花)
□ 前端三件套对齐(querySchemas/Req/spec)
□ 前端按钮 v-permission 对齐 gmeta规范 Review
text
□ 文件命名 snake_case(后端)/ 驼峰(前端)
□ 注释按当前功能直述(无比较/来源痕迹)
□ json 驼峰(下划线仅登录/令牌例外)
□ service 接口同步更新(手维护)
□ 日志标题 "{模块中文名}-{动作}"、logType 正确
□ gofmt / go vet / vue-tsc / eslint 通过
□ 文档同步(接口清单/表清单/配置项有变更时)
□ 破坏性变更走版本化说明 + 黄金样本更新Review 实践建议
text
小 PR(<400 行)优先;大重构拆分提交
先看设计(spec 声明/钩子划分)再看细节
生成器产物看增量 diff(不逐行 review 模板产物)
测试:修复类看是否有回归测试;新功能看冒烟路径
评论给"为什么+建议",不只给"改成什么"