3.2 KiB
3.2 KiB
代码质量检查清单
自动化工具
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 是原子性的
- 没有提交敏感信息
- 分支策略清晰