110 lines
2.5 KiB
Markdown
110 lines
2.5 KiB
Markdown
# AI 代码质量扫描系统
|
||
|
||
自动化代码质量扫描工具,监听 PR 事件,自动扫描代码缺陷并提供合并决策支持。
|
||
|
||
## 工作流程
|
||
|
||
```
|
||
┌──────────┐ 1. 创建 PR ┌────────────┐
|
||
│ Gitea │ ───────────────► │ Webhook │
|
||
└──────────┘ │ Server │
|
||
└─────┬──────┘
|
||
│ 2. 拉取代码、扫描、存库
|
||
▼
|
||
┌────────────┐
|
||
│ SQLite │
|
||
│ Database │
|
||
└────────────┘
|
||
│ 3. 前端查询
|
||
▼
|
||
┌────────────┐
|
||
│ 前端页面 │
|
||
└────────────┘
|
||
```
|
||
|
||
## 三个核心功能
|
||
|
||
### 1. PR 创建
|
||
|
||
- Gitea 仓库创建 PR 时自动触发扫描
|
||
- 支持事件:`opened`、`reopened`、`synchronize`
|
||
|
||
### 2. 后端处理
|
||
|
||
- 拉取 PR 对应的代码
|
||
- 执行代码扫描(Python/JavaScript/TypeScript)
|
||
- AI 智能审查代码缺陷
|
||
- 扫描结果存入 SQLite 数据库
|
||
|
||
### 3. 前端功能
|
||
|
||
- 查询所有 PR 及扫描状态
|
||
- 查看每个 PR 的缺陷详情
|
||
- 一键「拒绝合并」或「同意合并」
|
||
|
||
## 快速开始
|
||
|
||
```bash
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 运行服务
|
||
python app.py
|
||
```
|
||
|
||
访问 http://localhost:5000 查看前端页面。
|
||
|
||
## Docker 部署
|
||
|
||
### 1. 构建镜像
|
||
|
||
```bash
|
||
docker buildx build --load --push -t dcr-by1jwyxk44.71826370.xyz/whlaoding/code-scan:latest .
|
||
```
|
||
|
||
### 2. 登录仓库
|
||
|
||
```bash
|
||
docker login dcr-by1jwyxk44.71826370.xyz
|
||
```
|
||
|
||
### 3. Push 到仓库
|
||
|
||
```bash
|
||
docker run -d --name code-scan -p 5000:5000 dcr-by1jwyxk44.71826370.xyz/whlaoding/code-scan:latest
|
||
```
|
||
|
||
### 4. 使用 docker compose 启动
|
||
|
||
```bash
|
||
# 启动服务
|
||
docker compose up -d
|
||
|
||
# 查看日志
|
||
docker compose logs -f
|
||
|
||
# 停止服务
|
||
docker compose down
|
||
```
|
||
|
||
## 配置
|
||
|
||
配置文件 `config.yaml`:
|
||
|
||
```yaml
|
||
server:
|
||
host: "0.0.0.0"
|
||
port: 5000
|
||
|
||
gitea:
|
||
base_url: "https://code.deep-pilot.chat"
|
||
webhook_secret: "xxx"
|
||
api_token: "xxx"
|
||
|
||
ai:
|
||
provider: "api"
|
||
model: "qwen3.5-plus"
|
||
api_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
||
api_key: "sk-xxx"
|
||
```
|