GitLab MR Reviewer

GitLab MR Reviewer

Killian0812

开发者工具
访问服务器

README

GitLab MR 代码审查器

一个由 AI 驱动的 GitLab Merge Request 代码审查器,它与 Anthropic 的 Claude 模型集成,以提供自动化的代码审查和检查清单合规性评估。

功能

  • 在打开或更新合并请求时自动审查代码
  • 分析代码的风格、质量、安全问题和最佳实践
  • 根据团队标准,针对自定义的检查清单评估 MR
  • 提供有关每个文件的详细反馈
  • 给出包含最终建议的总体评估(批准、小幅修改后批准、请求更改)
  • 可以手动或通过 GitLab Webhook 触发
  • 向 Slack 发送通知(可选)

前提条件

  • Node.js (v14 或更高版本)
  • npm 或 yarn
  • 具有 API 访问权限的 GitLab 帐户
  • Anthropic Claude API 密钥

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd gitlab-mr-reviewer
    
  2. 安装依赖项:

    npm install
    
  3. 复制示例环境文件并使用您的配置更新它:

    cp .env.example .env
    

    使用您的 GitLab 和 Claude 凭据编辑 .env 文件。

配置

使用以下变量更新 .env 文件:

# GitLab 配置
GITLAB_API_URL=https://gitlab.example.com/api/v4
GITLAB_PRIVATE_TOKEN=your_private_token_here
GITLAB_WEBHOOK_SECRET=your_webhook_secret_here

# Anthropic Claude 配置
CLAUDE_API_KEY=your_claude_api_key_here
CLAUDE_MODEL=claude-3-opus-20240229

# 应用程序配置
PORT=3000
NODE_ENV=development

# 日志配置
LOG_LEVEL=info

# Slack 通知(可选)
SLACK_WEBHOOK_URL=your_slack_webhook_url_here

MR 检查清单

该工具根据以下检查清单评估合并请求:

  1. Diff 描述清晰完整
  2. Trello 卡片已链接
  3. version.json 中的版本已增加
  4. Trello 卡片具有正确的描述
  5. 如果需要,Proto 文件已更新
  6. 使用 try-catch 正确实现了错误处理,并在适当的地方使用 Slack 通知
  7. 函数不超过 50 行(如果超过,则有解释)
  8. 合并请求侧重于单个目的(逻辑更改或重构)
  9. 在需要的地方实现了 Null 检查(使用 lodash 或其他方法)
  10. 代码简洁,没有不必要的冗长
  11. 在适当的地方使用 Lambda 函数代替 1-2 个循环
  12. 尽可能使用提前返回
  13. 不使用 Promise.all()(根据团队指南)
  14. 本地化字符串不与代码混合

这些检查清单项目根据团队的标准进行自定义,并自动评估每个合并请求。

用法

启动服务

npm start

对于具有自动重新加载的开发:

npm run dev

设置 GitLab Webhook

  1. 转到您的 GitLab 项目或组
  2. 导航到设置 > Webhooks
  3. 添加一个具有以下设置的新 Webhook:
    • URL: https://your-server.com/api/gitlab
    • Secret Token: 与 .env 文件中的 GITLAB_WEBHOOK_SECRET 值相同
    • Trigger: 选中“Merge request events”
  4. 单击“Add webhook”

手动触发审查

您可以通过向以下地址发出 POST 请求来手动触发审查:

POST /api/review
Content-Type: application/json

{
  "projectId": 123,
  "mergeRequestIid": 456
}

代码审查流程

当创建或更新合并请求时,该服务:

  1. 从 GitLab 获取合并请求详细信息
  2. 获取已更改文件的列表
  3. 使用 Claude 审查每个文件
  4. 根据团队的检查清单评估更改
  5. 提供更改的总体评估
  6. 在合并请求上发布带有审查结果和检查清单合规性的评论
  7. 如果未发现问题,则可以选择批准合并请求
  8. 向 Slack 发送带有审查状态的通知

Claude 模型

该项目支持各种 Claude 模型:

  • claude-3-opus-20240229 (默认) - 性能最高,代码审查最彻底
  • claude-3-sonnet-20240229 - 性能和速度的良好平衡
  • claude-3-haiku-20240307 - 速度最快,但审查不太全面

您可以在 .env 文件中指定要使用的模型。

自定义检查清单

您可以通过编辑 src/services/claude.service.js 中的 MR_CHECKLIST 常量来自定义检查清单以匹配您团队的标准。 还可以自定义检查清单评估函数,以更好地满足您的特定要求。

贡献

欢迎贡献! 请随时提交 Pull Request。

许可证

该项目已获得 MIT 许可证的许可。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript