AI Code Reviewer
by @daimingvip-a11y
AI 驱动的多语言代码审查工具,自动检测代码质量、潜在漏洞,生成 PR 描述和单元测试用例。
clawhub install ai-code-reviewer📖 About This Skill
AI Code Reviewer
AI 驱动的代码审查工具。自动分析代码质量、发现潜在 bug、生成 PR 描述、建议测试用例。支持多种编程语言。
触发词
核心功能
1. 代码质量分析
2. 智能 PR 描述生成
输入:Git diff 或代码变更
↓
AI 分析:
变更摘要
影响范围
测试建议
注意事项
↓
输出:完整的 PR 描述 (Markdown)
3. 测试用例生成
4. 多语言支持
| 语言 | 支持程度 | 框架 | |------|---------|------| | JavaScript/TypeScript | ✅ 完整 | ESLint, Jest | | Python | ✅ 完整 | Pylint, Pytest | | Java | ✅ 完整 | Checkstyle, JUnit | | Go | ✅ 完整 | gofmt, go test | | Rust | ✅ 完整 | clippy, cargo test | | PHP | ✅ 完整 | PHPCS, PHPUnit |
配置说明
环境变量
# OpenRouter API (已有)
OPENROUTER_API_KEY=sk-or-v1-xxxxxGitHub Token (可选,用于自动 PR)
GITHUB_TOKEN=ghp_xxxxx代码审查规则 (可选)
CODE_REVIEW_STRICTNESS=medium # low/medium/high
ENABLE_SECURITY_CHECK=true
ENABLE_PERFORMANCE_CHECK=true
本地配置
在 TOOLS.md 中添加:
### AI Code Reviewer 配置默认审查严格度:medium
自动修复建议:是
生成测试用例:是
支持语言:JS/TS, Python, Java, Go, Rust, PHP
使用示例
基础用法
审查这段代码
指定语言
用 Python 审查这段代码
生成 PR 描述
为这个变更生成 PR 描述
生成测试
为这个函数生成单元测试
完整审查
完整审查:检查代码质量 + 生成 PR 描述 + 生成测试
输出格式
代码审查报告
🔍 AI 代码审查报告📁 文件:src/utils/validator.js
📊 评分:85/100 (良好)
✅ 优点:
• 函数命名清晰
• 注释完整
• 错误处理得当
⚠️ 需要改进 (3 个):
1. [性能] 第 23 行:循环内重复计算,建议提取到循环外
建议:const limit = items.length; for (let i = 0; i < limit; i++)
2. [安全] 第 45 行:用户输入未验证,存在注入风险
建议:添加 sanitizeInput() 验证
3. [风格] 第 67 行:函数过长 (80 行),建议拆分
建议:拆分为 validateUser() 和 validatePermissions()
🧪 测试建议:
• 添加边界条件测试 (空数组、null、undefined)
• 添加异常输入测试
• 覆盖率目标:80%
📝 自动修复:需要我帮你修复这些问题吗?[是/否/查看建议]
PR 描述
## 🎯 变更摘要实现了用户权限验证功能,包括角色检查和权限过滤。
📝 详细说明
新增 validatePermissions() 函数
优化了循环性能 (减少重复计算)
添加了输入验证防止注入攻击 🧪 测试
[x] 单元测试已添加
[x] 边界条件测试通过
[ ] 集成测试待完成 ⚠️ 注意事项
需要更新数据库迁移脚本
向后兼容,无需手动迁移 📋 检查清单
[x] 代码审查通过
[x] 测试覆盖率 > 80%
[x] 文档已更新
测试用例
// 生成的测试用例
describe('validatePermissions', () => {
test('应该允许管理员访问所有资源', () => {
const user = { role: 'admin' };
expect(validatePermissions(user, 'any')).toBe(true);
}); test('应该拒绝未授权用户访问', () => {
const user = { role: 'guest' };
expect(validatePermissions(user, 'admin-only')).toBe(false);
});
test('应该处理空用户对象', () => {
expect(() => validatePermissions(null, 'resource'))
.toThrow('Invalid user object');
});
test('应该处理边界条件:空权限列表', () => {
const user = { role: 'user', permissions: [] };
expect(validatePermissions(user, 'resource')).toBe(false);
});
});
错误处理
| 错误 | 原因 | 解决方案 | |------|------|---------| | 语言不支持 | 非支持语言 | 提示支持的语言列表 | | 代码过短 | 无法分析 | 建议提供完整函数/类 | | API 限流 | 请求过多 | 自动重试 + 排队 | | 语法错误 | 代码不完整 | 提示具体错误位置 |
定价策略
| 版本 | 价格 | 功能 | |------|------|------| | 免费版 | $0 | 每日 5 次审查,基础检查 | | 专业版 | $24.99/月 | 无限审查,PR 生成,测试生成 | | 团队版 | $79.99/月 | 团队协作,CI/CD 集成,自定义规则 |