forked from Gitlink/gitlink-cli
363 lines
9.1 KiB
Markdown
363 lines
9.1 KiB
Markdown
# gitlink-code-review - 智能代码审查 Skill
|
||
|
||
[](https://www.gitlink.org.cn/zzx-coder/gitlink-cli)
|
||
[](SKILL.md)
|
||
[](SKILL.md)
|
||
|
||
欢迎使用 **gitlink-code-review** Skill!这是一个 AI 驱动的自动化代码审查工具,帮助开发者和 Reviewers 快速分析 GitLink PR 的代码质量。
|
||
|
||
## 🎯 功能特性
|
||
|
||
### 核心功能
|
||
|
||
- ✅ **自动代码分析**:获取 PR 的文件列表和 diff 内容
|
||
- ✅ **多维度审查**:代码质量、安全性、性能、可维护性
|
||
- ✅ **结构化报告**:生成 JSON/Markdown 格式的审查报告
|
||
- ✅ **智能建议**:提供具体的代码修改建议
|
||
- ✅ **自动评论**:将审查意见自动添加为 PR 评论
|
||
- ✅ **AI 驱动**:基于 Claude 的代码理解能力
|
||
|
||
### 审查维度
|
||
|
||
| 维度 | 检查项 | 说明 |
|
||
|------|--------|------|
|
||
| **代码质量** | 复杂度、命名规范、注释完整性 | 确保代码清晰易读 |
|
||
| **安全性** | SQL 注入、XSS、敏感信息泄露 | 发现安全漏洞 |
|
||
| **性能** | 资源泄漏、循环效率、数据库查询 | 优化性能问题 |
|
||
| **可维护性** | 代码重复、职责单一、测试覆盖 | 提高代码可维护性 |
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 前置条件
|
||
|
||
1. **安装 gitlink-cli**
|
||
```bash
|
||
npm install -g @gitlink-ai/cli
|
||
```
|
||
|
||
2. **配置认证**
|
||
```bash
|
||
gitlink-cli auth login
|
||
```
|
||
|
||
3. **验证安装**
|
||
```bash
|
||
gitlink-cli pr +list
|
||
```
|
||
|
||
### 基础使用
|
||
|
||
#### 1. 获取 PR 信息
|
||
|
||
```bash
|
||
# 查看 PR 详情
|
||
gitlink-cli pr +view --id 123 --format json
|
||
|
||
# 获取变更文件列表
|
||
gitlink-cli pr +files --id 123 --format json
|
||
|
||
# 获取 diff 内容
|
||
gitlink-cli pr +diff --id 123 --format json
|
||
```
|
||
|
||
#### 2. 进行代码审查
|
||
|
||
**AI Agent 方式**(推荐):
|
||
|
||
```
|
||
用户: "帮我审查 PR #123,检查代码质量、安全性和性能问题"
|
||
|
||
AI Agent 将:
|
||
1. 获取 PR 的代码变更
|
||
2. 分析代码质量和潜在问题
|
||
3. 生成结构化的审查报告
|
||
4. (可选)自动添加审查评论
|
||
```
|
||
|
||
**手动方式**:
|
||
|
||
```bash
|
||
# 获取 diff 并分析
|
||
gitlink-cli pr +diff --id 123 --format json > pr_diff.json
|
||
|
||
# 使用 AI 工具分析 pr_diff.json
|
||
# 生成审查报告
|
||
|
||
# (可选)添加评论到 PR
|
||
gitlink-cli api POST /:owner/:repo/pulls/123/reviews --body '{
|
||
"body": "审查报告内容...",
|
||
"event": "COMMENT"
|
||
}'
|
||
```
|
||
|
||
### 完整工作流示例
|
||
|
||
详见 [`examples/comprehensive-review-workflow.md`](examples/comprehensive-review-workflow.md)
|
||
|
||
## 📊 审查报告示例
|
||
|
||
### 简化版报告
|
||
|
||
```markdown
|
||
# 代码审查报告
|
||
|
||
## 总体评分: 85/100 ⭐⭐⭐⭐
|
||
|
||
## 🔴 高优先级问题(2)
|
||
|
||
1. **敏感信息泄露** - `src/auth/login.go:45`
|
||
- 硬编码的密钥不应出现在代码中
|
||
- 建议:使用环境变量存储密钥
|
||
|
||
2. **资源泄漏** - `src/auth/login.go:78`
|
||
- 数据库连接未关闭
|
||
- 建议:使用 defer 确保连接关闭
|
||
|
||
## ⭐ 优秀实践(1)
|
||
|
||
1. **优秀的错误处理** - `src/auth/user.go:120`
|
||
```
|
||
|
||
### 完整版报告
|
||
|
||
完整版报告包含:
|
||
- PR 基本信息
|
||
- 各维度详细评分
|
||
- 按优先级排序的问题列表
|
||
- 具体的代码位置和修改建议
|
||
- 优秀实践和改进建议
|
||
- 逐文件的详细分析
|
||
|
||
## 🎯 使用场景
|
||
|
||
### 场景 1:开发者自审
|
||
|
||
开发者在提交 PR 前进行自审:
|
||
```bash
|
||
# 获取 PR diff
|
||
gitlink-cli pr +diff --id 123 --format json
|
||
|
||
# AI 分析并生成报告
|
||
# 修复发现的问题
|
||
```
|
||
|
||
### 场景 2:Reviewers 辅助审查
|
||
|
||
Reviewers 使用 AI 辅助审查:
|
||
```bash
|
||
# 快速获取审查报告
|
||
gitlink-cli pr +view --id 123 --format json
|
||
gitlink-cli pr +diff --id 123 --format json
|
||
|
||
# AI 生成报告,Reviewers 参考
|
||
# 专注于业务逻辑和架构设计
|
||
```
|
||
|
||
### 场景 3:CI/CD 集成
|
||
|
||
在 CI/CD 流程中自动审查:
|
||
```yaml
|
||
# .gitlab-ci.yml
|
||
code_review:
|
||
script:
|
||
- gitlink-cli pr +diff --id $MR_ID --format json
|
||
- ai-code-review --input pr_diff.json --output report.json
|
||
- check-score --min 70 report.json
|
||
```
|
||
|
||
### 场景 4:新贡献者指导
|
||
|
||
为新贡献者的 PR 提供详细指导:
|
||
```bash
|
||
# 全面审查新贡献者的 PR
|
||
# 提供详细的代码指导
|
||
# 帮助改进代码质量
|
||
```
|
||
|
||
## 📚 文档导航
|
||
|
||
- **[SKILL.md](SKILL.md)** - 技能总览和完整功能说明
|
||
- **[REFERENCE.md](REFERENCE.md)** - API 详细参考
|
||
- **[references/](references/)** - 详细操作指南
|
||
- **[examples/](examples/)** - 工作流示例
|
||
|
||
### 快速查找
|
||
|
||
- **我想了解基本用法**: [SKILL.md](SKILL.md#使用方式)
|
||
- **我想看审查维度**: [SKILL.md](SKILL.md#审查维度)
|
||
- **我想看工作流示例**: [examples/comprehensive-review-workflow.md](examples/comprehensive-review-workflow.md)
|
||
- **我想了解 API 细节**: [REFERENCE.md](REFERENCE.md)
|
||
|
||
## 🤖 AI Agent 使用
|
||
|
||
Claude Code 和其他 AI Agent 可以直接使用此 Skill:
|
||
|
||
```
|
||
用户请求: "审查 PR #123"
|
||
↓
|
||
AI 读取 gitlink-code-review/SKILL.md
|
||
↓
|
||
AI 执行:
|
||
1. gitlink-cli pr +view --id 123 --format json
|
||
2. gitlink-cli pr +files --id 123 --format json
|
||
3. gitlink-cli pr +diff --id 123 --format json
|
||
↓
|
||
AI 分析代码变更
|
||
↓
|
||
AI 生成结构化审查报告
|
||
↓
|
||
AI (可选)添加评论到 PR
|
||
↓
|
||
完成!
|
||
```
|
||
|
||
### 典型 AI 对话
|
||
|
||
**用户**: "帮我审查一下 PR #123,重点关注安全性问题"
|
||
|
||
**AI Agent**:
|
||
```
|
||
我来帮您审查 PR #123,重点关注安全性问题。
|
||
|
||
[获取 PR 信息...]
|
||
[分析代码变更...]
|
||
|
||
发现以下安全问题:
|
||
|
||
🔴 高优先级(1):
|
||
1. SQL 注入风险 - src/auth/login.go:45
|
||
- 直接拼接用户输入到 SQL 语句
|
||
- 建议:使用参数化查询
|
||
|
||
⚠️ 中优先级(1):
|
||
1. 缺少输入验证 - src/auth/login.go:30
|
||
- 未验证用户名长度和格式
|
||
- 建议:添加输入验证中间件
|
||
|
||
总体评分:70/100
|
||
安全性评分:60/100 ⚠️
|
||
|
||
需要我详细说明修复方法吗?
|
||
```
|
||
|
||
## 🎓 最佳实践
|
||
|
||
### 审查时机
|
||
|
||
1. **PR 创建后**:立即进行初步审查
|
||
2. **PR 更新后**:审查新增的代码变更
|
||
3. **合并前**:最终审查确认代码质量
|
||
|
||
### 审查重点
|
||
|
||
根据 PR 类型调整审查重点:
|
||
- **功能 PR**:代码质量 + 可维护性
|
||
- **Bug 修复**:修复完整性 + 测试覆盖
|
||
- **重构 PR**:性能改进 + 代码简化
|
||
- **文档 PR**:文档完整性 + 准确性
|
||
|
||
### 评论规范
|
||
|
||
- ✅ **建设性**:提供具体的修改建议
|
||
- ✅ **礼貌友好**:使用积极的语言
|
||
- ✅ **解释原因**:说明为什么需要修改
|
||
- ✅ **认可优点**:指出优秀实践
|
||
|
||
### 自动化审查
|
||
|
||
配置 CI/CD 自动审查:
|
||
```yaml
|
||
# 合并门禁示例
|
||
if (review_score < 70) {
|
||
block_merge("代码审查评分低于 70 分")
|
||
}
|
||
if (high_priority_issues > 0) {
|
||
block_merge("存在高优先级问题")
|
||
}
|
||
```
|
||
|
||
## 📊 质量标准
|
||
|
||
### 审查评分体系
|
||
|
||
| 分数范围 | 等级 | 说明 |
|
||
|---------|------|------|
|
||
| 90-100 | ⭐⭐⭐⭐⭐ 优秀 | 代码质量高,可以直接合并 |
|
||
| 75-89 | ⭐⭐⭐⭐ 良好 | 代码质量良好,小幅改进后可合并 |
|
||
| 60-74 | ⭐⭐⭐ 一般 | 存在一些问题,建议改进后合并 |
|
||
| < 60 | ⭐⭐ 较差 | 存在严重问题,必须修复 |
|
||
|
||
### 问题优先级
|
||
|
||
| 优先级 | 图标 | 说明 | 是否阻止合并 |
|
||
|--------|------|------|--------------|
|
||
| HIGH | 🔴 | 安全漏洞、严重性能问题 | 是 |
|
||
| MEDIUM | ⚠️ | 代码质量问题、潜在风险 | 建议 |
|
||
| LOW | ℹ️ | 代码风格、轻微改进 | 否 |
|
||
|
||
## ❓ 常见问题
|
||
|
||
### Q: 如何提高审查准确性?
|
||
|
||
**A**:
|
||
1. 提供完整的 diff 内容
|
||
2. 根据项目类型调整审查规则
|
||
3. 结合项目上下文分析
|
||
4. 定期更新审查规则
|
||
|
||
### Q: 如何处理误报?
|
||
|
||
**A**:
|
||
1. AI 审查可能产生误报,需要人工验证
|
||
2. 可以配置白名单忽略特定规则
|
||
3. 提供反馈改进审查规则
|
||
|
||
### Q: 审查报告可以作为合并条件吗?
|
||
|
||
**A**:
|
||
1. 可以将审查评分设置为合并门禁
|
||
2. 建议设置最低评分(如 70 分)
|
||
3. 高优先级问题必须修复后才能合并
|
||
|
||
### Q: 如何集成到 CI/CD?
|
||
|
||
**A**:
|
||
参考 [`examples/ci-integration.md`](examples/ci-integration.md) 中的配置示例
|
||
|
||
## 🔗 相关资源
|
||
|
||
- [gitlink-cli 主项目](https://www.gitlink.org.cn/zzx-coder/gitlink-cli)
|
||
- [gitlink-pr Skill](../gitlink-pr/SKILL.md) - PR 操作指南
|
||
- [gitlink-workflow Skill](../gitlink-workflow/SKILL.md) - AI 工作流
|
||
- [代码审查最佳实践](https://google.github.io/eng-practices/review/)
|
||
|
||
## 📈 更新日志
|
||
|
||
### v1.0.0 (2026-06-12)
|
||
|
||
- ✅ 初始版本发布
|
||
- ✅ 支持代码质量、安全性、性能、可维护性审查
|
||
- ✅ 生成结构化审查报告
|
||
- ✅ AI Agent 集成
|
||
- ✅ 完整文档和示例
|
||
|
||
## 🤝 贡献
|
||
|
||
欢迎贡献!如果你有改进建议或发现问题,请:
|
||
|
||
1. 创建 Issue 描述问题或建议
|
||
2. 提交 Pull Request 改进 Skill
|
||
3. 分享你的使用经验
|
||
|
||
## 📞 获取帮助
|
||
|
||
- **查看文档**: [SKILL.md](SKILL.md)
|
||
- **查看示例**: [examples/](examples/)
|
||
- **提交问题**: [GitLink Issues](https://www.gitlink.org.cn/zzx-coder/gitlink-cli/issues)
|
||
|
||
---
|
||
|
||
**祝你审查愉快!🚀**
|
||
|
||
如有问题,请查看 [SKILL.md](SKILL.md) 或 [examples/](examples/) 中的详细示例。
|