forked from Gitlink/gitlink-cli
8.0 KiB
8.0 KiB
| name | version | description | metadata | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| gitlink-code-review | 1.0.0 | 智能代码审查:自动分析 PR 代码变更,进行多维度代码质量检查,生成结构化审查报告并自动添加评论。当用户需要对 GitLink PR 进行代码审查时触发。 |
|
gitlink-code-review(智能代码审查)
前置条件: 先阅读
../gitlink-shared/SKILL.md和../gitlink-pr/SKILL.md
CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 gh(GitHub CLI)操作 GitLink 资源。gh 仅适用于 GitHub 平台。
本技能提供 AI 驱动的自动化代码审查功能,帮助开发者和 Reviewers 快速分析 PR 代码质量。
🎯 核心功能
| 功能 | 说明 | 需要认证 |
|---|---|---|
代码变更分析 |
获取 PR 的文件列表和 diff 内容 | 否(公开项目) |
代码质量检查 |
检查代码复杂度、命名规范、注释完整性 | 否 |
安全性检查 |
检查 SQL 注入、XSS、敏感信息泄露等 | 否 |
性能检查 |
识别性能反模式和资源泄漏 | 否 |
可维护性检查 |
检查代码重复和职责单一原则 | 否 |
审查报告生成 |
生成结构化的审查报告(JSON/Markdown) | 否 |
自动评论 |
将审查意见自动添加为 PR 评论 | 是 |
📊 审查维度
1. 代码质量(Code Quality)
检查项:
- 代码复杂度:圈复杂度、嵌套层级、函数长度
- 命名规范:变量/函数/类的命名是否清晰
- 注释完整性:复杂逻辑是否有注释说明
- 代码格式:缩进、空行、代码组织
2. 安全性(Security)
检查项:
- SQL 注入:字符串拼接 SQL 语句
- XSS 漏洞:未转义的用户输入输出
- 敏感信息:硬编码的密码/密钥/Token
- 认证问题:权限检查、会话管理
- 输入验证:用户输入是否充分验证
3. 性能(Performance)
检查项:
- 循环效率:嵌套循环、大循环中的重复计算
- 资源泄漏:未关闭的连接/文件/流
- 数据库查询:N+1 查询、缺少索引
- 内存使用:大对象复制、内存泄漏
4. 可维护性(Maintainability)
检查项:
- 代码重复:重复的代码片段
- 职责单一:函数/类的职责是否明确
- 依赖耦合:模块间的耦合度
- 测试覆盖:是否缺少测试
🔧 使用方式
方式一:交互式审查(推荐)
# 1. 获取 PR 详情
gitlink-cli pr +view --id <pr_id> --format json
# 2. 获取变更文件列表
gitlink-cli pr +files --id <pr_id> --format json
# 3. 获取 diff 内容
gitlink-cli pr +diff --id <pr_id> --format json
# 4. AI 分析代码并生成审查报告(手动或自动)
# 5. (可选)添加审查评论
gitlink-cli api POST /:owner/:repo/pulls/:id/reviews --body '{"body":"审查意见...","event":"COMMENT"}'
方式二:完整审查工作流
详见 examples/comprehensive-review-workflow.md
📝 审查报告格式
JSON 格式(AI 解析)
{
"pr_id": 123,
"owner": "myuser",
"repo": "myrepo",
"title": "Feature: Add user authentication",
"analysis_timestamp": "2026-06-12T10:30:00Z",
"files_changed": 5,
"lines_added": 150,
"lines_removed": 50,
"review_summary": {
"overall_score": 85,
"quality_score": 90,
"security_score": 75,
"performance_score": 80,
"maintainability_score": 85
},
"issues_found": [
{
"file": "src/auth/login.go",
"line": 45,
"severity": "HIGH",
"category": "security",
"rule": "敏感信息泄露",
"description": "硬编码的密钥不应出现在代码中",
"suggestion": "使用环境变量或配置文件存储密钥"
},
{
"file": "src/auth/login.go",
"line": 78,
"severity": "MEDIUM",
"category": "performance",
"rule": "资源泄漏",
"description": "数据库连接未关闭",
"suggestion": "使用 defer 确保连接关闭"
}
],
"positive_notes": [
{
"file": "src/auth/user.go",
"line": "120,
"description": "优秀的错误处理"
}
],
"recommendations": [
"建议添加单元测试覆盖登录逻辑",
"建议使用参数化查询防止 SQL 注入"
]
}
Markdown 格式(人类阅读)
# 代码审查报告
## PR 信息
- **PR ID**: 123
- **标题**: Feature: Add user authentication
- **作者**: @developer
- **变更文件**: 5 个文件
- **代码行**: +150 / -50
## 总体评分: 85/100 ⭐⭐⭐⭐
- 代码质量: 90/100
- 安全性: 75/100 ⚠️
- 性能: 80/100
- 可维护性: 85/100
## 🔴 高优先级问题(2)
### 1. 敏感信息泄露
- **文件**: `src/auth/login.go:45`
- **类别**: security
- **问题**: 硬编码的密钥不应出现在代码中
- **建议**: 使用环境变量或配置文件存储密钥
### 2. 资源泄漏
- **文件**: `src/auth/login.go:78`
- **类别**: performance
- **问题**: 数据库连接未关闭
- **建议**: 使用 defer 确保连接关闭
## ⭐ 优秀实践(1)
### 1. 优秀的错误处理
- **文件**: `src/auth/user.go:120`
- **描述**: 完善的错误处理和日志记录
## 💡 改进建议
1. 建议添加单元测试覆盖登录逻辑
2. 建议使用参数化查询防止 SQL 注入
3. 建议添加输入验证中间件
## 📊 详细分析
[详细的逐文件分析...]
🤖 AI Agent 使用
AI Agent 可以通过以下步骤自动审查 PR:
-
获取 PR 信息
gitlink-cli pr +view --id <pr_id> --format json -
获取代码变更
gitlink-cli pr +files --id <pr_id> --format json gitlink-cli pr +diff --id <pr_id> --format json -
AI 分析代码(Claude 分析 diff 内容)
-
生成审查报告(结构化 JSON/Markdown)
-
(可选)添加评论
gitlink-cli api POST /:owner/:repo/pulls/:id/reviews --body '{ "body": "<审查报告内容>", "event": "COMMENT" }'
🎯 最佳实践
审查时机
- PR 创建后:立即进行初步审查,快速发现问题
- PR 更新后:审查新增的代码变更
- 合并前:最终审查确认代码质量
审查重点
根据 PR 类型调整审查重点:
- 功能 PR:关注代码质量和可维护性
- Bug 修复 PR:关注修复是否完整、测试是否充分
- 重构 PR:关注性能改进和代码简化
- 文档 PR:关注文档完整性和准确性
评论规范
- 建设性:提供具体的修改建议,而非仅指出问题
- 礼貌友好:使用积极的语言,避免负面批评
- 解释原因:说明为什么需要修改,帮助开发者理解
- 认可优点:及时指出代码中的优秀实践
自动化审查
可以配置 CI/CD 流程自动触发代码审查:
- PR 创建时自动审查
- 审查失败时阻止合并
- 审查通过后允许人工审查
📚 相关文档
❓ 常见问题
Q: 如何提高审查的准确性?
A:
- 提供完整的 diff 内容,而非仅文件列表
- 根据项目类型调整审查规则(如前端/后端/移动端)
- 结合项目上下文进行分析(如代码规范文档)
Q: 如何处理误报?
A:
- AI 审查可能产生误报,需要人工验证
- 可以配置白名单忽略特定规则
- 提供反馈改进审查规则
Q: 审查报告是否可以作为合并条件?
A:
- 可以将审查评分设置为合并门禁
- 建议设置最低评分要求(如 70 分以上)
- 高优先级问题必须修复后才能合并
🔗 参考资源
- gitlink-pr/SKILL.md - PR 操作指南
- gitlink-workflow/SKILL.md - AI 工作流
- 代码审查最佳实践 - Google 代码审查指南