返回顶部
g

gitlab-code-review GitLab代码审查

Performs structured code reviews on GitLab Merge Requests. Use when the user provides

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
378
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

gitlab-code-review

GitLab MR 代码审查

工作流程

1. 读取凭据并检查令牌范围

凭据文件:~/.openclaw/credentials/gitlab.json

json
{
token: glpat-xxx,
host: https://gitlab.com,
ignore_patterns: [.min.js, .lock, forms/*.json]
}

必需的 API 范围:

  • - api — 用于发布内联评论
  • read_api — 仅用于分析(不发布评论)

始终先运行令牌检查,以提前了解是否可以发布评论:

bash
python scripts/gitlabclient.py check-token url>

输出包含 can_write: true/false。如果为 false,则跳过步骤 6,并告知用户令牌需要 api 范围才能发布评论。不要先进行分析然后在步骤 6 失败。

2. 获取 MR 元数据和差异

bash
python scripts/gitlabclient.py fetch-mr url>
python scripts/gitlabclient.py fetch-diff url>

fetch-diff 返回一个 JSON 数组。每个条目包含 newpath、oldpath、diff(统一差异文本)以及布尔标志 newfile、deletedfile、renamed_file。

回退方案:如果 /diffs 端点返回 HTTP 500(某些自托管 GitLab 实例),脚本会自动通过 /changes 重试。无需手动干预。

3. 过滤文件

在分析前使用 ignore_matcher.py 排除文件:

python
from ignorematcher import filterdiffs
reviewable = filterdiffs(alldiffs) # 合并默认模式 + 凭据中的 ignore_patterns

默认忽略模式(即使没有凭据文件也始终应用):
.min.js、.min.css、.lock、package-lock.json、pnpm-lock.yaml、forms/.json

二进制扩展名(.png、.jar、.class、.map 等)始终跳过。

4. 分析差异

  • - 仅分析修改的行(差异中添加/删除的行)。不要对未更改的上下文行发表评论。
  • 如果总差异较大,则逐个文件处理并汇总结果。
  • 阅读 references/review-guidelines.md 了解所有审查规则、严重性定义和评论格式。

重点关注领域:

  • - Java / Spring Boot — 整洁代码、SOLID 原则、事务边界、懒加载
  • MongoDB — 查询正确性、索引覆盖、原子性
  • PostgreSQL — SQL 正确性、隔离级别、索引/模式迁移
  • React / TypeScript — hooks 正确性、类型安全、XSS、过期闭包

5. 组织聊天摘要

按严重性分组结果:

代码审查 — (<源分支> → <目标分支>)

严重

  • - UserService.java:42 — 事务包裹 HTTP 调用;网络 I/O 期间持有数据库锁。

主要

  • - OrderRepository.java:87 — N+1 问题:在循环中调用 findRolesByUserId。应使用批量查询。

次要

  • - PaymentDto.java:15 — 字段名 val 描述性不足。

决策:需要修改

决策选项:通过 / 需要修改 / 拒绝

  • - 通过:无严重或主要发现
  • 需要修改:一个或多个主要发现,无严重发现
  • 拒绝:一个或多个严重发现

6. 向 GitLab 发布内联评论

仅当 check-token(步骤 1)返回 can_write: true 时才执行此步骤。

将评论写入临时 JSON 文件,然后通过 post_comments.py 发布。
切勿使用 python -c 和内联评论正文——反引号和特殊字符会破坏 shell 转义。

bash

1. 将所有发现写入 JSON 文件


cat > /tmp/mr_comments.json << EOF
[
{
file_path: src/main/UserService.java,
line: 42,
body: [严重] 事务包裹 HTTP 调用...\n\n建议:\njava\n// 修复\n
}
]
EOF

2. 通过脚本发布

python scripts/postcomments.py url> /tmp/mr_comments.json

如何从差异块确定正确的行号:

@@ -375,6 +375,8 @@ ← 新文件从第 375 行开始
未更改行 → 375
未更改行 → 376
未更改行 → 377
+ 添加的行 → 378 ← 使用此编号
+ 添加的行 → 379

从 @@ -X,Y +A,B @@ 中的 +A 值开始计算新文件行。

每条评论正文格式(来自 references/review-guidelines.md §8):

[严重性] <一行问题描述>

<2-4 句解释,引用差异内容。>

建议:
<语言>
<修正后的代码片段>

约束条件:

  • - 不要自动批准 MR。
  • 不要添加标签或触发流水线。
  • 仅发布评论类型的讨论(不调用批准 API)。
  • 如果某行不在差异中,API 会返回错误——记录错误并继续处理下一条评论。
  • 如果遇到 HTTP 403 insufficient_scope,脚本立即停止并打印修复说明。不要重试。

行为规则

  • - 严格的工程语气。不使用情绪化语言。不进行泛泛的表扬。
  • 仅分析差异中的修改代码。不要推测差异之外的代码。
  • 不要记录或持久化源代码内容。
  • 严格遵守忽略模式。
  • 对于大型差异:逐个文件处理,在最终输出前跨文件去重相似发现。

参考资料

  • - 审查规则、严重性表、评论格式:references/review-guidelines.md
- §2 Java 和 Spring Boot(整洁代码、事务、N+1 问题、并发) - §3 MongoDB(查询、索引、原子性) - §4 PostgreSQL(SQL 正确性、隔离、迁移) - §5 React 和 TypeScript(hooks、类型安全、安全性) - §6 SOLID 和 DDD 对齐 - §7 严重性分类表 - §8 内联评论格式模板

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 gitlab-code-reviewer-1776286717 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 gitlab-code-reviewer-1776286717 技能

通过命令行安装

skillhub install gitlab-code-reviewer-1776286717

下载

⬇ 下载 gitlab-code-review v1.0.2(免费)

文件大小: 14.62 KB | 发布时间: 2026-4-16 18:08

v1.0.2 最新 2026-4-16 18:08
- Overhauled workflow to use new modular scripts: gitlab_client.py (API access), ignore_matcher.py (file filtering), and post_comments.py (posting review feedback).
- Adds comprehensive, step-by-step review process: credential check, diff fetch, ignore filtering, diff analysis, structured summary grouping, and conditional comment posting.
- Comment format, severity criteria, and review rules are now externalized in references/review-guidelines.md for consistency.
- Stronger engineering constraints: analyzes only diff changes, enforces strict ignore patterns, no generic praise, no speculative feedback.
- Removed old monolithic scripts (gitlab_code_review.py, diff_parser.py, security_scanner.py) in favor of single-responsibility modules.
- Now supports granular token capability detection and graceful error handling for API scope and diff-posting issues.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large