rwadurian/backend/services/identity-service/test/code-quality-checklist.md

3.2 KiB
Raw Blame History

代码质量检查清单

自动化工具

1. ESLint - 代码规范检查

npm run lint

2. Prettier - 代码格式化

npm run format
npm run format:check

3. TypeScript 类型检查

npm run build
# 或
tsc --noEmit

4. 测试覆盖率

npm run test:cov

目标覆盖率:

  • 整体覆盖率 > 80%
  • 关键业务逻辑 > 90%
  • 领域模型 > 95%

5. SonarQube - 代码质量分析

# Docker 启动 SonarQube
docker run -d --name sonarqube -p 9000:9000 sonarqube:latest

# 扫描项目
npx sonar-scanner \
  -Dsonar.projectKey=identity-service \
  -Dsonar.sources=src \
  -Dsonar.host.url=http://localhost:9000

检查指标:

  • Code Smells
  • Bugs
  • Vulnerabilities
  • Security Hotspots
  • Duplications
  • Technical Debt

6. 循环复杂度检查

npm install -g complexity-report
cr --format json src/**/*.ts

目标:

  • 函数循环复杂度 < 10
  • 文件平均复杂度 < 5

手动代码审查清单

架构和设计

  • 遵循 DDD 原则
  • 清晰的层次划分Domain/Application/Infrastructure/API
  • 依赖方向正确(外层依赖内层,内层不依赖外层)
  • 没有循环依赖
  • 接口隔离,依赖倒置

领域层

  • 值对象是不可变的
  • 实体有唯一标识
  • 聚合根控制一致性边界
  • 领域事件正确发布
  • 业务规则在领域层,不在应用层

应用层

  • Command/Query 职责明确
  • Handler 只协调,不包含业务逻辑
  • 事务边界合理
  • 异常处理恰当

基础设施层

  • Repository 不泄露持久化细节
  • 外部服务接口清晰
  • 错误处理和重试机制

API 层

  • DTO 验证充分
  • 错误响应统一
  • API 文档完整Swagger
  • 版本控制策略

安全

  • 没有硬编码的密钥/密码
  • 敏感数据加密
  • 输入验证和消毒
  • SQL 注入防护(使用 ORM
  • XSS 防护

性能

  • 没有 N+1 查询
  • 合理使用索引
  • 避免阻塞操作
  • 合理的缓存策略
  • 分页查询,避免全表扫描

可维护性

  • 代码可读性好
  • 函数/类职责单一
  • 命名清晰准确
  • 注释充分但不冗余
  • 避免魔法数字

测试

  • 单元测试覆盖关键逻辑
  • 测试用例清晰可读
  • 测试独立,不依赖顺序
  • Mock 使用恰当

依赖分析

检查依赖关系

npm install -g madge

# 生成依赖图
madge --image deps.png src/

# 检查循环依赖
madge --circular src/

检查未使用的依赖

npm install -g depcheck
depcheck

检查过时的依赖

npm outdated

文档检查

  • README.md 完整

    • 项目介绍
    • 安装步骤
    • 运行命令
    • 环境变量说明
    • API 文档链接
  • 架构文档

    • 系统架构图
    • 领域模型图
    • 数据库 ER 图
    • API 接口文档
  • 开发文档

    • 开发环境搭建
    • 编码规范
    • Git 工作流
    • 测试指南

Git 提交质量

  • Commit message 清晰
  • 每个 commit 是原子性的
  • 没有提交敏感信息
  • 分支策略清晰