签入版本
This commit is contained in:
@@ -1,80 +1,48 @@
|
||||
# 12.5 代码审查清单
|
||||
# 12.7 代码审查清单
|
||||
|
||||
:::tip 概述
|
||||
代码审查(Code Review)是保证代码质量的重要环节。以下清单涵盖后端和前端的审查要点。
|
||||
:::tip 建议遵守
|
||||
审查按清单走:安全红线 → 契约影响 → 分层纪律 → 规约符合度。前四项任一不过即阻塞。
|
||||
:::
|
||||
|
||||
## 后端审查清单
|
||||
## 阻塞项(必须过)
|
||||
|
||||
### Model 层
|
||||
- [ ] **数据访问**:无裸 `*gorm.DB`;删除走软删;Raw 有场景注释([12.3](/zh/standards/data-access.html))
|
||||
- [ ] **契约稳定**:dto json 标签名未意外变更;RouteSpec 路径/权限码变更已同步前端与菜单
|
||||
- [ ] **错误处理**:业务错误原样上抛(无 wrap)、无吞错、无 handler 写响应
|
||||
- [ ] **安全**:新接口有权限码声明;敏感信息(密码/Token)不入日志;无硬编码密钥
|
||||
- [ ] **配置**:新增配置键同步 .env.example(check-config 可过)
|
||||
|
||||
- [ ] 继承 `BaseModel`
|
||||
- [ ] 表名 `$name` 配置正确
|
||||
- [ ] 关联关系定义正确(如有)
|
||||
- [ ] 无硬编码的数据库前缀
|
||||
## 规约项
|
||||
|
||||
### Logic 层
|
||||
- [ ] 模块四件套齐全、命名符合 [12.4](/zh/standards/module-code.html)
|
||||
- [ ] handler 只有委托;逻辑在 service;差异进 ModuleSpec 声明/钩子
|
||||
- [ ] 钩子无 HTTP/文件 IO、无 append
|
||||
- [ ] 事务用 WithTrans 且回调内用入参 ctx
|
||||
- [ ] 分页符合 [12.2](/zh/standards/pagination.html);响应信封符合 [12.1](/zh/standards/api-response.html)
|
||||
- [ ] 字典/枚举显示走 SerializeMaps 或字典接口,无硬编码文案映射
|
||||
- [ ] 注释按当前功能直述(无改造过程表述)
|
||||
|
||||
- [ ] 继承正确的基类(`BaseLogic` 或 `BaseTenantLogic`)
|
||||
- [ ] `$modelClass` 配置正确
|
||||
- [ ] 查询条件配置合理(`pageLikeFields` / `pageEqFields`)
|
||||
- [ ] 排序配置合理(`pageOrderBy`)
|
||||
- [ ] 唯一性校验配置(`uniqueFields`)
|
||||
- [ ] 枚举映射配置(`serializeMaps`)
|
||||
- [ ] 文件字段配置(`fileFields` / `fileSaveDir`)
|
||||
- [ ] 钩子方法中无 SQL 注入风险
|
||||
- [ ] 事务使用正确(`startTrans` / `commit` / `rollback`)
|
||||
## 前端项
|
||||
|
||||
### Controller 层
|
||||
- [ ] api 模块 URL 不带 /api 前缀,命名与后端动作对应
|
||||
- [ ] 按钮权限用 v-perm/v-perms,码值与菜单节点一致
|
||||
- [ ] 表单字段与 dto json 名一致(全量提交语义)
|
||||
- [ ] 未绕过 http 封装直接用 axios
|
||||
|
||||
- [ ] 继承 `BaseController`
|
||||
- [ ] `initialize()` 中实例化 Logic
|
||||
- [ ] 所有接口标注 `#[Permission]` 注解
|
||||
- [ ] 所有写操作标注 `#[Log]` 注解
|
||||
- [ ] 权限码格式正确(`sys:模块名:操作`)
|
||||
- [ ] 异常处理完善(try-catch)
|
||||
- [ ] 参数校验充分
|
||||
## 测试与工程
|
||||
|
||||
### 安全
|
||||
- [ ] 新逻辑有配套测试(或说明为何不测)
|
||||
- [ ] `make check` / 前端 type+lint 本地通过
|
||||
- [ ] 生成器产物与模板改动同提交
|
||||
- [ ] 提交信息符合 [12.5](/zh/standards/git.html)
|
||||
|
||||
- [ ] 无 SQL 注入风险(使用 ORM 参数绑定)
|
||||
- [ ] 无 XSS 风险(输出转义)
|
||||
- [ ] 敏感数据不暴露(password、salt)
|
||||
- [ ] 文件上传有类型和大小限制
|
||||
- [ ] 权限校验覆盖所有接口
|
||||
## 审查沟通原则
|
||||
|
||||
## 前端审查清单
|
||||
- 挑刺对代码不对人;给出理由与替代方案
|
||||
- 优先级:正确性 > 安全 > 契约 > 可读性 > 风格
|
||||
- 争议收敛到规约文档——这次讨论的结论应能写进本章某页
|
||||
|
||||
### API 模块
|
||||
## 相关
|
||||
|
||||
- [ ] 函数命名规范(`getXxxPage` / `xxxAdd` / `xxxUpdate` / `xxxDelete`)
|
||||
- [ ] HTTP 方法正确(GET/POST/PUT/DELETE)
|
||||
- [ ] 参数传递方式正确(params / data)
|
||||
- [ ] 错误处理完善
|
||||
|
||||
### 页面组件
|
||||
|
||||
- [ ] 使用 `<script setup lang="ts">` 语法
|
||||
- [ ] Props 有类型定义
|
||||
- [ ] 表单有验证规则
|
||||
- [ ] 删除操作有确认弹窗
|
||||
- [ ] 加载状态处理(loading)
|
||||
- [ ] 空数据处理
|
||||
|
||||
### 权限
|
||||
|
||||
- [ ] 按钮级权限使用 `v-perm` 指令
|
||||
- [ ] 权限码与后端一致
|
||||
|
||||
### 性能
|
||||
|
||||
- [ ] 列表数据分页加载
|
||||
- [ ] 图片懒加载
|
||||
- [ ] 组件按需引入
|
||||
|
||||
## Git 提交审查
|
||||
|
||||
- [ ] commit message 格式正确
|
||||
- [ ] 一个 commit 只做一件事
|
||||
- [ ] 无调试代码残留(console.log、dump)
|
||||
- [ ] 无敏感信息泄露(密码、密钥)
|
||||
- [12.8 后端编码规范](/zh/standards/backend-code.html)
|
||||
- [12.9 前端编码规范](/zh/standards/frontend-code.html)
|
||||
|
||||
Reference in New Issue
Block a user