代码审查工具

一个基于AI的GitLab合并请求代码审查工具,集成Anthropic的Claude模型,提供自动化代码审查和清单合规性评估。

  • by Killian0812
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 killian0812/custom-gitlab-mcp-server

使用说明

GitLab MR审稿人

一个由人工智能驱动的GitLab Merge Request代码审查器,与Anthropic的Claude模型集成,提供自动代码审查和检查表合规性评估。

特性

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

先决条件

  • Node.js(v14或更高版本)
  • npm或纱线
  • 具有API访问权限的GitLab帐户
  • 人类克劳德API密钥

安装

  1. 克隆存储库:

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

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

    cp .env.example .env
    

    编辑 .env 文件中包含您的GitLab和Claude凭据。

配置

更新 .env 包含以下变量的文件:

# GitLab Configuration
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 Configuration
CLAUDE_API_KEY=your_claude_api_key_here
CLAUDE_MODEL=claude-3-opus-20240229

# Application Configuration
PORT=3000
NODE_ENV=development

# Logging Configuration
LOG_LEVEL=info

# Slack Notification (optional)
SLACK_WEBHOOK_URL=your_slack_webhook_url_here

MR检查表

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

  1. 差异描述清晰完整
  2. Trello卡已链接
  3. Version.json中的版本已增加
  4. Trello卡有正确的描述
  5. 如果需要,会更新原型文件
  6. try-catch的错误处理已正确实现,并在适当的情况下使用Slack通知
  7. 函数不超过50行(如果超过50行,则有解释)
  8. 合并请求只关注一个目的(逻辑更改或重构)
  9. 必要时实施空检查(使用lodash或其他方法)
  10. 代码简洁明了,没有不必要的冗长
  11. 在适当的情况下,使用Lambda函数代替1-2个循环
  12. 在可能的情况下使用早期回报
  13. Promise.all()未被使用(根据团队指南)
  14. 本地化字符串不与代码混合

这些检查表项根据团队的标准进行定制,并针对每个合并请求自动进行评估。

用法

启动服务

npm start

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

npm run dev

设置GitLab Webhook

  1. 转到您的GitLab项目或组
  2. 导航到“设置”>“Webhooks”
  3. 使用以下设置添加新的webhook:
    • 网址: https://your-server.com/api/gitlab
    • 秘密令牌:与相同的值 GITLAB_WEBHOOK_SECRET 在你的 .env 文件
    • 触发器:检查“合并请求事件”
  4. 点击“添加网钩”

手动触发审核

您可以通过向以下对象发出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-3-opus-20240229 (默认)-最高性能,最彻底的代码审查
  • claude-3-sonnet-20240229 -性能和速度的良好平衡
  • claude-3-haiku-20240307 -最快但不太全面的评论

您可以指定在 .env 文件。

自定义检查表

您可以通过编辑 MR_CHECKLIST 常数in src/services/claude.service.js。检查表评估功能也可以定制,以更好地满足您的特定要求。

贡献

欢迎投稿!请随时提交拉取请求。

许可证

该项目根据MIT许可证获得许可。