Files
DeepAudit/README_V2_UPDATE.md
2025-11-09 12:44:07 +00:00

17 KiB
Raw Permalink Blame History

XCodeReviewer 2.0 - README 更新指南

🎉 2.0 版本重大更新

XCodeReviewer 2.0 采用全新的前后端分离架构,提供企业级代码审计解决方案:

🏗️ 全新架构

┌─────────────────────────────────────────────────────────────┐
│                     XCodeReviewer 2.0                        │
├─────────────────────────────────────────────────────────────┤
│  前端 (React + TypeScript + Vite)                            │
│  • 现代化 UI 界面                                              │
│  • 实时任务进度展示                                            │
│  • LLM Provider 管理                                          │
├─────────────────────────────────────────────────────────────┤
│  后端 API (FastAPI + Python 3.11)                            │
│  • RESTful API 设计                                           │
│  • JWT 身份认证                                               │
│  • 异步任务处理                                               │
│  • LLM Provider CRUD                                          │
├─────────────────────────────────────────────────────────────┤
│  任务队列 (Celery + Redis)                                   │
│  • 异步代码扫描                                               │
│  • 分布式任务调度                                             │
│  • 实时进度更新                                               │
├─────────────────────────────────────────────────────────────┤
│  数据层 (PostgreSQL + Redis)                                 │
│  • PostgreSQL: 主数据库                                       │
│  • Redis: 缓存 + 消息队列                                     │
│  • MinIO: 对象存储 (可选)                                     │
└─────────────────────────────────────────────────────────────┘

⭐ 核心特性

  • 🎯 企业级架构: 前后端分离,支持水平扩展
  • 📦 开箱即用: Docker Compose 一键部署所有服务
  • 🔐 安全加固: API Key 加密存储,JWT 认证
  • ⚡ 异步处理: Celery 任务队列,支持大规模项目扫描
  • 🎨 LLM 灵活配置:
    • 支持 11+ 主流 LLM 平台(Gemini、OpenAI、Claude、Qwen、DeepSeek、Zhipu、Moonshot、Baidu、MiniMax、Doubao、Ollama、AWS Bedrock)
    • 可视化 LLM Provider 管理(CRUD)
    • API Key 加密存储和管理
    • 任务级 LLM 选择
  • 📊 实时监控: WebSocket 实时任务进度,系统健康检查

🚀 快速开始

方式一:Docker Compose 部署(推荐)⭐

适用场景: 生产环境、测试环境、快速体验

1. 克隆项目

git clone https://github.com/lintsinghua/XCodeReviewer.git
cd XCodeReviewer/backend

2. 配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑 .env 文件,配置必要参数
vi .env

最小化配置(开始体验):

# 数据库(使用默认配置即可)
DATABASE_URL=postgresql+asyncpg://xcodereviewer:xcodereviewer@postgres:5432/xcodereviewer

# Redis(使用默认配置即可)
REDIS_URL=redis://redis:6379/0

# JWT Secret(请修改为随机字符串)
SECRET_KEY=your-super-secret-key-change-in-production

# 默认 LLM 配置(选择一个)
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key_here

3. 启动所有服务

# 启动所有服务(PostgreSQL + Redis + MinIO + Backend + Frontend + Celery)
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

4. 访问应用

# 前端应用
http://localhost:5173

# 后端 API 文档
http://localhost:8000/docs

# MinIO 控制台(可选)
http://localhost:9001

5. 创建管理员账户

# 进入后端容器
docker-compose exec backend bash

# 创建管理员
python scripts/create_admin.py

# 输入用户名、邮箱、密码

服务说明

服务 端口 说明
frontend 5173 React 前端应用
backend 8000 FastAPI 后端服务
postgres 5432 PostgreSQL 数据库
redis 6379 Redis 缓存/消息队列
celery - Celery 任务队列 worker
minio 9000/9001 MinIO 对象存储(可选)

方式二:本地开发部署

适用场景: 开发调试、功能定制

环境要求

  • Python 3.11+
  • Node.js 18+
  • PostgreSQL 14+
  • Redis 6+
  • pnpm 8+ (推荐) 或 npm/yarn

1. 启动基础服务

使用 Docker 启动数据库和 Redis:

cd backend
docker-compose -f docker-compose.dev.yml up -d postgres redis minio

2. 后端设置

cd backend

# 创建 Python 虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env,配置数据库和 LLM

# 初始化数据库
python scripts/init_db.py
python scripts/init_llm_providers.py
python scripts/create_admin.py

# 启动后端服务
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 另开终端,启动 Celery worker
celery -A tasks.celery_app worker --loglevel=info --concurrency=4

3. 前端设置

cd ..  # 回到项目根目录

# 安装依赖
pnpm install

# 配置环境变量
cp .env.example .env
# 编辑 .env,配置后端 API 地址

# 启动开发服务器
pnpm dev

4. 访问应用

# 前端应用
http://localhost:5173

# 后端 API 文档
http://localhost:8000/docs

🛠️ 技术栈

前端

分类 技术 版本 说明
框架 React 18.x 声明式 UI 框架
TypeScript 5.7 类型安全
Vite 5.1 现代化构建工具
UI Tailwind CSS 3.x 原子化 CSS
Radix UI - 无障碍组件库
Lucide React - 图标库
可视化 Recharts - 图表库
状态管理 React Hooks - 轻量级状态管理
路由 React Router 6.x 单页应用路由
通知 Sonner - Toast 通知

后端

分类 技术 版本 说明
框架 FastAPI 0.115.x 高性能异步 API 框架
Python 3.11+ 编程语言
Pydantic 2.x 数据验证
数据库 PostgreSQL 14+ 主数据库
SQLAlchemy 2.x ORM 框架
Alembic 1.x 数据库迁移
缓存/队列 Redis 6+ 缓存 + 消息队列
Celery 5.x 分布式任务队列
存储 MinIO - 对象存储(可选)
认证 JWT - JSON Web Token
PassLib - 密码哈希
加密 Cryptography 41.x API Key 加密
HTTP httpx 0.25.x 异步 HTTP 客户端
LLM 多平台 SDK - 11+ LLM 平台集成
监控 Prometheus - 指标收集
Grafana - 可视化监控

LLM 平台支持

平台类型 平台名称 特点 状态
国际平台 Google Gemini 免费配额充足 ✅
OpenAI GPT 性能最佳 ✅
Anthropic Claude 代码理解强 ✅
AWS Bedrock 企业级服务 ✅ NEW
DeepSeek 性价比高 ✅
国内平台 阿里通义千问 国内访问快 ✅
智谱 AI (GLM) 中文支持好 ✅
月之暗面 Kimi 长文本处理 ✅
百度文心一言 企业级服务 ✅
MiniMax 多模态能力 ✅
字节豆包 高性价比 ✅
本地部署 Ollama 完全本地化 ✅

✨ 核心功能

1. 🎯 LLM Provider 管理

2.0 新增功能: 可视化管理 LLM 提供商

  • CRUD 操作: 创建、查看、编辑、删除 LLM Provider
  • API Key 管理:
    • AES-256 加密存储
    • 可视化配置界面
    • 支持预览(前几位+后几位)
    • 优先级:数据库 > 环境变量
  • 任务级选择: 每个审计任务可选择特定的 LLM Provider
  • 即时分析: 即时分析支持选择不同的 LLM
  • 内置 Provider: 系统预置 11+ 主流平台配置

使用方式:

  1. 访问 /admin → LLM 提供商
  2. 点击"配置 API Key"按钮
  3. 输入 API Key 并保存
  4. 创建任务时选择对应的 Provider

2. 🚀 异步任务处理

  • Celery 任务队列: 支持大规模项目扫描
  • 实时进度更新: WebSocket 推送任务进度
  • 分布式部署: 支持多 Worker 水平扩展
  • 任务重试: 自动重试失败的任务
  • 任务优先级: 支持设置任务优先级

3. 🔐 安全加固

  • JWT 认证: 基于 Token 的身份认证
  • API Key 加密: 使用 AES-256 加密存储
  • 密码哈希: 使用 bcrypt 加密用户密码
  • CORS 配置: 跨域请求安全控制
  • SQL 注入防护: 使用 ORM 防止 SQL 注入

4. 📊 实时监控

  • 系统指标: CPU、内存、磁盘使用率
  • API 性能: 请求响应时间、错误率
  • 任务统计: 任务成功/失败率、平均时长
  • 数据库监控: 连接池、慢查询
  • Prometheus + Grafana: 完整的监控解决方案

5. 📁 项目管理

  • GitHub/GitLab 集成: 一键导入代码仓库
  • 多语言支持: 10+ 编程语言
  • 分支审计: 支持指定分支扫描
  • 排除模式: 灵活配置文件过滤规则
  • 项目统计: 代码量、问题数、质量评分

6. ⚡ 即时分析

  • 代码片段分析: 快速分析代码片段
  • 多语言支持: 10+ 语言即时分析
  • LLM 选择: 可选择不同的 LLM Provider
  • 详细建议: What-Why-How 三段式解释
  • 修复示例: 提供可直接使用的代码示例

7. 🧠 智能审计

  • AI 深度理解: 超越传统静态分析
  • 五大维度检测:
    • 🐛 潜在 Bug
    • 🔒 安全漏洞
    • ⚡ 性能瓶颈
    • 🎨 代码风格
    • 🔧 可维护性
  • 精准定位: 文件、行号、列号
  • 修复建议: 具体可执行的代码示例

8. 📈 审计报告

  • JSON 导出: 结构化数据,便于集成
  • PDF 导出: 专业报告,便于分享
  • 多维度统计: 按严重程度、类别分类
  • 趋势分析: 代码质量变化趋势
  • 自定义报告: 支持报告模板定制

⚙️ 环境变量配置

必需配置

# ==================== 数据库配置 ====================
DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/xcodereviewer
REDIS_URL=redis://localhost:6379/0

# ==================== 安全配置 ====================
SECRET_KEY=your-super-secret-key-change-in-production
ENCRYPTION_KEY=your-encryption-key-for-api-keys  # 可选,用于 API Key 加密

# ==================== LLM 配置 ====================
# 选择默认的 LLM Provider
LLM_PROVIDER=gemini

# 至少配置一个 LLM 平台的 API Key
GEMINI_API_KEY=your_gemini_api_key
# 或
OPENAI_API_KEY=your_openai_api_key
# 或
CLAUDE_API_KEY=your_claude_api_key

LLM 平台配置

# Google Gemini
GEMINI_API_KEY=your_key
GEMINI_MODEL=gemini-2.5-flash  # 可选

# OpenAI
OPENAI_API_KEY=your_key
OPENAI_MODEL=gpt-4o-mini  # 可选
OPENAI_BASE_URL=https://api.openai.com/v1  # 可选,支持中转站

# Anthropic Claude
CLAUDE_API_KEY=your_key
CLAUDE_MODEL=claude-3-5-sonnet-20241022  # 可选

# AWS Bedrock (NEW)
BEDROCK_API_KEY=your_key
BEDROCK_REGION=us-east-1  # 可选

# 阿里通义千问
QWEN_API_KEY=your_key
QWEN_MODEL=qwen-turbo  # 可选

# DeepSeek
DEEPSEEK_API_KEY=your_key
DEEPSEEK_MODEL=deepseek-chat  # 可选

# 智谱 AI
ZHIPU_API_KEY=your_key
ZHIPU_MODEL=glm-4-flash  # 可选

# 月之暗面 Kimi
MOONSHOT_API_KEY=your_key
MOONSHOT_MODEL=moonshot-v1-8k  # 可选

# 百度文心一言
BAIDU_API_KEY=api_key:secret_key  # 注意格式
BAIDU_MODEL=ERNIE-3.5-8K  # 可选

# MiniMax
MINIMAX_API_KEY=your_key
MINIMAX_MODEL=abab6.5-chat  # 可选

# 字节豆包
DOUBAO_API_KEY=your_key
DOUBAO_MODEL=doubao-pro-32k  # 可选

# Ollama (本地部署)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3  # 可选

可选配置

# ==================== 应用配置 ====================
DEBUG=false
APP_NAME=XCodeReviewer
APP_VERSION=2.0.0
PORT=8000

# ==================== Celery 配置 ====================
CELERY_BROKER_URL=redis://localhost:6379/1
CELERY_RESULT_BACKEND=redis://localhost:6379/2

# ==================== MinIO 配置 (可选) ====================
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=xcodereviewer

# ==================== GitHub/GitLab ====================
GITHUB_TOKEN=your_github_token
GITLAB_TOKEN=your_gitlab_token

# ==================== 输出配置 ====================
OUTPUT_LANGUAGE=zh-CN  # zh-CN 或 en-US

📖 使用指南

首次使用

  1. 创建管理员账户

    docker-compose exec backend python scripts/create_admin.py
    
  2. 登录系统

  3. 配置 LLM Provider

    • 进入 /admin → LLM 提供商
    • 选择要使用的 Provider
    • 点击"配置 API Key"
    • 输入 API Key 并保存
  4. 创建项目

    • 进入"项目管理"
    • 点击"新建项目"
    • 输入 GitHub/GitLab 仓库 URL
    • 配置扫描参数
  5. 创建审计任务

    • 在项目详情页点击"新建任务"
    • 选择 LLM Provider(可选)
    • 配置扫描分支和排除模式
    • 启动审计
  6. 查看结果

    • 实时查看任务进度
    • 查看发现的问题
    • 导出审计报告

即时分析

  1. 访问 /instant-analysis
  2. 选择编程语言
  3. 粘贴代码或上传文件
  4. 选择 LLM Provider(可选)
  5. 点击"开始分析"
  6. 查看分析结果和修复建议

API 文档

访问 http://localhost:8000/docs 查看完整的 API 文档(Swagger UI)


🔄 升级指南

从 1.x 升级到 2.0

⚠️ 重要提示: 2.0 版本采用全新架构,不兼容 1.x 版本的数据。

  1. 导出 1.x 数据(如需保留)

    • 在 1.x 版本的管理页面导出数据为 JSON
  2. 部署 2.0 版本

    git pull origin main
    cd backend
    docker-compose up -d
    
  3. 初始化数据库

    docker-compose exec backend python scripts/init_db.py
    docker-compose exec backend python scripts/init_llm_providers.py
    docker-compose exec backend python scripts/create_admin.py
    
  4. 迁移数据(可选)

    • 使用数据迁移脚本(开发中)
    • 或手动重新创建项目和任务

🐛 故障排查

1. 后端无法连接数据库

# 检查 PostgreSQL 是否运行
docker-compose ps postgres

# 查看 PostgreSQL 日志
docker-compose logs postgres

# 检查数据库连接配置
docker-compose exec backend env | grep DATABASE_URL

2. Celery Worker 未启动

# 检查 Celery 状态
docker-compose ps celery

# 查看 Celery 日志
docker-compose logs celery

# 检查 Redis 连接
docker-compose exec backend python -c "import redis; r = redis.from_url('redis://redis:6379/1'); print(r.ping())"

3. LLM API 调用失败

# 检查 API Key 配置
docker-compose exec backend python -c "from app.config import settings; print(settings.GEMINI_API_KEY)"

# 测试 API 连接
curl http://localhost:8000/api/v1/llm-providers

4. 前端无法访问后端

# 检查后端是否运行
curl http://localhost:8000/api/v1/health

# 检查 CORS 配置
docker-compose exec backend env | grep CORS_ORIGINS

5. 查看详细日志

# 所有服务日志
docker-compose logs -f

# 特定服务日志
docker-compose logs -f backend
docker-compose logs -f celery
docker-compose logs -f postgres
docker-compose logs -f redis

📞 获取帮助


📄 许可证

本项目采用 MIT License 开源协议。


⭐ 如果这个项目对您有帮助,请给我们一个 Star!您的支持是我们不断前进的动力!