diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..0cf47a8 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,253 @@ +# 代码漏洞检测系统部署指南 + +## 系统要求 + +### 后端要求 +- Python 3.8+ +- pip 包管理器 +- 至少 2GB 可用内存 + +### 前端要求 +- Node.js 16+ +- npm 或 yarn 包管理器 + +## 快速启动 + +### 方式一:使用批处理脚本(Windows) + +1. 双击运行 `start_all.bat` 自动启动前后端服务 +2. 等待服务启动完成 +3. 访问 http://localhost:3000 + +### 方式二:手动启动 + +#### 启动后端服务 + +```bash +# 进入后端目录 +cd backend + +# 安装依赖 +pip install -r requirements.txt + +# 启动服务 +python main.py +``` + +后端服务将在 http://localhost:8000 启动 + +#### 启动前端服务 + +```bash +# 进入前端目录 +cd frontend + +# 安装依赖 +npm install + +# 启动开发服务器 +npm start +``` + +前端服务将在 http://localhost:3000 启动 + +## 配置说明 + +### 环境变量配置 + +创建 `.env` 文件在 `backend` 目录下: + +```env +# 数据库配置 +DATABASE_URL=sqlite:///./code_scanner.db + +# AI服务配置 +DEEPSEEK_API_KEY=your_deepseek_api_key_here +DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions + +# 文件上传配置 +UPLOAD_FOLDER=uploads +MAX_CONTENT_LENGTH=16777216 + +# 扫描配置 +MAX_SCAN_FILES=1000 +SCAN_TIMEOUT=300 + +# 报告配置 +REPORTS_FOLDER=reports + +# 日志配置 +LOG_LEVEL=INFO +LOG_FILE=app.log +``` + +### 数据库配置 + +系统默认使用 SQLite 数据库,数据库文件位于 `backend/code_scanner.db` + +如需使用其他数据库,修改 `DATABASE_URL` 环境变量: + +```env +# PostgreSQL +DATABASE_URL=postgresql://user:password@localhost/code_scanner + +# MySQL +DATABASE_URL=mysql://user:password@localhost/code_scanner +``` + +## 功能使用指南 + +### 1. 项目管理 + +1. 访问前端页面,点击"项目管理" +2. 点击"新建项目"按钮 +3. 填写项目信息: + - 项目名称 + - 项目描述 + - 编程语言(Python/C++/JavaScript等) + - 项目路径(本地文件系统路径) + +### 2. 代码扫描 + +1. 在项目列表中选择要扫描的项目 +2. 点击"扫描"按钮 +3. 选择扫描类型: + - 全量扫描:扫描所有文件 + - 增量扫描:只扫描修改的文件 + - 自定义扫描:根据配置扫描 +4. 等待扫描完成 + +### 3. 查看报告 + +1. 扫描完成后,可在"报告中心"查看漏洞详情 +2. 支持多种筛选条件: + - 按严重程度筛选 + - 按漏洞分类筛选 + - 按状态筛选 +3. 支持导出多种格式: + - HTML报告 + - PDF报告 + - Excel报告 + - JSON数据 + +### 4. 仪表板 + +仪表板提供系统概览: +- 项目统计 +- 扫描统计 +- 漏洞统计 +- 趋势分析 +- 分类分布 + +## API文档 + +后端API文档在服务启动后可通过以下地址访问: +- Swagger UI: http://localhost:8000/docs +- ReDoc: http://localhost:8000/redoc + +## 故障排除 + +### 常见问题 + +1. **后端启动失败** + - 检查Python版本是否满足要求 + - 检查依赖包是否正确安装 + - 检查端口8000是否被占用 + +2. **前端启动失败** + - 检查Node.js版本是否满足要求 + - 检查npm依赖是否正确安装 + - 检查端口3000是否被占用 + +3. **扫描失败** + - 检查项目路径是否正确 + - 检查文件权限 + - 查看后端日志获取详细错误信息 + +4. **AI增强功能不工作** + - 检查DeepSeek API密钥是否正确配置 + - 检查网络连接 + - 查看API调用日志 + +### 日志查看 + +- 后端日志:`backend/app.log` +- 前端日志:浏览器开发者工具控制台 + +## 生产环境部署 + +### Docker部署(推荐) + +1. 创建 `docker-compose.yml`: + +```yaml +version: '3.8' +services: + backend: + build: ./backend + ports: + - "8000:8000" + environment: + - DATABASE_URL=sqlite:///./code_scanner.db + volumes: + - ./data:/app/data + + frontend: + build: ./frontend + ports: + - "3000:3000" + depends_on: + - backend +``` + +2. 启动服务: + +```bash +docker-compose up -d +``` + +### 传统部署 + +1. 后端部署: + - 使用 gunicorn 或 uvicorn 作为WSGI服务器 + - 配置反向代理(Nginx) + - 设置进程管理(systemd/supervisor) + +2. 前端部署: + - 构建生产版本:`npm run build` + - 将构建文件部署到Web服务器 + - 配置反向代理指向后端API + +## 性能优化 + +1. **数据库优化** + - 为常用查询字段添加索引 + - 定期清理历史数据 + - 考虑使用连接池 + +2. **扫描性能优化** + - 调整扫描并发数 + - 使用增量扫描减少重复工作 + - 缓存扫描结果 + +3. **前端优化** + - 启用代码分割 + - 使用CDN加速静态资源 + - 启用Gzip压缩 + +## 安全注意事项 + +1. **API安全** + - 配置CORS策略 + - 实施API限流 + - 使用HTTPS + +2. **数据安全** + - 定期备份数据库 + - 加密敏感配置信息 + - 限制文件上传类型和大小 + +3. **访问控制** + - 实施用户认证 + - 配置角色权限 + - 记录操作日志 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e03728c --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# 代码漏洞检测报告系统 + +## 项目简介 +基于AI增强的代码漏洞检测和报告生成系统,类似SonarQube的功能。 + +## 技术栈 +- 后端: FastAPI + SQLAlchemy + SQLite +- 前端: React + TypeScript + Ant Design +- AI集成: DeepSeek API +- 静态分析: 多种工具集成框架 + +## 项目结构 +``` +code-vulnerability-scanner/ +├── backend/ # 后端服务 +│ ├── app/ # 应用主目录 +│ ├── requirements.txt # Python依赖 +│ └── main.py # 启动文件 +├── frontend/ # 前端应用 +│ ├── src/ # 源码目录 +│ ├── package.json # Node.js依赖 +│ └── public/ # 静态资源 +├── docs/ # 项目文档 +└── README.md # 项目说明 +``` + +## 快速开始 +1. 启动后端: `cd backend && python main.py` +2. 启动前端: `cd frontend && npm start` +3. 访问: http://localhost:3000 + +## 核心功能 +- 多语言代码分析 +- AI增强漏洞检测 +- 详细报告生成 +- 项目管理和历史追踪 diff --git a/start_all.bat b/start_all.bat new file mode 100644 index 0000000..db804a4 --- /dev/null +++ b/start_all.bat @@ -0,0 +1,19 @@ +@echo off +echo 启动代码漏洞检测系统... +echo. + +echo 1. 启动后端服务... +start "后端服务" cmd /k "cd backend && python -m pip install -r requirements.txt && python main.py" + +echo 等待后端服务启动... +timeout /t 5 /nobreak >nul + +echo 2. 启动前端服务... +start "前端服务" cmd /k "cd frontend && npm install && npm start" + +echo. +echo 系统启动完成! +echo 后端服务: http://localhost:8000 +echo 前端服务: http://localhost:3000 +echo. +pause diff --git a/start_all.ps1 b/start_all.ps1 new file mode 100644 index 0000000..e2535cb --- /dev/null +++ b/start_all.ps1 @@ -0,0 +1,22 @@ +Write-Host "启动代码漏洞检测系统..." -ForegroundColor Green +Write-Host "" + +Write-Host "1. 启动后端服务..." -ForegroundColor Yellow +Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd backend; pip install -r requirements.txt; python main.py" + +Write-Host "等待后端服务启动..." +Start-Sleep -Seconds 5 + +Write-Host "2. 启动前端服务..." -ForegroundColor Yellow +Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd frontend; npm install; npm start" + +Write-Host "" +Write-Host "系统启动完成!" -ForegroundColor Green +Write-Host "后端服务: http://localhost:8000" -ForegroundColor Cyan +Write-Host "前端服务: http://localhost:3000" -ForegroundColor Cyan +Write-Host "" +Write-Host "按任意键退出..." +$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") + + + diff --git a/start_backend.bat b/start_backend.bat new file mode 100644 index 0000000..a08d768 --- /dev/null +++ b/start_backend.bat @@ -0,0 +1,6 @@ +@echo off +echo 启动代码漏洞检测系统后端服务... +cd backend +python -m pip install -r requirements.txt +python main.py +pause diff --git a/start_backend_only.bat b/start_backend_only.bat new file mode 100644 index 0000000..26a06ad --- /dev/null +++ b/start_backend_only.bat @@ -0,0 +1,6 @@ +@echo off +echo 启动后端服务... +cd backend +python main.py +pause + diff --git a/start_frontend.bat b/start_frontend.bat new file mode 100644 index 0000000..0ab1ad6 --- /dev/null +++ b/start_frontend.bat @@ -0,0 +1,6 @@ +@echo off +echo 启动代码漏洞检测系统前端服务... +cd frontend +npm install +npm start +pause diff --git a/start_simple.bat b/start_simple.bat new file mode 100644 index 0000000..cdafe8a --- /dev/null +++ b/start_simple.bat @@ -0,0 +1,15 @@ +@echo off +echo 启动代码漏洞检测系统... + +echo 启动后端服务... +start "后端服务" cmd /k "cd backend && python main.py" + +timeout /t 3 /nobreak > nul + +echo 启动前端服务... +start "前端服务" cmd /k "cd frontend && npm start" + +echo 系统启动完成! +echo 后端地址: http://localhost:8000 +echo 前端地址: http://localhost:3000 +pause diff --git a/test_backend.bat b/test_backend.bat new file mode 100644 index 0000000..204f767 --- /dev/null +++ b/test_backend.bat @@ -0,0 +1,4 @@ +@echo off +cd backend +python main.py +pause diff --git a/test_frontend.bat b/test_frontend.bat new file mode 100644 index 0000000..06983a7 --- /dev/null +++ b/test_frontend.bat @@ -0,0 +1,4 @@ +@echo off +cd frontend +npm start +pause