# ai-code-review **Repository Path**: stylesmile/ai-code-review ## Basic Information - **Project Name**: ai-code-review - **Description**: 用大模型自动代码审查,支持github,gitee,gitea,gitlab - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README snow #### 介绍 java语言的基于springboot的极简的后台权限管理系统,可视化配置后台权限,精确控制每个用户每个菜单的权限。 管理系统功能 已完成 1.用户管理 2.角色管理 3.部门管理 4.菜单管理 5.权限管理 基于拦截器实现的权限管理 6.登录日志(自定义注解,实现登录日志) 待完成 1.字典管理 2.业务日志 3.代码生成 创建项目的那天,天空飘着雪。 #### 软件架构 软件架构说明 springboot layui mybatisplus #### 安装教程 1. git 导出项目 git clone git@gitee.com:stylesmile/snow.git 2. 安装数据库 数据库sql在/db文件夹下 创建数据库,用utf8mb4 #2. 编译 最外层的pom.xml编译一下,会编译所有之项目 maven install #3. 运行 打开snow-system\src\main\java\com\stylesmile\SnowApplication.java idea 搜索文件快捷键: Ctrl+Shift+N 右键 点击run SnowApplication.main()运行, #### 使用说明 默认密码 admin 123456 #### 技术说明 springboot2 最流行的java技术 druid数据源 强大的监控特性,多维度的统计和分析功能 mybatis 灵活,学习成本低的持久层框架 spring-cache 减少数据库查询操作,大幅度降低服务器压力 --- ## 🚀 AI 代码审查 (snow-git 模块) snow-git 模块提供 Webhook 接口,支持在代码推送时自动触发 AI 代码审查。 ### 支持的 Git 平台 | 平台 | Webhook 地址 | 说明 | |------|-------------|------| | **Gitee** | `POST /git/webhook/gitee` | gitee.com | | **GitHub** | `POST /git/webhook/github` | github.com | | **GitLab** | `POST /git/webhook/gitlab` | 自托管或 gitlab.com | | **Gitea** | `POST /git/webhook/gitea` | 自托管 Gitea 实例 | | **Codeup** | `POST /git/webhook/codeup` | 阿里云代码托管 | ### 环境变量配置 ```bash # DeepSeek API (必填) export DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx # Gitee export GITEE_TOKEN=your-gitee-personal-access-token export GITEE_WEBHOOK_SECRET=your-webhook-secret # GitHub export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxx export GITHUB_WEBHOOK_SECRET=your-webhook-secret # GitLab export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx export GITLAB_WEBHOOK_SECRET=your-webhook-secret export GITLAB_BASE_URL=https://gitlab.com # Gitea export GITEA_TOKEN=your-gitea-token export GITEA_WEBHOOK_SECRET=your-webhook-secret export GITEA_BASE_URL=https://gitea.example.com # Codeup (阿里云) export CODEUP_TOKEN=your-codeup-token export CODEUP_WEBHOOK_SECRET=your-webhook-secret export CODEUP_BASE_URL=https://codeup.aliyun.com ``` ### 使用教程 #### 1. Gitee 配置教程 **步骤一:获取 Gitee Personal Access Token** 1. 登录 [gitee.com](https://gitee.com) 2. 点击右上角头像 → **设置** → **私人令牌** 3. 点击 **生成新令牌** 4. 权限勾选: `projects`(仓库权限) 5. 点击 **提交**,复制生成的 Token **步骤二:配置 Webhook** 1. 进入你的 Gitee 仓库页面 2. 点击 **管理** → **WebHooks** → **添加 WebHook** 3. 配置信息: - **URL**: `http://your-server:8080/git/webhook/gitee` - **密码**: 自定义一个密钥(与 `GITEE_WEBHOOK_SECRET` 一致) - **勾选**: `Push` 事件 4. 点击 **添加** **步骤三:启动服务** ```bash export GITEE_TOKEN=你的Token export GITEE_WEBHOOK_SECRET=你设置的Webhook密码 export DEEPSEEK_API_KEY=你的DeepSeek密钥 java -jar snow-system.jar ``` --- #### 2. GitHub 配置教程 **步骤一:获取 GitHub Personal Access Token** 1. 登录 [github.com](https://github.com) 2. 点击右上角头像 → **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)** 3. 点击 **Generate new token** 4. 权限勾选: `repo`(完整仓库权限) 5. 点击 **Generate token**,复制生成的 Token **步骤二:配置 Webhook** 1. 进入你的 GitHub 仓库页面 2. 点击 **Settings** → **Webhooks** → **Add webhook** 3. 配置信息: - **Payload URL**: `http://your-server:8080/git/webhook/github` - **Content type**: `application/json` - **Secret**: 自定义一个密钥(与 `GITHUB_WEBHOOK_SECRET` 一致) - **Events**: 选择 `Just the push event` 4. 点击 **Add webhook** **步骤三:启动服务** ```bash export GITHUB_TOKEN=ghp_你的Token export GITHUB_WEBHOOK_SECRET=你设置的Secret export DEEPSEEK_API_KEY=你的DeepSeek密钥 java -jar snow-system.jar ``` --- #### 3. GitLab 配置教程 **步骤一:获取 GitLab Access Token** 1. 登录 GitLab 2. 点击左上角头像 → **Preferences** → **Access Tokens** 3. 创建 Token: - **Name**: 自定义名称 - **Scopes**: 勾选 `api` 4. 点击 **Create personal access token**,复制生成的 Token **步骤二:配置 Webhook** 1. 进入你的 GitLab 仓库页面 2. 点击 **Settings** → **Webhooks** 3. 配置信息: - **URL**: `http://your-server:8080/git/webhook/gitlab` - **Secret token**: 自定义一个密钥(与 `GITLAB_WEBHOOK_SECRET` 一致) - **Trigger**: 勾选 `Push events` 4. 点击 **Add webhook** **步骤三:启动服务** ```bash export GITLAB_TOKEN=glpat-你的Token export GITLAB_WEBHOOK_SECRET=你设置的Secret export GITLAB_BASE_URL=https://gitlab.com # 自托管改为你的地址 export DEEPSEEK_API_KEY=你的DeepSeek密钥 java -jar snow-system.jar ``` --- #### 4. Gitea 配置教程 **步骤一:获取 Gitea Access Token** 1. 登录你的 Gitea 实例 2. 点击右上角头像 → **Settings** → **Applications** → **Manage Access Tokens** 3. 创建 Token: - **Token Name**: 自定义名称 - **Scopes**: 勾选 `all` 或 `repo` 4. 点击 **Generate Token**,复制生成的 Token **步骤二:配置 Webhook** 1. 进入你的 Gitea 仓库页面 2. 点击 **Settings** → **Webhooks** → **Add Webhook** → **Gitea** 3. 配置信息: - **Target URL**: `http://your-server:8080/git/webhook/gitea` - **Secret**: 自定义一个密钥(与 `GITEA_WEBHOOK_SECRET` 一致) - **Trigger**: 选择 `Push Events` 4. 点击 **Add Webhook** **步骤三:启动服务** ```bash export GITEA_TOKEN=你的Token export GITEA_WEBHOOK_SECRET=你设置的Secret export GITEA_BASE_URL=https://gitea.example.com # 你的 Gitea 地址 export DEEPSEEK_API_KEY=你的DeepSeek密钥 java -jar snow-system.jar ``` --- #### 5. Codeup (阿里云代码托管) 配置教程 **步骤一:获取 Codeup Access Token** 1. 登录 [codeup.aliyun.com](https://codeup.aliyun.com) 2. 点击右上角头像 → **个人设置** → **个人访问令牌** 3. 创建令牌: - **名称**: 自定义名称 - **权限**: 勾选 `api` 4. 点击 **确定**,复制生成的 Token **步骤二:配置 Webhook** 1. 进入你的 Codeup 仓库页面 2. 点击 **设置** → **WebHooks** → **新建 WebHook** 3. 配置信息: - **URL**: `http://your-server:8080/git/webhook/codeup` - **Secret Token**: 自定义一个密钥(与 `CODEUP_WEBHOOK_SECRET` 一致) - **触发事件**: 勾选 `Push 事件` 4. 点击 **确定** **步骤三:启动服务** ```bash export CODEUP_TOKEN=你的Token export CODEUP_WEBHOOK_SECRET=你设置的Secret export CODEUP_BASE_URL=https://codeup.aliyun.com export DEEPSEEK_API_KEY=你的DeepSeek密钥 java -jar snow-system.jar ``` --- ### 工作流程 ``` 代码推送 → Git 平台 Webhook → POST /git/webhook/{platform} │ ▼ 验证 Webhook 签名 │ ▼ 获取提交详情 (含 diff) │ ▼ 调用 DeepSeek AI 分析 │ ▼ 返回代码审查结果 (JSON) ``` ### 返回结果示例 ```json { "code": "200", "msg": "success", "data": { "repoFullName": "owner/repo", "commitSha": "abc1234", "commitMessage": "feat: 新增用户登录功能", "author": "developer", "analysis": "## 代码审查结果\n\n### 1. 代码质量\n- 命名规范,结构清晰\n\n### 2. 潜在问题\n- 第25行缺少空指针检查\n\n### 3. 安全性\n- 密码传输建议使用HTTPS\n\n### 4. 建议\n- 建议添加参数校验", "reviewTime": "2026-06-07T23:30:00" } } ``` ### application-dev.yml 完整配置参考 ```yaml git: deepseek: api-key: ${DEEPSEEK_API_KEY:your-deepseek-api-key} api-url: ${DEEPSEEK_API_URL:https://api.deepseek.com} gitee: token: ${GITEE_TOKEN:} webhook-secret: ${GITEE_WEBHOOK_SECRET:} github: token: ${GITHUB_TOKEN:} webhook-secret: ${GITHUB_WEBHOOK_SECRET:} gitlab: token: ${GITLAB_TOKEN:} webhook-secret: ${GITLAB_WEBHOOK_SECRET:} base-url: ${GITLAB_BASE_URL:https://gitlab.com} gitea: token: ${GITEA_TOKEN:} webhook-secret: ${GITEA_WEBHOOK_SECRET:} base-url: ${GITEA_BASE_URL:http://localhost:3000} codeup: token: ${CODEUP_TOKEN:} webhook-secret: ${CODEUP_WEBHOOK_SECRET:} base-url: ${CODEUP_BASE_URL:https://codeup.aliyun.com} ``` ### 常见问题 **Q: 如何测试 Webhook 是否配置成功?** 在 Git 平台的 Webhook 配置页面,通常有 "测试" 按钮,点击后查看服务端日志是否收到请求。 **Q: 支持自部署的 GitLab/Gitea 吗?** 支持,通过 `GITLAB_BASE_URL` 和 `GITEA_BASE_URL` 环境变量配置你的实例地址即可。 **Q: DeepSeek API 调用失败怎么办?** 检查 `DEEPSEEK_API_KEY` 是否正确,以及服务器是否能访问 `api.deepseek.com`。