# 代码质量检查清单 ## 自动化工具 ### 1. ESLint - 代码规范检查 ```bash npm run lint ``` ### 2. Prettier - 代码格式化 ```bash npm run format npm run format:check ``` ### 3. TypeScript 类型检查 ```bash npm run build # 或 tsc --noEmit ``` ### 4. 测试覆盖率 ```bash npm run test:cov ``` **目标覆盖率:** - 整体覆盖率 > 80% - 关键业务逻辑 > 90% - 领域模型 > 95% ### 5. SonarQube - 代码质量分析 ```bash # 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. 循环复杂度检查 ```bash 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 使用恰当 ## 依赖分析 ### 检查依赖关系 ```bash npm install -g madge # 生成依赖图 madge --image deps.png src/ # 检查循环依赖 madge --circular src/ ``` ### 检查未使用的依赖 ```bash npm install -g depcheck depcheck ``` ### 检查过时的依赖 ```bash npm outdated ``` ## 文档检查 - [ ] README.md 完整 - [ ] 项目介绍 - [ ] 安装步骤 - [ ] 运行命令 - [ ] 环境变量说明 - [ ] API 文档链接 - [ ] 架构文档 - [ ] 系统架构图 - [ ] 领域模型图 - [ ] 数据库 ER 图 - [ ] API 接口文档 - [ ] 开发文档 - [ ] 开发环境搭建 - [ ] 编码规范 - [ ] Git 工作流 - [ ] 测试指南 ## Git 提交质量 - [ ] Commit message 清晰 - [ ] 每个 commit 是原子性的 - [ ] 没有提交敏感信息 - [ ] 分支策略清晰