3.5 KiB
3.5 KiB
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 提交规范)
- 一个 commit 只做一件事
- 无调试代码残留(console.log、dd、dump)
- 无敏感信息泄露(密码、密钥、.env)
- 通过
vendor/bin/pint --test(后端风格)与pnpm lint:eslint(前端风格)