项目文件夹

文件
2026-07-13 12:35:20 +08:00

5.6 KiB

GitHub Copilot Code Review 指导

基础规则

  1. Code Review 评论内容请使用中文
  2. 专注于提供有价值、可操作的建议,避免指出显而易见的问题

CR 优先级框架

🔴 高优先级(必须评论)

  • 安全问题:输入验证、SQL 注入、XSS、权限控制等
  • 性能问题:算法复杂度过高、内存泄漏、不必要的循环等
  • 关键逻辑错误:业务逻辑缺陷、边界条件处理不当
  • 架构一致性:违反项目架构模式、模块职责不清
  • TypeScript 类型安全:类型滥用、any 类型的不当使用

🟡 中优先级(建议评论)

  • API 设计:接口一致性、参数设计、返回值结构
  • 错误处理:异常处理不完整、错误信息不清晰
  • 代码可读性:复杂的业务逻辑需要更好的注释或重构
  • 测试质量:测试覆盖率不足、测试用例设计不合理

🟢 低优先级(避免评论)

  • 格式问题:缩进、空格、换行等(应由自动化工具处理)
  • 命名风格:除非严重影响理解
  • 个人编码偏好:不影响功能实现的习惯性写法

项目特定指导

MCP 协议实现

  • 关注 MCP 消息处理的正确性和完整性
  • 检查传输适配器的错误处理和重连机制
  • 验证工具调用和资源管理的生命周期

TypeScript 最佳实践

  • 优先使用具体的类型而非 any
  • 鼓励使用类型推导和泛型
  • 检查接口设计的一致性和向后兼容性

模块化架构

  • 验证模块间的依赖关系是否合理
  • 检查单一职责原则的遵循
  • 确保依赖注入容器的正确使用

测试策略

  • 重点检查集成测试和端到端测试
  • 验证异步代码的正确测试
  • 关注测试的可维护性和可读性

评论质量标准

好的评论应该

  1. 解释原因:说明为什么需要这个改动
  2. 提供方案:给出具体的修改建议
  3. 考虑影响:说明改动可能对其他部分的影响
  4. 示例代码:在需要时提供代码示例

避免的评论类型

  1. 仅指出问题"这里有问题"、"这样不好"
  2. 模糊建议"建议重构"、"优化一下"
  3. 过度建议:针对边缘案例的过度设计
  4. 风格偏好:个人习惯相关的评论

评审结论指引

评审通过

如果代码没有明显问题,符合项目要求,在 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。