yy-review
执行代码审核,包括语法错误、逻辑错误、安全漏洞和最佳实践检查。
功能特性
- 审核改动文件的语法错误、逻辑错误、安全漏洞和最佳实践
- 按严重程度分类输出问题描述和修复建议
使用方式
直接调用 /yy-review 即可执行代码审核。
工作流程
阶段一:获取改动文件列表
- 使用 git 命令获取所有改动的文件:
git diff --name-only HEAD或者对于暂存的文件:git diff --cached --name-only - 过滤出代码文件(排除自动生成的文件、配置文件等)
阶段二:代码审核
对于每个改动的文件,进行以下检查:
- 语法错误检查
- 检查是否有明显的语法错误 - 检查是否有未闭合的标签 - 检查是否有未定义的变量
- 逻辑错误检查
- 检查是否有空指针引用 - 检查是否有数组越界 - 检查是否有逻辑判断错误
- 安全漏洞检查
- 检查是否有 XSS 风险 - 检查是否有敏感信息泄露 - 检查是否有 SQL 注入风险(如果有模板字符串拼接 SQL)
- 最佳实践检查
- 检查是否有 console.log/debugger 等调试代码(例外:在 catch 块中的 console.warn 不视为问题) - 检查是否有硬编码的敏感信息 - 检查是否有不必要的注释或死代码
阶段三:输出审核结果
如果发现问题,按照以下格式输出:
## 审核结果
### 文件: [filename]
发现以下问题:
1. **[严重/中等/轻微]** - [问题描述]
- 位置: [行号]
- 建议: [修复建议]审核结果判断:
- 如果没有发现问题 → 输出审核通过信息
- 如果只发现轻微问题(没有严重或中等问题)→ 输出审核结果,提示存在轻微问题
- 如果发现严重或中等问题 → 输出审核结果,等待用户修复后重新审核
禁止主动执行的命令
- 编译命令、构建命令、部署命令
- 任何自动执行的测试命令
输出示例
成功示例
🔍 执行代码审核...
获取改动文件列表...
发现 3 个改动文件
代码审核中...
✓ 代码审核通过!未发现严重或中等问题。
✓ 代码审核全部通过!发现问题示例
🔍 执行代码审核...
获取改动文件列表...
发现 2 个改动文件
代码审核中...
## 审核结果
### 文件: src/utils/helper.ts
发现以下问题:
1. **中等** - 可能存在空指针引用
- 位置: 第 45 行
- 建议: 添加空值检查 `if (data?.items?.length)`
2. **轻微** - 存在 console.log 调试代码
- 位置: 第 78 行
- 建议: 移除调试代码或使用日志库
⚠️ 发现 1 个中等问题和 1 个轻微问题,建议修复后重新审核。Output contract
必需输出字段
| 字段 | 类型 | 说明 |
|---|---|---|
| 状态 | enum | 通过/有问题的 |
| 问题列表 | array | 发现的问题(按严重程度分类) |
| 建议 | string | 整体改进建议 |
问题结构
| 字段 | 类型 | 说明 |
|---|---|---|
| 严重程度 | enum | 严重/中等/轻微 |
| 问题类型 | enum | 语法错误/逻辑错误/安全漏洞/最佳实践 |
| 问题描述 | string | 问题的详细描述 |
| 位置 | string | 文件路径:行号 |
| 修复建议 | string | 具体修复方案 |
路径格式规范
- 使用正斜杠作为路径分隔符,路径包含空格时使用引号包裹,以确保跨平台兼容性和正确解析
输出格式
审核通过
## 审核结果
✅ 代码审核通过!未发现严重或中等问题。
### 审核统计
- 审核文件数:3
- 发现问题:0 个发现问题
## 审核结果
⚠️ 发现 N 个问题,建议修复后重新审核。
### 问题统计
- 严重:1 个
- 中等:2 个
- 轻微:3 个
### 问题详情
#### src/utils/helper.ts
1. **中等 - 逻辑错误** - 可能存在空指针引用
- 位置: 第 45 行
- 代码: `const len = data.items.length`
- 建议: 添加空值检查 `const len = data?.items?.length || 0`
2. **轻微 - 最佳实践** - 存在 console.log 调试代码
- 位置: 第 78 行
- 代码: `console.log('debug:', value)`
- 建议: 移除调试代码或使用日志库
#### src/api/user.ts
3. **严重 - 安全漏洞** - 敏感信息泄露风险
- 位置: 第 23 行
- 代码: `return { user, password: user.password }`
- 建议: 移除敏感字段 `return { user: { id: user.id, name: user.name } }`
### 修复建议
1. 优先修复严重问题
2. 中等问题影响代码健壮性,建议修复
3. 轻微问题可选择性修复