shenjingnan--xiaozhi-client
5.6 KiB
5.6 KiB
GitHub Copilot Code Review 指导
基础规则
- Code Review 评论内容请使用中文
- 专注于提供有价值、可操作的建议,避免指出显而易见的问题
CR 优先级框架
🔴 高优先级(必须评论)
- 安全问题:输入验证、SQL 注入、XSS、权限控制等
- 性能问题:算法复杂度过高、内存泄漏、不必要的循环等
- 关键逻辑错误:业务逻辑缺陷、边界条件处理不当
- 架构一致性:违反项目架构模式、模块职责不清
- TypeScript 类型安全:类型滥用、any 类型的不当使用
🟡 中优先级(建议评论)
- API 设计:接口一致性、参数设计、返回值结构
- 错误处理:异常处理不完整、错误信息不清晰
- 代码可读性:复杂的业务逻辑需要更好的注释或重构
- 测试质量:测试覆盖率不足、测试用例设计不合理
🟢 低优先级(避免评论)
- 格式问题:缩进、空格、换行等(应由自动化工具处理)
- 命名风格:除非严重影响理解
- 个人编码偏好:不影响功能实现的习惯性写法
项目特定指导
MCP 协议实现
- 关注 MCP 消息处理的正确性和完整性
- 检查传输适配器的错误处理和重连机制
- 验证工具调用和资源管理的生命周期
TypeScript 最佳实践
- 优先使用具体的类型而非
any - 鼓励使用类型推导和泛型
- 检查接口设计的一致性和向后兼容性
模块化架构
- 验证模块间的依赖关系是否合理
- 检查单一职责原则的遵循
- 确保依赖注入容器的正确使用
测试策略
- 重点检查集成测试和端到端测试
- 验证异步代码的正确测试
- 关注测试的可维护性和可读性
评论质量标准
✅ 好的评论应该
- 解释原因:说明为什么需要这个改动
- 提供方案:给出具体的修改建议
- 考虑影响:说明改动可能对其他部分的影响
- 示例代码:在需要时提供代码示例
❌ 避免的评论类型
- 仅指出问题:"这里有问题"、"这样不好"
- 模糊建议:"建议重构"、"优化一下"
- 过度建议:针对边缘案例的过度设计
- 风格偏好:个人习惯相关的评论
评审结论指引
✅ 评审通过
如果代码没有明显问题,符合项目要求,在 PR 中显著地用中文评论:
## ✅ 代码评审通过,允许合并
代码改动符合项目要求,可以合并。
评审通过的标准
- 代码功能正确,无明显 bug
- 符合项目的代码风格和质量要求
- 无高优先级或中优先级的安全问题
- 错误处理完善
- 测试覆盖合理
技术债务关注点
可维护性
- 代码重复
- 过长的函数或类
- 深层嵌套的复杂逻辑
可扩展性
- 硬编码的配置和常量
- 缺乏抽象的重复代码
- 紧耦合的组件设计
可测试性
- 难以测试的代码结构
- 过多的外部依赖
- 缺乏依赖注入
具体示例
好的评论示例
🔴 **安全问题**:这个函数直接使用用户输入构建 SQL 查询,存在 SQL 注入风险。
建议:使用参数化查询或 ORM 的查询构建器来避免 SQL 注入。
```typescript
// 当前代码(不安全)
const query = `SELECT * FROM users WHERE name = '${userName}'`;
// 建议改为
const query = 'SELECT * FROM users WHERE name = ?';
db.query(query, [userName]);
### 应该避免的评论
❌ "这个函数太长了"(没有具体建议) ❌ "变量名应该用 camelCase"(自动化工具应处理) ❌ "建议用 async/await"(没有说明具体收益)
## 上下文理解
1. **理解改动目的**:在评论前先理解这个 PR 的目标
2. **考虑整体影响**:不要只关注局部代码片段
3. **平衡建议**:在完美主义和实用性之间找到平衡
4. **尊重设计决策**:除非有明确问题,否则尊重现有的架构选择
## CR 范围控制
### 聚焦 PR 本身改动
- **专注于 PR 改动范围**:只分析本次 PR 修改的代码,不要扩大审查范围到未改动的代码
- **只分析改动本身**:评估改动代码本身是否有需要改进的地方
- **关注必要的潜在问题**:识别真正影响功能和安全的问题,避免过度延伸
- **不审查历史代码**:不要借机审查 PR 范围之外的代码,即使发现问题也只提醒不强制要求修复
### 范围控制原则
- 如果发现 PR 之外的代码有问题,可以简单提及但不应作为评审重点
- 不要求 PR 作者在当前改动中解决所有历史技术债务
- 保持评审焦点在本次改动的质量和正确性上
## 务实开发原则
### 核心原则
- **如无必要勿增实体**:需要什么功能就实现什么功能
- **功能驱动**:优先解决实际问题,不过度设计
- **优雅实现**:代码清晰、可维护、结构合理
- **避免过度设计**:
- 不要为了"未来可能需要"而增加复杂度
- 不要为了理论完美而过度抽象
- 不要在没有性能问题时优化性能
- 不要为了使用设计模式而使用
### 何时考虑复杂设计
- 实际遇到问题时
- 功能明确需要时
- 代码确实难以维护时
- 团队协作需要统一接口时
### CR 中的务实原则
- 评估代码是否增加了不必要的复杂性
- 验证功能实现是否符合"如无必要勿增实体"
- 确保代码优雅但不过度设计
- 验证架构合理性但不冗余
- 避免要求添加"未来可能用到"的功能
通过遵循这些指导,Copilot 将提供更有价值、更符合人类标准的 Code Review。