Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_EleVue/zh/standards/code-review.md
T
2026-10-08 17:50:29 +08:00

91 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 12.5 代码审查清单
:::tip 概述
代码审查(Code Review)是保证代码质量的重要环节。以下清单涵盖后端和前端的审查要点。
:::
## 后端审查清单
### Model 层
- [ ] 继承 Eloquent `Model`(业务模型位于 `app/Models/`)
- [ ] `protected $table` 显式指定表名(含前缀或与 `DB_PREFIX` 推导一致)
- [ ] 引入 `SoftDeletesByFlag`(is_delete 软删除)与 `HasAuditColumns`(审计字段)Trait
- [ ] `$fillable` 白名单完整(批量赋值字段)
- [ ] 关联关系定义正确(如有)
- [ ] 无硬编码的数据库前缀
### Service 层
- [ ] 继承正确的基类(`BaseService` 或 `BaseTenantService`,树形模块不参与租户隔离)
- [ ] `$modelClass` 配置正确
- [ ] Trait 组合按需(`HasCrudOperations` / `HasQueryScopes` / `HasSerializeMaps` / `HasUniqueCheck` / `HasFileProcessing`)
- [ ] 查询条件配置合理(`pageLikeFields` / `pageEqFields`)
- [ ] 排序配置合理(`pageOrderBy` / `orderFieldAllow` 白名单)
- [ ] 唯一性校验配置(`uniqueFields`)
- [ ] 枚举映射配置(`serializeMaps`)
- [ ] 文件字段配置(`fileFields` / `fileSaveDir`)
- [ ] 钩子方法中无 SQL 注入风险(使用查询构造器参数绑定)
- [ ] 写操作在事务中执行(`HasCrudOperations` 已用 `DB::transaction` 包裹,自定义逻辑需补充)
### Controller 层
- [ ] 位于 `app/Http/Controllers/Api/`,瘦控制器(参数获取 → 调 Service → 返回 JSON)
- [ ] 通过构造函数注入 Service(不手动 new)
- [ ] 所有接口标注 `#[Permission]` 注解
- [ ] 所有写操作标注 `#[OperationLog]` 注解
- [ ] 权限码格式正确(`sys:模块名:操作`)
- [ ] 返回值类型为 `JsonResponse`,使用基类 `success/fail/paginate/_page` 等方法
- [ ] 参数格式校验由 FormRequest 完成(不在控制器手写校验)
### FormRequest
- [ ] 继承 `BaseRequest`(`failedValidation` 统一抛出 `code=1` 响应)
- [ ] `rules()` 覆盖全部必填与格式字段
- [ ] 场景区分(add / update)
### 安全
- [ ] 无 SQL 注入风险(使用 ORM / 查询构造器参数绑定)
- [ ] 无 XSS 风险(输出转义)
- [ ] 敏感数据不暴露(password、salt 不在响应字段中)
- [ ] 文件上传有类型和大小限制(`config/file.php` + FormRequest)
- [ ] 权限校验覆盖所有接口(`#[Permission]`)
## 前端审查清单
### API 模块
- [ ] 函数命名规范(`getXxxPage` / `xxxAdd` / `xxxUpdate` / `xxxDelete`)
- [ ] HTTP 方法正确(GET/POST/PUT/DELETE)
- [ ] 参数传递方式正确(params / data)
- [ ] 错误处理完善(响应拦截器统一处理,业务代码不重复 catch)
### 页面组件
- [ ] 使用 `<script setup lang="ts">` 语法
- [ ] Props 有类型定义
- [ ] 表单有验证规则
- [ ] 删除操作有确认弹窗
- [ ] 加载状态处理(loading)
- [ ] 空数据处理
### 权限
- [ ] 按钮级权限使用 `v-perm` 指令(如 `v-perm="['sys:example:add']"`,多权限全满足用 `v-perms`)
- [ ] 权限码与后端 `#[Permission]` 注解一致
### 性能
- [ ] 列表数据分页加载
- [ ] 图片懒加载
- [ ] 组件按需引入
## Git 提交审查
- [ ] commit message 格式正确(见 [12.3 Git 提交规范](/zh/standards/git.html))
- [ ] 一个 commit 只做一件事
- [ ] 无调试代码残留(console.log、dd、dump)
- [ ] 无敏感信息泄露(密码、密钥、.env)
- [ ] 通过 `vendor/bin/pint --test`(后端风格)与 `pnpm lint:eslint`(前端风格)