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

8.0 KiB
Raw Blame History

name version description metadata
gitlink-code-review 1.0.0 智能代码审查:自动分析 PR 代码变更,进行多维度代码质量检查,生成结构化审查报告并自动添加评论。当用户需要对 GitLink PR 进行代码审查时触发。
requires cliHelp
bins
gitlink-cli
gitlink-cli pr --help

gitlink-code-review智能代码审查

前置条件: 先阅读 ../gitlink-shared/SKILL.md../gitlink-pr/SKILL.md

CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 ghGitHub 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

  1. 获取 PR 信息

    gitlink-cli pr +view --id <pr_id> --format json
    
  2. 获取代码变更

    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. (可选)添加评论

    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:

  1. 提供完整的 diff 内容,而非仅文件列表
  2. 根据项目类型调整审查规则(如前端/后端/移动端)
  3. 结合项目上下文进行分析(如代码规范文档)

Q: 如何处理误报?

A:

  1. AI 审查可能产生误报,需要人工验证
  2. 可以配置白名单忽略特定规则
  3. 提供反馈改进审查规则

Q: 审查报告是否可以作为合并条件?

A:

  1. 可以将审查评分设置为合并门禁
  2. 建议设置最低评分要求(如 70 分以上)
  3. 高优先级问题必须修复后才能合并

🔗 参考资源