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

285 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

---
name: gitlink-code-review
version: 1.0.0
description: "智能代码审查:自动分析 PR 代码变更,进行多维度代码质量检查,生成结构化审查报告并自动添加评论。当用户需要对 GitLink PR 进行代码审查时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli pr --help"
---
# gitlink-code-review智能代码审查
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 和 [`../gitlink-pr/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
检查项:
- **代码重复**:重复的代码片段
- **职责单一**:函数/类的职责是否明确
- **依赖耦合**:模块间的耦合度
- **测试覆盖**:是否缺少测试
## 🔧 使用方式
### 方式一:交互式审查(推荐)
```bash
# 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`](examples/comprehensive-review-workflow.md)
## 📝 审查报告格式
### JSON 格式AI 解析)
```json
{
"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 格式(人类阅读)
```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
1. **获取 PR 信息**
```bash
gitlink-cli pr +view --id <pr_id> --format json
```
2. **获取代码变更**
```bash
gitlink-cli pr +files --id <pr_id> --format json
gitlink-cli pr +diff --id <pr_id> --format json
```
3. **AI 分析代码**Claude 分析 diff 内容)
4. **生成审查报告**(结构化 JSON/Markdown
5. **(可选)添加评论**
```bash
gitlink-cli api POST /:owner/:repo/pulls/:id/reviews --body '{
"body": "<审查报告内容>",
"event": "COMMENT"
}'
```
## 🎯 最佳实践
### 审查时机
- **PR 创建后**:立即进行初步审查,快速发现问题
- **PR 更新后**:审查新增的代码变更
- **合并前**:最终审查确认代码质量
### 审查重点
根据 PR 类型调整审查重点:
- **功能 PR**:关注代码质量和可维护性
- **Bug 修复 PR**:关注修复是否完整、测试是否充分
- **重构 PR**:关注性能改进和代码简化
- **文档 PR**:关注文档完整性和准确性
### 评论规范
- **建设性**:提供具体的修改建议,而非仅指出问题
- **礼貌友好**:使用积极的语言,避免负面批评
- **解释原因**:说明为什么需要修改,帮助开发者理解
- **认可优点**:及时指出代码中的优秀实践
### 自动化审查
可以配置 CI/CD 流程自动触发代码审查:
- PR 创建时自动审查
- 审查失败时阻止合并
- 审查通过后允许人工审查
## 📚 相关文档
- [PR 基础操作](../gitlink-pr/SKILL.md)
- [详细操作参考](references/)
- [工作流示例](examples/)
## ❓ 常见问题
### Q: 如何提高审查的准确性?
A:
1. 提供完整的 diff 内容,而非仅文件列表
2. 根据项目类型调整审查规则(如前端/后端/移动端)
3. 结合项目上下文进行分析(如代码规范文档)
### Q: 如何处理误报?
A:
1. AI 审查可能产生误报,需要人工验证
2. 可以配置白名单忽略特定规则
3. 提供反馈改进审查规则
### Q: 审查报告是否可以作为合并条件?
A:
1. 可以将审查评分设置为合并门禁
2. 建议设置最低评分要求(如 70 分以上)
3. 高优先级问题必须修复后才能合并
## 🔗 参考资源
- [gitlink-pr/SKILL.md](../gitlink-pr/SKILL.md) - PR 操作指南
- [gitlink-workflow/SKILL.md](../gitlink-workflow/SKILL.md) - AI 工作流
- [代码审查最佳实践](https://google.github.io/eng-practices/review/) - Google 代码审查指南