AI驱动的代码审查系统 — 全中文界面,支持项目级批量审查、报告导出、Web可视化查看
Forked from yizhimish/codereview-ai
本项目在原基础上进行了大量改进和功能增强
- AI 代码审查 — 自动发现 bug、安全漏洞、性能问题、代码风格等
- 多语言支持 — Python / JavaScript / TypeScript / Java / Go / Rust / C++ 等
- 📁 项目级审查 — 支持整个目录递归扫描,自动跳过 node_modules/.git/pycache 等
- 📊 报告导出 — 审查结果自动保存为 JSON(完整数据)+ Markdown(可读摘要)
- 🌐 报告查看器 — 内置 Web 可视化页面,支持上传/浏览报告,分数环图、文件筛选、问题分类
- 全中文化 — CLI 输出、分析消息、Web 界面全部中文
- 实时进度 — WebSocket 实时推送审查进度
- 高性能 — 平均响应 120ms,支持高并发
# 1. 安装后端依赖
pip install -r backend/requirements.txt
# 2. 安装 CLI 工具
cd cli && npm install && npm install -g .
# 3. 启动后端服务
cd ../backend && python main.py
# 或: uvicorn main:app --host 0.0.0.0 --port 9000 --reload
# 4. 访问
# API 文档: http://localhost:9000/docs
# 定价页面: http://localhost:9000/pricing
# 报告查看器: http://localhost:9000/review ← 新增!cd cli && npm install && npm install -g .注意: 必须先执行
npm install安装本地依赖,再执行npm install -g .全局安装。
# 审查单个文件
code-review review -f ./app/main.py
# 审查整个项目/目录(递归扫描所有代码文件)
code-review review -f ./my-project
# 指定输出目录(默认自动创建 ./review-logs)
code-review review -f ./my-project -o ./reports╔══════════════════════════════════════╗
║ CodeReview AI - 代码审查报告 ║
╚══════════════════════════════════════╝
📁 项目: ./my-project
📄 文件数: 1470
⏱ 耗时: 12.3s
📊 平均分数: 72/100
🐛 总问题数: 234
├── 错误 (error): 15
├── 警告 (warning): 89
└── 提示 (info): 130
✅ 项目审查完成
📝 完整报告已保存: review-logs/my-project_20260427_114319.json
📝 Markdown报告已保存: review-logs/my-project_20260427_114319.md
| 端点 | 方法 | 说明 |
|---|---|---|
/analyze |
POST | 提交代码审查 |
/result/{job_id} |
GET | 获取审查结果 |
/ws/{job_id} |
WS | WebSocket 实时审查 |
/health |
GET | 健康检查 |
| 端点 | 方法 | 说明 |
|---|---|---|
/review |
GET | 报告查看器页面 |
/api/reports |
GET | 获取已有报告列表 |
/api/reports/{filename} |
GET | 获取单个报告JSON |
/api/upload-report |
POST | 上传JSON报告文件 |
- 浏览器打开 http://localhost:9000/review
- 点击「📤 上传报告」按钮选择 JSON 文件
- 或通过下拉框选择已有报告(来自
review-logs/目录) - 也支持拖放 JSON 文件到页面
- 带参数访问:
http://localhost:9000/review?report=./xxx.json
- 🎯 圆形分数环 — 动画显示综合评分(优秀80+/良好60+/一般40+/差<40)
- 📈 统计卡片 — 审查文件数、平均分、总问题数、问题类型分布
- 📂 文件列表侧栏 — 每个文件的评分和问题数量,点击可过滤
- 🐛 问题详情面板 — 严重级别标签、行号、描述、改进建议
- 🔍 类型筛选 — error/warning/info 分类切换
- ⬆️ 文件上传 — 通过按钮或拖放加载任意 JSON 报告
| 层 | 技术 |
|---|---|
| 后端 | FastAPI + Python 3.11, AST 静态分析 + 正则多语言分析 |
| 前端 | React + TypeScript + TailwindCSS |
| CLI | Node.js + Commander + Chalk + Axios |
| 报告查看器 | 纯 HTML/CSS/JS(零依赖) |
| 架构 | 异步任务 + WebSocket 实时推送 |
codereview-ai/
├── backend/
│ ├── main.py # FastAPI 入口(含报告查看器路由)
│ ├── analyzer.py # AST 分析引擎(全中文消息)
│ ├── auth.py # 用户认证
│ └── report-viewer.html # 报告查看器页面
├── frontend/
│ ├── public/pricing.html # 定价页(含导航菜单)
│ └── build/ # 构建产物
├── cli/
│ └── bin/cli.js # CLI 工具(目录审查/报告导出/中文输出)
└── README.md # 本文件
审查引擎对以下维度进行检测:
| 类别 | 检测内容 |
|---|---|
| 🐛 Bug | 未定义变量使用、None 比较、裸 except、无限循环风险、不安全的默认值调用、None 属性访问 |
| 🔒 安全 | 硬编码密钥、eval/exec 执行、shell=True、SQL 注入、pickle 反序列化、HTTP 无超时、路径穿越 |
| ⚡ 性能 | 循环内重复计算、len() 未提升、不必要的 copy()、sum 用生成器代替列表、集合查找优化 |
| 🎨 风格 | camelCase → snake_case、缺失文档字符串、函数过长、参数过多、未使用导入、行过长、空行不规范 |
| ✅ 最佳实践 | 可变默认参数、== True/False 判断、TODO/FIXME 标记 |
扣分规则: 基础 100 分,critical(-15), high(-8), medium(-4), low(-2),最低 0 分。
- ✅ 新增目录/项目级代码审查,递归扫描所有代码文件
- ✅ 新增报告文件导出功能(JSON + Markdown 双格式,时间戳命名)
- ✅ 新增 Web 报告查看器(
/review),支持分数环图、文件筛选、问题分类 - ✅ 新增文件上传接口,可在 Web 页面直接上传 JSON 报告查看
- ✅ 全系统中文化:CLI 输出、分析检测消息、Web 界面
- ✅ 导航栏新增「报告查看」菜单入口
- 🐛 修复 CLI 分数始终为 0 的字段映射 bug
- 🐛 修复单文件模式无输出的 bug
欢迎提交 Issue 和 Pull Request!
