# CodeDetect - 代码检测与形式化规范生成系统 [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/Python-3.8%2B-blue.svg)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-2.0%2B-lightgrey.svg)](https://flask.palletsprojects.com/) 基于大语言模型的C/C++代码自动检测和形式化规范生成系统,支持CBMC验证。 ## 功能特性 - 🔍 **智能代码分析** - 自动识别代码中的潜在问题和漏洞 - 📋 **形式化规范生成** - 基于代码分析生成形式化验证规范 - ✅ **CBMC集成验证** - 支持CBMC模型检测器的集成验证 - 🌐 **Web用户界面** - 提供友好的Web界面进行代码上传和结果查看 - ⚡ **实时WebSocket通信** - 支持实时进度更新和结果推送 - 🔒 **安全验证** - 完善的文件验证和安全检查机制 - 🧪 **完整测试框架** - 包含LLM生成测试、单元测试、集成测试、性能测试 - 📊 **渐进式测试用例** - 从基础算术到FreeRTOS嵌入式系统的全覆盖测试 - 🎯 **质量保证机制** - 语法验证、逻辑一致性、完整性检查、质量评分 ## 系统架构 ``` codedetect/ ├── src/ │ ├── ui/ # Web用户界面 │ │ ├── templates/ # HTML模板 │ │ ├── static/ # 静态资源 │ │ ├── web_app.py # Flask应用主文件 │ │ ├── utils.py # 工具类 │ │ └── __main__.py # CLI入口 │ ├── spec/ # 规范生成模块 │ ├── verify/ # 验证模块 │ └── utils/ # 通用工具 ├── config/ # 配置文件 ├── tests/ # 测试用例 │ ├── config/ # 测试配置 │ ├── data/ # 测试数据 │ ├── unit/ # 单元测试 │ ├── integration/ # 集成测试 │ ├── performance/ # 性能测试 │ ├── tools/ # 测试工具 │ └── utils/ # 测试工具 └── scripts/ # 部署脚本 ``` ## 快速开始 ### 环境要求 - Python 3.8+ - CBMC (可选,用于形式化验证) ### 安装步骤 1. **克隆仓库** ```bash git clone https://gitlink.org.cn/lirenqiu/codedetect.git cd codedetect ``` 2. **安装依赖** ```bash # 方法1: 使用pip安装 pip install -r requirements.txt # 方法2: 使用系统包管理器 (Ubuntu/Debian) sudo apt-get update sudo apt-get install python3-pip python3-flask ``` 3. **配置环境** ```bash cp .env.template .env # 编辑 .env 文件,配置API密钥等参数 ``` 4. **启动服务** ```bash # 方法1: 使用启动脚本 (推荐) ./start_server.sh # 方法2: 使用简化版Flask应用 python3 simple_app.py # 方法3: 使用完整版Web应用 export PYTHONPATH=/home/hzk/桌面/Codedetection:$PYTHONPATH python -m src.ui.web_app ``` 5. **访问界面** 打开浏览器访问以下地址: - **主页**: http://localhost:8080 - **工作空间**: http://localhost:8080/workspace - **上传页面**: http://localhost:8080/upload ## 使用说明 ### Web界面 #### 工作空间模式 (推荐) 1. 访问工作空间页面: http://localhost:8080/workspace 2. 在6区域统一界面中完成所有操作: - **代码导入**: 上传C/C++文件或粘贴代码 - **解析结果**: 实时查看代码分析结果 - **验证配置**: 配置CBMC验证参数 - **实时日志**: 监控分析进度和状态 - **控制面板**: 管理工作流程 - **结果显示**: 查看规范生成、验证结果等 #### 传统模式 1. 访问主页: http://localhost:8080 2. 点击"上传代码"进入传统上传页面 3. 选择C/C++源文件(支持.c, .cpp, .h, .hpp格式) 4. 或直接粘贴代码内容 5. 系统自动进行分析和规范生成 6. 查看详细的分析结果和验证报告 ### 支持的文件格式 - **源文件**: `.c`, `.cpp`, `.h`, `.hpp` - **最大文件大小**: 10MB - **编码格式**: UTF-8 ### 命令行接口 ```bash # 显示帮助信息 python -m src.ui.__main__ --help # 创建必要目录 python -m src.ui.__main__ create-dirs # 启动Web服务器 python -m src.ui.__main__ run # 使用简化版应用 (推荐) python3 simple_app.py # 使用启动脚本 (最简单) ./start_server.sh ``` ### 配置说明 主要配置文件位于 `config/default.yaml`: ```yaml # 文件上传配置 upload: max_file_size: 10MB allowed_extensions: [.c, .cpp, .h, .hpp] upload_dir: uploads # API配置 api: text_model: gpt-3.5-turbo extraction_model: gpt-4 max_tokens: 2000 # 安全配置 security: enable_csp: true session_lifetime: 3600 ``` ## 核心模块 ### 文件验证器 (FileValidator) - 文件类型检查 - 大小限制验证 - 内容安全检查 ### 文件管理器 (FileManager) - 安全的文件保存 - 文件路径管理 - 清理机制 ### 配置管理 (ConfigManager) - YAML配置文件解析 - 环境变量支持 - 配置验证 ### 安全特性 - CSP安全头 - 文件名安全处理 - 会话管理 - 输入验证 ## 安全考虑 ### 文件上传安全 - 严格的文件类型限制 - 文件大小控制 - 安全的文件名处理 - 独立的上传目录 ### Web安全 - Content Security Policy (CSP) - XSS防护 - CSRF保护 - 安全的会话管理 ### API安全 - 环境变量配置 - API密钥管理 - 错误处理不暴露敏感信息 ## 开发指南 ### 项目结构 ``` src/ ├── ui/ # Web界面模块 │ ├── templates/ # HTML模板 │ ├── static/ # CSS/JS文件 │ ├── web_app.py # Flask应用 │ ├── utils.py # UI工具类 │ └── __main__.py # CLI入口 ├── spec/ # 规范生成模块 ├── verify/ # 验证模块 └── utils/ # 通用工具 ``` ### 运行测试 #### LLM生成测试框架 CodeDetect包含完整的LLM生成测试框架,用于验证CBMC规范生成功能: ```bash # 运行所有测试 ./scripts/test-llm-generation.sh # 运行特定类型测试 ./scripts/test-llm-generation.sh basic # 基础测试 ./scripts/test-llm-generation.sh comprehensive # 全面测试 ./scripts/test-llm-generation.sh unit # 单元测试 ./scripts/test-llm-generation.sh integration # 集成测试 ./scripts/test-llm-generation.sh performance # 性能测试 ./scripts/test-llm-generation.sh cli # CLI测试 ./scripts/test-llm-generation.sh validation # 验证测试 # 使用自定义配置 ./scripts/test-llm-generation.sh -c tests/config/test_config.yaml # 启用详细输出 ./scripts/test-llm-generation.sh -v ``` **环境变量设置:** ```bash export SILICONFLOW_API_KEY="your_api_key_here" ``` #### 传统Pytest测试 ```bash # 运行所有测试 pytest # 运行特定测试 pytest tests/unit/ pytest tests/integration/ ``` ### 代码规范 - 遵循PEP 8 Python编码规范 - 使用类型注解 - 编写完整的文档字符串 - 实现单元测试覆盖 ## 部署说明 ### 生产环境部署 1. **环境配置** ```bash export FLASK_ENV=production export FLASK_APP=src.ui.web_app ``` 2. **使用Gunicorn** ```bash gunicorn -w 4 -b 0.0.0.0:5000 src.ui.web_app:app ``` 3. **Nginx反向代理** ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### Docker部署 ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 5000 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "src.ui.web_app:app"] ``` ## 贡献指南 1. Fork本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request ## 许可证 本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交Issue: [GitLink Issues](https://gitlink.org.cn/lirenqiu/codedetect/issues) - 邮箱: [your-email@example.com] ## 致谢 感谢所有为本项目做出贡献的开发者和研究人员。 --- ## 更新日志 ### v1.2.0 (2024-09-14) - 🧪 **新增完整LLM生成测试框架** - 📊 **添加渐进式测试用例覆盖** - ⚡ **集成性能测试和基准测试** - 🎯 **实现CBMC规范验证工具** - 🔧 **添加CLI测试工具和自动化脚本** - 📈 **完善质量保证和评分机制** ### v1.1.0 (2024-09-14) - 🚀 **新增6区域统一工作空间界面** - ⚡ **集成WebSocket实时通信** - 🎨 **全面升级用户界面设计** - 📱 **新增响应式布局支持** - 🔧 **简化安装和启动流程** - 📋 **添加启动脚本自动化部署** ### v1.0.0 (2024-XX-XX) - 初始版本发布 - 实现基础的代码检测功能 - 添加Web用户界面 - 集成CBMC验证支持