d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
125 lines
3.2 KiB
Markdown
125 lines
3.2 KiB
Markdown
# 代码审查标准
|
|
|
|
## 目的
|
|
|
|
代码审查确保代码合并前的质量、安全性和可维护性。此规则定义何时以及如何进行代码审查。
|
|
|
|
## 何时审查
|
|
|
|
**强制审查触发条件:**
|
|
|
|
- 编写或修改代码后
|
|
- 提交到共享分支之前
|
|
- 更改安全敏感代码时(认证、支付、用户数据)
|
|
- 进行架构更改时
|
|
- 合并 pull request 之前
|
|
|
|
**审查前要求:**
|
|
|
|
在请求审查之前,确保:
|
|
|
|
- 所有自动化检查(CI/CD)已通过
|
|
- 合并冲突已解决
|
|
- 分支已与目标分支同步
|
|
|
|
## 审查检查清单
|
|
|
|
在标记代码完成之前:
|
|
|
|
- [ ] 代码可读且命名良好
|
|
- [ ] 函数聚焦(<50 行)
|
|
- [ ] 文件内聚(<800 行)
|
|
- [ ] 无深层嵌套(>4 层)
|
|
- [ ] 错误显式处理
|
|
- [ ] 无硬编码密钥或凭据
|
|
- [ ] 无 console.log 或调试语句
|
|
- [ ] 新功能有测试
|
|
- [ ] 测试覆盖率满足 80% 最低要求
|
|
|
|
## 安全审查触发条件
|
|
|
|
**停止并使用 security-reviewer 代理当:**
|
|
|
|
- 认证或授权代码
|
|
- 用户输入处理
|
|
- 数据库查询
|
|
- 文件系统操作
|
|
- 外部 API 调用
|
|
- 加密操作
|
|
- 支付或金融代码
|
|
|
|
## 审查严重级别
|
|
|
|
| 级别 | 含义 | 行动 |
|
|
|-------|---------|--------|
|
|
| CRITICAL(关键) | 安全漏洞或数据丢失风险 | **阻止** - 合并前必须修复 |
|
|
| HIGH(高) | Bug 或重大质量问题 | **警告** - 合并前应修复 |
|
|
| MEDIUM(中) | 可维护性问题 | **信息** - 考虑修复 |
|
|
| LOW(低) | 风格或次要建议 | **注意** - 可选 |
|
|
|
|
## 代理使用
|
|
|
|
使用这些代理进行代码审查:
|
|
|
|
| 代理 | 用途 |
|
|
|-------|--------|
|
|
| **code-reviewer** | 通用代码质量、模式、最佳实践 |
|
|
| **security-reviewer** | 安全漏洞、OWASP Top 10 |
|
|
| **typescript-reviewer** | TypeScript/JavaScript 特定问题 |
|
|
| **python-reviewer** | Python 特定问题 |
|
|
| **go-reviewer** | Go 特定问题 |
|
|
| **rust-reviewer** | Rust 特定问题 |
|
|
|
|
## 审查工作流
|
|
|
|
```
|
|
1. 运行 git diff 了解更改
|
|
2. 先检查安全检查清单
|
|
3. 审查代码质量检查清单
|
|
4. 运行相关测试
|
|
5. 验证覆盖率 >= 80%
|
|
6. 使用适当的代理进行详细审查
|
|
```
|
|
|
|
## 常见问题捕获
|
|
|
|
### 安全
|
|
|
|
- 硬编码凭据(API 密钥、密码、令牌)
|
|
- SQL 注入(查询中的字符串拼接)
|
|
- XSS 漏洞(未转义的用户输入)
|
|
- 路径遍历(未净化的文件路径)
|
|
- CSRF 保护缺失
|
|
- 认证绕过
|
|
|
|
### 代码质量
|
|
|
|
- 大函数(>50 行)- 拆分为更小的
|
|
- 大文件(>800 行)- 提取模块
|
|
- 深层嵌套(>4 层)- 使用提前返回
|
|
- 缺少错误处理 - 显式处理
|
|
- 变更模式 - 优先使用不可变操作
|
|
- 缺少测试 - 添加测试覆盖
|
|
|
|
### 性能
|
|
|
|
- N+1 查询 - 使用 JOIN 或批处理
|
|
- 缺少分页 - 给查询添加 LIMIT
|
|
- 无界查询 - 添加约束
|
|
- 缺少缓存 - 缓存昂贵操作
|
|
|
|
## 批准标准
|
|
|
|
- **批准**:无关键或高优先级问题
|
|
- **警告**:仅有高优先级问题(谨慎合并)
|
|
- **阻止**:发现关键问题
|
|
|
|
## 与其他规则的集成
|
|
|
|
此规则与以下规则配合:
|
|
|
|
- [testing.md](testing.md) - 测试覆盖率要求
|
|
- [security.md](security.md) - 安全检查清单
|
|
- [git-workflow.md](git-workflow.md) - 提交标准
|
|
- [agents.md](agents.md) - 代理委托
|