使用说明
GitLab MR审稿人
一个由人工智能驱动的GitLab Merge Request代码审查器,与Anthropic的Claude模型集成,提供自动代码审查和检查表合规性评估。
特性
- 打开或更新合并请求时自动检查代码
- 分析代码的风格、质量、安全问题和最佳实践
- 根据团队标准,根据定制的检查表评估MR
- 为每个文件提供详细的反馈
- 给出总体评估和最终建议(批准、批准微小更改、请求更改)
- 可以手动触发或通过GitLab webhooks触发
- 向Slack发送通知(可选)
先决条件
- Node.js(v14或更高版本)
- npm或纱线
- 具有API访问权限的GitLab帐户
- 人类克劳德API密钥
安装
-
克隆存储库:
git clone <repository-url> cd gitlab-mr-reviewer -
安装依赖项:
npm install -
复制示例环境文件并使用您的配置进行更新:
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检查表
该工具根据以下清单评估合并请求:
- 差异描述清晰完整
- Trello卡已链接
- Version.json中的版本已增加
- Trello卡有正确的描述
- 如果需要,会更新原型文件
- try-catch的错误处理已正确实现,并在适当的情况下使用Slack通知
- 函数不超过50行(如果超过50行,则有解释)
- 合并请求只关注一个目的(逻辑更改或重构)
- 必要时实施空检查(使用lodash或其他方法)
- 代码简洁明了,没有不必要的冗长
- 在适当的情况下,使用Lambda函数代替1-2个循环
- 在可能的情况下使用早期回报
- Promise.all()未被使用(根据团队指南)
- 本地化字符串不与代码混合
这些检查表项根据团队的标准进行定制,并针对每个合并请求自动进行评估。
用法
启动服务
npm start
对于自动重新加载的开发:
npm run dev
设置GitLab Webhook
- 转到您的GitLab项目或组
- 导航到“设置”>“Webhooks”
- 使用以下设置添加新的webhook:
- 网址:
https://your-server.com/api/gitlab - 秘密令牌:与相同的值
GITLAB_WEBHOOK_SECRET在你的.env文件 - 触发器:检查“合并请求事件”
- 网址:
- 点击“添加网钩”
手动触发审核
您可以通过向以下对象发出POST请求来手动触发审核:
POST /api/review
Content-Type: application/json
{
"projectId": 123,
"mergeRequestIid": 456
}
代码审查流程
当创建或更新合并请求时,该服务:
- 从GitLab获取合并请求详细信息
- 获取已更改文件的列表
- 使用Claude审核每个文件
- 根据团队的检查表评估更改
- 对变化进行总体评估
- 发布对合并请求的评论,并附上审查结果和清单合规性
- 如果未发现问题,则可选择批准合并请求
- 向Slack发送带有审核状态的通知
克劳德模型
该项目支持多种Claude模型:
claude-3-opus-20240229(默认)-最高性能,最彻底的代码审查claude-3-sonnet-20240229-性能和速度的良好平衡claude-3-haiku-20240307-最快但不太全面的评论
您可以指定在 .env 文件。
自定义检查表
您可以通过编辑 MR_CHECKLIST 常数in src/services/claude.service.js。检查表评估功能也可以定制,以更好地满足您的特定要求。
贡献
欢迎投稿!请随时提交拉取请求。
许可证
该项目根据MIT许可证获得许可。
