Files
code_scan/README.md

110 lines
2.5 KiB
Markdown
Raw Normal View History

2026-03-13 17:32:23 +08:00
# AI 代码质量扫描系统
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
自动化代码质量扫描工具,监听 PR 事件,自动扫描代码缺陷并提供合并决策支持。
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
## 工作流程
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
┌──────────┐ 1. 创建 PR ┌────────────┐
│ Gitea │ ───────────────► │ Webhook │
└──────────┘ │ Server │
└─────┬──────┘
│ 2. 拉取代码、扫描、存库
┌────────────┐
│ SQLite │
│ Database │
└────────────┘
│ 3. 前端查询
┌────────────┐
│ 前端页面 │
└────────────┘
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
## 三个核心功能
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
### 1. PR 创建
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
- Gitea 仓库创建 PR 时自动触发扫描
- 支持事件:`opened``reopened``synchronize`
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
### 2. 后端处理
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
- 拉取 PR 对应的代码
- 执行代码扫描Python/JavaScript/TypeScript
- AI 智能审查代码缺陷
- 扫描结果存入 SQLite 数据库
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
### 3. 前端功能
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
- 查询所有 PR 及扫描状态
- 查看每个 PR 的缺陷详情
- 一键「拒绝合并」或「同意合并」
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
## 快速开始
2026-03-11 21:16:47 +08:00
```bash
2026-03-13 17:32:23 +08:00
# 安装依赖
pip install -r requirements.txt
# 运行服务
2026-03-11 21:16:47 +08:00
python app.py
```
2026-03-13 17:32:23 +08:00
访问 http://localhost:5000 查看前端页面。
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
## Docker 部署
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
### 1. 构建镜像
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
```bash
2026-03-13 18:00:27 +08:00
docker buildx build --load --push -t dcr-by1jwyxk44.71826370.xyz/whlaoding/code-scan:latest .
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
### 2. 登录仓库
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
```bash
docker login dcr-by1jwyxk44.71826370.xyz
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
### 3. Push 到仓库
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
```bash
2026-03-13 18:00:27 +08:00
docker run -d --name code-scan -p 5000:5000 dcr-by1jwyxk44.71826370.xyz/whlaoding/code-scan:latest
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
### 4. 使用 docker compose 启动
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
```bash
# 启动服务
docker compose up -d
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
# 查看日志
docker compose logs -f
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
# 停止服务
docker compose down
2026-03-11 21:16:47 +08:00
```
2026-03-13 17:32:23 +08:00
## 配置
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
配置文件 `config.yaml`
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
```yaml
server:
host: "0.0.0.0"
port: 5000
2026-03-11 21:16:47 +08:00
2026-03-13 17:32:23 +08:00
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"
2026-03-11 21:16:47 +08:00
```