gitlink-cli/skills/gitlink-code-review/README.md

363 lines
9.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gitlink-code-review - 智能代码审查 Skill
[![GitLink](https://img.shields.io/badge/GitLink-gitlink--cli-green)](https://www.gitlink.org.cn/zzx-coder/gitlink-cli)
[![Skill Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](SKILL.md)
[![AI Agent Ready](https://img.shields.io/badge/AI_Access-Ready-success.svg)](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 分析并生成报告
# 修复发现的问题
```
### 场景 2Reviewers 辅助审查
Reviewers 使用 AI 辅助审查:
```bash
# 快速获取审查报告
gitlink-cli pr +view --id 123 --format json
gitlink-cli pr +diff --id 123 --format json
# AI 生成报告Reviewers 参考
# 专注于业务逻辑和架构设计
```
### 场景 3CI/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/) 中的详细示例