---
description: 代码生成后的审核规范和检查清单
globs: ["**/*.ts", "**/*.vue", "**/*.js", "**/*.tsx", "**/*.jsx"]
alwaysApply: true
---

# 代码审核规范

## 🎯 审核目标

代码生成完成后必须进行全面的审核，确保代码质量、规范性和最佳实践。审核应覆盖以下方面：

1. **规范符合性**：是否符合编码规范和团队标准
2. **代码质量**：是否有冗余变量、函数和重复逻辑
3. **面向对象思想**：是否符合 OOP 设计原则
4. **设计模式**：是否合理应用设计模式
5. **性能优化**：是否存在性能问题
6. **安全性**：是否存在安全漏洞

## 📋 审核检查清单

### 1. 规范符合性检查

#### 代码格式和风格
- [ ] 代码缩进统一（2个空格）
- [ ] 命名规范符合约定（camelCase、PascalCase、kebab-case）
- [ ] 函数和变量命名具有描述性
- [ ] 代码行长度不超过 120 字符
- [ ] 适当的空行分隔逻辑块
- [ ] 注释使用中文，格式规范

#### TypeScript 规范
- [ ] 所有函数参数和返回值有类型注解
- [ ] 接口命名以 `I` 开头，使用 PascalCase
- [ ] 避免使用 `any` 类型
- [ ] 使用可选链 `?.` 和空值合并 `??`
- [ ] 泛型使用合理

#### Vue3 规范
- [ ] 使用组合式 API，禁用选项式 API
- [ ] Props 定义包含类型和默认值
- [ ] 事件定义使用 `defineEmits`，明确参数类型
- [ ] 组件名称使用 PascalCase
- [ ] 模板中使用 kebab-case

### 2. 代码质量检查

#### 冗余代码识别
- [ ] 检查未使用的变量、函数、导入
- [ ] 识别重复的代码块
- [ ] 检查死代码（永远不会执行的代码）
- [ ] 验证函数参数是否都被使用
- [ ] 检查是否有未使用的返回值

#### 重复逻辑检查
- [ ] 识别相似的函数实现
- [ ] 检查重复的业务逻辑
- [ ] 验证是否有可复用的代码
- [ ] 检查重复的配置或常量定义

#### 代码复杂度
- [ ] 函数行数不超过 50 行
- [ ] 函数参数不超过 5 个
- [ ] 嵌套层级不超过 4 层
- [ ] 圈复杂度控制在合理范围内

### 3. 面向对象思想检查

#### SOLID 原则
- [ ] **单一职责原则**：每个类/函数只负责一个功能
- [ ] **开闭原则**：对扩展开放，对修改关闭
- [ ] **里氏替换原则**：子类可以替换父类
- [ ] **接口隔离原则**：接口应该小而专一
- [ ] **依赖倒置原则**：依赖抽象而非具体实现

#### 封装性
- [ ] 私有成员使用 `private` 或 `_` 前缀
- [ ] 公共接口设计合理
- [ ] 数据封装良好，避免直接暴露内部状态

#### 继承和组合
- [ ] 优先使用组合而非继承
- [ ] 继承关系合理，避免过深的继承链
- [ ] 接口设计清晰，职责明确

### 4. 设计模式检查

#### 常用设计模式应用
- [ ] **工厂模式**：复杂对象创建
- [ ] **单例模式**：全局唯一实例
- [ ] **观察者模式**：事件处理
- [ ] **策略模式**：算法选择
- [ ] **装饰器模式**：功能扩展
- [ ] **适配器模式**：接口适配

#### Vue3 特定模式
- [ ] **Composables**：逻辑复用
- [ ] **Provide/Inject**：依赖注入
- [ ] **Teleport**：组件渲染位置控制
- [ ] **Suspense**：异步组件处理

#### NestJS 特定模式
- [ ] **依赖注入**：服务解耦
- [ ] **装饰器模式**：元数据配置
- [ ] **守卫模式**：权限控制
- [ ] **拦截器模式**：横切关注点

### 5. 性能优化检查

#### 前端性能
- [ ] 避免在模板中进行复杂计算
- [ ] 使用 `computed` 缓存计算结果
- [ ] 合理使用 `v-show` 和 `v-if`
- [ ] 列表渲染使用唯一的 `key`
- [ ] 避免不必要的响应式数据

#### 后端性能
- [ ] 数据库查询优化，避免 N+1 问题
- [ ] 合理使用缓存机制
- [ ] 避免同步阻塞操作
- [ ] 批量处理大量数据

#### 资源优化
- [ ] 图片懒加载
- [ ] 代码分割和按需加载
- [ ] 避免内存泄漏
- [ ] 合理使用事件监听器

### 6. 安全性检查

#### 输入验证
- [ ] 所有用户输入进行验证
- [ ] 防止 XSS 攻击
- [ ] 防止 SQL 注入
- [ ] 敏感信息保护

#### 权限控制
- [ ] 身份认证机制
- [ ] 授权检查
- [ ] 敏感操作保护
- [ ] 错误信息不暴露敏感信息

## 🔍 审核工具和方法

### 自动化检查工具
```bash
# ESLint 代码规范检查
npm run lint

# TypeScript 类型检查
npm run type-check

# 代码格式化检查
npm run format:check

# 测试覆盖率检查
npm run test:coverage
```

### 代码审查工具
- **SonarQube**：代码质量分析
- **CodeClimate**：代码质量监控
- **ESLint**：代码规范检查
- **Prettier**：代码格式化
- **Husky**：Git 钩子检查

### 人工审查要点
1. **逻辑正确性**：业务逻辑是否符合需求
2. **可读性**：代码是否易于理解和维护
3. **可扩展性**：是否便于后续功能扩展
4. **可测试性**：是否便于编写单元测试

## 📝 审核报告模板

### 审核结果记录
```markdown
## 代码审核报告

### 基本信息
- **文件路径**：`src/components/UserCard.vue`
- **审核日期**：2024-01-15
- **审核人员**：AI 编码助手
- **代码行数**：85 行

### 审核结果
- [x] 规范符合性：通过
- [x] 代码质量：通过
- [x] 面向对象思想：通过
- [x] 设计模式：通过
- [x] 性能优化：通过
- [x] 安全性：通过

### 发现的问题
1. **问题描述**：函数参数过多（6个参数）
   **建议**：使用对象参数或拆分为多个函数
   **优先级**：中等

2. **问题描述**：存在重复的验证逻辑
   **建议**：提取为公共验证函数
   **优先级**：高

### 改进建议
1. 将用户验证逻辑提取为 `useUserValidation` composable
2. 使用对象参数简化函数调用
3. 添加错误边界处理

### 审核结论
代码整体质量良好，建议按照上述建议进行优化。
```

## 🎯 审核最佳实践

### 审核流程
1. **自动化检查**：运行 ESLint、TypeScript 检查等
2. **静态分析**：使用 SonarQube 等工具分析
3. **人工审查**：逐行检查代码逻辑和设计
4. **测试验证**：确保功能正确性
5. **性能测试**：验证性能表现
6. **安全扫描**：检查安全漏洞

### 审核标准
- **必须修复**：安全漏洞、严重性能问题、规范违反
- **建议修复**：代码重复、设计不合理、可读性差
- **可选优化**：性能优化、代码简化、注释完善

### 持续改进
- 定期更新审核标准
- 收集审核反馈
- 优化审核流程
- 培训审核技能

## 🎯 代码审核最佳实践

### 自动审核触发机制
- **触发条件**：仅对代码文件（.ts, .vue, .js, .tsx, .jsx）修改时触发
- **排除条件**：规则文件（.mdc, .md, .txt, .json）修改时不触发
- **防死循环**：审核过程本身不触发新的审核
- **审核时机**：代码生成或修改完成后立即执行

### 必需配置项
- ✅ 建立完整的审核检查清单
- ✅ 使用自动化工具进行基础检查
- ✅ 人工审查关注逻辑和设计
- ✅ 记录审核结果和改进建议
- ✅ 持续优化审核流程
- ✅ 配置自动审核触发条件

### 参考文件
- `eslint.config.js` - ESLint 配置
- `sonar-project.properties` - SonarQube 配置
- `jest.config.js` - 测试配置
- `vite.config.ts` - 构建配置