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