|
|
# CodeDetect 用户手册
|
|
|
|
|
|
## 目录
|
|
|
|
|
|
1. [简介](#简介)
|
|
|
2. [安装指南](#安装指南)
|
|
|
3. [快速开始](#快速开始)
|
|
|
4. [Web界面使用](#web界面使用)
|
|
|
5. [API参考](#api参考)
|
|
|
6. [高级功能](#高级功能)
|
|
|
7. [FreeRTOS验证](#freertos验证)
|
|
|
8. [故障排除](#故障排除)
|
|
|
9. [最佳实践](#最佳实践)
|
|
|
|
|
|
## 简介
|
|
|
|
|
|
CodeDetect是一个基于形式化验证的C/C++代码分析和验证系统,结合了大型语言模型(LLM)和CBMC模型检查器,为开发者提供强大的代码验证工具。
|
|
|
|
|
|
### 主要功能
|
|
|
|
|
|
- **代码解析**:自动分析C/C++代码结构
|
|
|
- **规范生成**:使用LLM生成形式化验证规范
|
|
|
- **规范突变**:智能生成变异的验证规范
|
|
|
- **CBMC验证**:使用业界标准的CBMC工具进行验证
|
|
|
- **结果分析**:详细的验证结果和反例分析
|
|
|
- **FreeRTOS支持**:专门的嵌入式系统验证支持
|
|
|
|
|
|
### 系统架构
|
|
|
|
|
|
```
|
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
|
│ Web界面 │ │ REST API │ │ WebSocket │
|
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
|
│ │ │
|
|
|
▼ ▼ ▼
|
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
|
│ 工作流管理 │ │ 作业管理 │ │ 实时通信 │
|
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
|
│ │ │
|
|
|
▼ ▼ ▼
|
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
|
│ 代码解析 │ │ LLM生成 │ │ 规范突变 │
|
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
|
│ │ │
|
|
|
└───────────────────────┼───────────────────────┘
|
|
|
▼
|
|
|
┌─────────────────┐
|
|
|
│ CBMC验证 │
|
|
|
└─────────────────┘
|
|
|
```
|
|
|
|
|
|
## 安装指南
|
|
|
|
|
|
### 系统要求
|
|
|
|
|
|
- **操作系统**:Linux (推荐Ubuntu 20.04+)
|
|
|
- **Python**:3.8+
|
|
|
- **内存**:最少4GB,推荐8GB+
|
|
|
- **存储**:最少2GB可用空间
|
|
|
- **网络**:需要访问LLM服务的网络连接
|
|
|
|
|
|
### 依赖安装
|
|
|
|
|
|
1. **Python依赖**:
|
|
|
```bash
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
2. **CBMC安装**:
|
|
|
```bash
|
|
|
# Ubuntu/Debian
|
|
|
sudo apt-get install cbmc
|
|
|
|
|
|
# 或者从源码编译
|
|
|
git clone https://github.com/diffblue/cbmc.git
|
|
|
cd cbmc
|
|
|
mkdir build && cd build
|
|
|
cmake ..
|
|
|
make
|
|
|
sudo make install
|
|
|
```
|
|
|
|
|
|
3. **FreeRTOS支持**(可选):
|
|
|
```bash
|
|
|
# 下载FreeRTOS源码
|
|
|
git clone https://github.com/FreeRTOS/FreeRTOS.git
|
|
|
export FREERTOS_PATH=/path/to/FreeRTOS
|
|
|
```
|
|
|
|
|
|
### 配置文件
|
|
|
|
|
|
创建或修改 `config/default.yaml`:
|
|
|
|
|
|
```yaml
|
|
|
# LLM配置
|
|
|
llm:
|
|
|
provider: "deepseek" # 或其他支持的提供商
|
|
|
model: "deepseek-coder"
|
|
|
api_key: "your-api-key"
|
|
|
max_tokens: 2000
|
|
|
temperature: 0.3
|
|
|
|
|
|
# CBMC配置
|
|
|
cbmc:
|
|
|
path: "cbmc"
|
|
|
timeout: 300
|
|
|
memory_model: "little-endian"
|
|
|
output_format: "text"
|
|
|
max_concurrent_jobs: 4
|
|
|
|
|
|
# Web界面配置
|
|
|
web:
|
|
|
host: "0.0.0.0"
|
|
|
port: 8080
|
|
|
debug: false
|
|
|
max_file_size: "10MB"
|
|
|
allowed_extensions: [".c", ".cpp", ".h", ".hpp"]
|
|
|
|
|
|
# 工作流配置
|
|
|
workflow:
|
|
|
default_mode: "standard"
|
|
|
enable_parsing: true
|
|
|
enable_generation: true
|
|
|
enable_mutation: true
|
|
|
enable_verification: true
|
|
|
quality_threshold: 0.7
|
|
|
```
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
### 启动服务
|
|
|
|
|
|
1. **启动Web服务**:
|
|
|
```bash
|
|
|
python src/ui/web_app.py
|
|
|
```
|
|
|
|
|
|
2. **访问Web界面**:
|
|
|
打开浏览器访问 `http://localhost:8080`
|
|
|
|
|
|
### 基本使用流程
|
|
|
|
|
|
1. **上传代码**:
|
|
|
- 在Web界面点击"Upload"标签
|
|
|
- 选择C/C++文件或直接粘贴代码
|
|
|
- 点击"Upload"按钮
|
|
|
|
|
|
2. **代码解析**:
|
|
|
- 系统自动解析上传的代码
|
|
|
- 生成函数元数据和分析结果
|
|
|
- 显示在解析结果页面
|
|
|
|
|
|
3. **生成规范**:
|
|
|
- 基于解析结果生成CBMC验证规范
|
|
|
- 支持多种验证类型选择
|
|
|
- 可自定义生成选项
|
|
|
|
|
|
4. **规范突变**:
|
|
|
- 自动生成规范的变异版本
|
|
|
- 提高验证的覆盖率
|
|
|
- 支持不同突变策略
|
|
|
|
|
|
5. **CBMC验证**:
|
|
|
- 运行CBMC验证工具
|
|
|
- 生成详细的验证报告
|
|
|
- 包含成功/失败状态和反例
|
|
|
|
|
|
## Web界面使用
|
|
|
|
|
|
### 主界面
|
|
|
|
|
|
CodeDetect提供6个区域的工作空间:
|
|
|
|
|
|
1. **代码上传区**:上传C/C++文件或粘贴代码
|
|
|
2. **解析结果区**:显示代码分析结果
|
|
|
3. **规范生成区**:LLM生成的验证规范
|
|
|
4. **规范突变区**:生成的变异规范
|
|
|
5. **验证结果区**:CBMC验证结果
|
|
|
6. **统计分析区**:验证统计和质量指标
|
|
|
|
|
|
### 文件上传
|
|
|
|
|
|
#### 支持的文件类型
|
|
|
- C源文件:`.c`
|
|
|
- C++源文件:`.cpp`, `.cxx`, `.cc`
|
|
|
- 头文件:`.h`, `.hpp`
|
|
|
- 最大文件大小:10MB
|
|
|
|
|
|
#### 上传方式
|
|
|
1. **文件上传**:选择本地文件上传
|
|
|
2. **代码粘贴**:直接在文本框中粘贴代码
|
|
|
|
|
|
### 工作空间功能
|
|
|
|
|
|
#### 1. 代码解析区
|
|
|
显示代码解析结果,包括:
|
|
|
- 函数列表和详细信息
|
|
|
- 变量和数据结构
|
|
|
- 复杂度分析
|
|
|
- 依赖关系
|
|
|
|
|
|
#### 2. 规范生成区
|
|
|
显示LLM生成的验证规范:
|
|
|
- 规范内容
|
|
|
- 生成置信度
|
|
|
- 验证目标
|
|
|
- 质量评估
|
|
|
|
|
|
#### 3. 规范突变区
|
|
|
显示生成的变异规范:
|
|
|
- 突变类型
|
|
|
- 突变置信度
|
|
|
- 与原规范的差异
|
|
|
- 质量评分
|
|
|
|
|
|
#### 4. 验证结果区
|
|
|
显示CBMC验证结果:
|
|
|
- 验证状态(成功/失败/超时)
|
|
|
- 验证时间
|
|
|
- 内存使用情况
|
|
|
- 反例信息(如果失败)
|
|
|
|
|
|
#### 5. 统计分析区
|
|
|
显示验证统计信息:
|
|
|
- 验证成功率
|
|
|
- 平均验证时间
|
|
|
- 覆盖的验证类型
|
|
|
- 质量趋势
|
|
|
|
|
|
### 实时进度跟踪
|
|
|
|
|
|
所有操作都支持实时进度跟踪:
|
|
|
- WebSocket实时更新
|
|
|
- 进度条显示
|
|
|
- 详细状态信息
|
|
|
- 错误消息提示
|
|
|
|
|
|
## API参考
|
|
|
|
|
|
### 认证
|
|
|
|
|
|
API使用Bearer Token认证:
|
|
|
```http
|
|
|
Authorization: Bearer your-token
|
|
|
```
|
|
|
|
|
|
### 端点列表
|
|
|
|
|
|
#### 文件上传
|
|
|
```http
|
|
|
POST /api/upload
|
|
|
Content-Type: multipart/form-data
|
|
|
|
|
|
file: [C/C++文件]
|
|
|
```
|
|
|
|
|
|
#### 代码解析
|
|
|
```http
|
|
|
POST /api/parse
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"file_path": "/path/to/file.c",
|
|
|
"options": {
|
|
|
"include_functions": true,
|
|
|
"include_variables": true,
|
|
|
"complexity_analysis": true
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 规范生成
|
|
|
```http
|
|
|
POST /api/generate
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"functions": [
|
|
|
{
|
|
|
"name": "function_name",
|
|
|
"return_type": "int",
|
|
|
"parameters": [
|
|
|
{"name": "param1", "type": "int"}
|
|
|
],
|
|
|
"complexity_score": 0.5
|
|
|
}
|
|
|
],
|
|
|
"options": {
|
|
|
"verification_types": ["memory_safety", "overflow_detection"],
|
|
|
"include_comments": true
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 规范突变
|
|
|
```http
|
|
|
POST /api/mutate
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"specification": "void test(int x) { __CPROVER_assume(x > 0); }",
|
|
|
"function_name": "test",
|
|
|
"options": {
|
|
|
"mutation_types": ["predicate", "boundary"],
|
|
|
"max_mutations": 10,
|
|
|
"quality_threshold": 0.7
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### CBMC验证
|
|
|
```http
|
|
|
POST /api/verify
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"specification": "void test(int x) { __CPROVER_assert(x > 0, \"positive\"); }",
|
|
|
"function_name": "test",
|
|
|
"options": {
|
|
|
"verification_types": ["memory_safety"],
|
|
|
"timeout": 300,
|
|
|
"depth": 20
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 工作流管理
|
|
|
```http
|
|
|
POST /api/workflow
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"source_files": ["/path/to/file.c"],
|
|
|
"target_functions": ["function1", "function2"],
|
|
|
"workflow_config": {
|
|
|
"mode": "standard",
|
|
|
"enable_parsing": true,
|
|
|
"enable_generation": true,
|
|
|
"enable_mutation": true,
|
|
|
"enable_verification": true
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### WebSocket事件
|
|
|
|
|
|
系统通过WebSocket发送实时事件:
|
|
|
|
|
|
```javascript
|
|
|
// 连接WebSocket
|
|
|
const socket = io('ws://localhost:8080');
|
|
|
|
|
|
// 监听作业进度
|
|
|
socket.on('job_progress', (data) => {
|
|
|
console.log(`Job ${data.job_id} progress: ${data.progress.percentage}%`);
|
|
|
});
|
|
|
|
|
|
// 监听工作流更新
|
|
|
socket.on('workflow_update', (data) => {
|
|
|
console.log(`Workflow ${data.workflow_id} status: ${data.status}`);
|
|
|
});
|
|
|
|
|
|
// 监听错误通知
|
|
|
socket.on('error_notification', (data) => {
|
|
|
console.error(`Error: ${data.error_message}`);
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 高级功能
|
|
|
|
|
|
### 自定义验证配置
|
|
|
|
|
|
#### 验证类型
|
|
|
- **memory_safety**:内存安全验证
|
|
|
- **overflow_detection**:整数溢出检测
|
|
|
- **pointer_validity**:指针有效性验证
|
|
|
- **concurrency**:并发性验证
|
|
|
- **array_bounds**:数组边界检查
|
|
|
|
|
|
#### 工作流模式
|
|
|
- **standard**:标准验证流程
|
|
|
- **comprehensive**:全面验证流程
|
|
|
- **minimal**:最小验证流程
|
|
|
- **freertos_verification**:FreeRTOS专用验证
|
|
|
|
|
|
### 批量处理
|
|
|
|
|
|
#### 批量上传
|
|
|
```http
|
|
|
POST /api/upload/batch
|
|
|
Content-Type: multipart/form-data
|
|
|
|
|
|
files: [多个C/C++文件]
|
|
|
```
|
|
|
|
|
|
#### 批量验证
|
|
|
```http
|
|
|
POST /api/workflow/batch
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"workflows": [
|
|
|
{
|
|
|
"source_files": ["/path/to/file1.c"],
|
|
|
"target_functions": ["func1"],
|
|
|
"workflow_config": {...}
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### 结果导出
|
|
|
|
|
|
#### 导出格式
|
|
|
- **JSON**:结构化数据
|
|
|
- **XML**:CBMC兼容格式
|
|
|
- **HTML**:可读性报告
|
|
|
- **CSV**:统计数据
|
|
|
|
|
|
#### 导出API
|
|
|
```http
|
|
|
GET /api/results/{job_id}/export?format=json
|
|
|
```
|
|
|
|
|
|
## FreeRTOS验证
|
|
|
|
|
|
### FreeRTOS专用功能
|
|
|
|
|
|
CodeDetect提供专门的FreeRTOS验证支持:
|
|
|
|
|
|
#### 支持的FreeRTOS组件
|
|
|
- **任务管理**:任务创建、删除、调度
|
|
|
- **队列操作**:消息队列、信号量
|
|
|
- **定时器**:软件定时器、硬件定时器
|
|
|
- **中断处理**:中断服务例程
|
|
|
- **内存管理**:堆内存分配
|
|
|
|
|
|
#### FreeRTOS验证配置
|
|
|
```yaml
|
|
|
freertos:
|
|
|
include_headers: ["FreeRTOS.h", "task.h", "queue.h"]
|
|
|
config_path: "/path/to/FreeRTOSConfig.h"
|
|
|
heap_size: 4096
|
|
|
max_tasks: 10
|
|
|
stack_size: 1024
|
|
|
```
|
|
|
|
|
|
### FreeRTOS示例
|
|
|
|
|
|
#### 任务验证示例
|
|
|
```c
|
|
|
#include "FreeRTOS.h"
|
|
|
#include "task.h"
|
|
|
|
|
|
void vTaskFunction(void *pvParameters) {
|
|
|
int *param = (int *)pvParameters;
|
|
|
|
|
|
// CodeDetect将生成以下验证:
|
|
|
// 1. 参数有效性检查
|
|
|
// 2. 栈空间验证
|
|
|
// 3. 任务生命周期验证
|
|
|
// 4. 并发安全验证
|
|
|
|
|
|
for (;;) {
|
|
|
if (*param > 0) {
|
|
|
(*param)--;
|
|
|
}
|
|
|
vTaskDelay(pdMS_TO_TICKS(100));
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 队列验证示例
|
|
|
```c
|
|
|
#include "FreeRTOS.h"
|
|
|
#include "queue.h"
|
|
|
|
|
|
void queue_task(void *pvParameters) {
|
|
|
QueueHandle_t queue = (QueueHandle_t)pvParameters;
|
|
|
uint32_t message;
|
|
|
|
|
|
// CodeDetect将生成:
|
|
|
// 1. 队列有效性验证
|
|
|
// 2. 消息完整性检查
|
|
|
// 3. 并发访问安全
|
|
|
// 4. 队列溢出保护
|
|
|
|
|
|
while (xQueueReceive(queue, &message, portMAX_DELAY) == pdPASS) {
|
|
|
// 处理消息
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
#### 1. CBMC未找到
|
|
|
**错误**:`CBMC installation error: cbmc not found`
|
|
|
|
|
|
**解决方案**:
|
|
|
```bash
|
|
|
# 检查CBMC安装
|
|
|
which cbmc
|
|
|
|
|
|
# 安装CBMC
|
|
|
sudo apt-get install cbmc
|
|
|
|
|
|
# 或设置CBMC路径
|
|
|
export PATH=/path/to/cbmc:$PATH
|
|
|
```
|
|
|
|
|
|
#### 2. LLM服务连接失败
|
|
|
**错误**:`ExternalServiceError: LLM service unavailable`
|
|
|
|
|
|
**解决方案**:
|
|
|
```bash
|
|
|
# 检查网络连接
|
|
|
ping api.example.com
|
|
|
|
|
|
# 检查API密钥
|
|
|
echo $LLM_API_KEY
|
|
|
|
|
|
# 检查配置文件
|
|
|
cat config/default.yaml | grep api_key
|
|
|
```
|
|
|
|
|
|
#### 3. 文件上传失败
|
|
|
**错误**:`ValidationError: File validation failed`
|
|
|
|
|
|
**解决方案**:
|
|
|
```bash
|
|
|
# 检查文件类型
|
|
|
file your_file.c
|
|
|
|
|
|
# 检查文件大小
|
|
|
ls -lh your_file.c
|
|
|
|
|
|
# 检查文件权限
|
|
|
chmod 644 your_file.c
|
|
|
```
|
|
|
|
|
|
#### 4. 验证超时
|
|
|
**错误**:`TimeoutError: Verification timeout`
|
|
|
|
|
|
**解决方案**:
|
|
|
```yaml
|
|
|
# 增加超时时间
|
|
|
cbmc:
|
|
|
timeout: 600 # 10分钟
|
|
|
|
|
|
# 减少验证深度
|
|
|
cbmc:
|
|
|
depth: 10 # 降低搜索深度
|
|
|
|
|
|
# 限制验证范围
|
|
|
verification:
|
|
|
unwind: 5 # 限制循环展开
|
|
|
```
|
|
|
|
|
|
### 日志调试
|
|
|
|
|
|
#### 启用调试日志
|
|
|
```bash
|
|
|
export LOG_LEVEL=DEBUG
|
|
|
python src/ui/web_app.py
|
|
|
```
|
|
|
|
|
|
#### 查看日志文件
|
|
|
```bash
|
|
|
# 查看应用日志
|
|
|
tail -f logs/app.log
|
|
|
|
|
|
# 查看CBMC日志
|
|
|
tail -f logs/cbmc.log
|
|
|
|
|
|
# 查看LLM日志
|
|
|
tail -f logs/llm.log
|
|
|
```
|
|
|
|
|
|
### 性能优化
|
|
|
|
|
|
#### 内存优化
|
|
|
```yaml
|
|
|
# 限制并发作业
|
|
|
cbmc:
|
|
|
max_concurrent_jobs: 2
|
|
|
|
|
|
# 限制内存使用
|
|
|
cbmc:
|
|
|
max_memory: "1GB"
|
|
|
|
|
|
# 优化搜索策略
|
|
|
cbmc:
|
|
|
search_strategy: "breadth_first"
|
|
|
```
|
|
|
|
|
|
#### 网络优化
|
|
|
```yaml
|
|
|
# 启用连接池
|
|
|
llm:
|
|
|
connection_pool_size: 5
|
|
|
|
|
|
# 设置超时
|
|
|
llm:
|
|
|
timeout: 30
|
|
|
|
|
|
# 启用缓存
|
|
|
cache:
|
|
|
enabled: true
|
|
|
ttl: 3600
|
|
|
```
|
|
|
|
|
|
## 最佳实践
|
|
|
|
|
|
### 代码准备
|
|
|
|
|
|
#### 1. 代码质量
|
|
|
- 使用清晰的函数和变量命名
|
|
|
- 添加适当的注释
|
|
|
- 避免复杂的宏定义
|
|
|
- 减少代码重复
|
|
|
|
|
|
#### 2. 验证准备
|
|
|
- 分离验证相关的代码
|
|
|
- 添加前提条件检查
|
|
|
- 使用防御性编程
|
|
|
- 避免未定义行为
|
|
|
|
|
|
### 验证策略
|
|
|
|
|
|
#### 1. 渐进式验证
|
|
|
```c
|
|
|
// 1. 基本功能验证
|
|
|
int basic_function(int x) {
|
|
|
return x + 1;
|
|
|
}
|
|
|
|
|
|
// 2. 边界条件验证
|
|
|
int boundary_function(int x) {
|
|
|
if (x > 0 && x < 100) {
|
|
|
return x * 2;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
// 3. 复杂逻辑验证
|
|
|
int complex_function(int *array, int size) {
|
|
|
if (array == NULL || size <= 0) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
int sum = 0;
|
|
|
for (int i = 0; i < size; i++) {
|
|
|
sum += array[i];
|
|
|
}
|
|
|
return sum;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 2. 验证目标设置
|
|
|
```yaml
|
|
|
# 根据代码复杂度设置验证目标
|
|
|
verification:
|
|
|
simple_functions:
|
|
|
types: ["memory_safety"]
|
|
|
timeout: 60
|
|
|
|
|
|
complex_functions:
|
|
|
types: ["memory_safety", "overflow_detection", "pointer_validity"]
|
|
|
timeout: 300
|
|
|
|
|
|
critical_functions:
|
|
|
types: ["memory_safety", "overflow_detection", "pointer_validity", "concurrency"]
|
|
|
timeout: 600
|
|
|
```
|
|
|
|
|
|
### 结果分析
|
|
|
|
|
|
#### 1. 成功验证
|
|
|
- 检查验证覆盖率
|
|
|
- 分析时间性能
|
|
|
- 比较不同验证策略
|
|
|
|
|
|
#### 2. 失败验证
|
|
|
- 分析反例路径
|
|
|
- 检查前置条件
|
|
|
- 修复代码问题
|
|
|
|
|
|
#### 3. 超时处理
|
|
|
- 简化验证条件
|
|
|
- 增加超时时间
|
|
|
- 分解复杂函数
|
|
|
|
|
|
### 持续集成
|
|
|
|
|
|
#### 1. 自动化测试
|
|
|
```yaml
|
|
|
# .github/workflows/verify.yml
|
|
|
name: Code Verification
|
|
|
on: [push, pull_request]
|
|
|
|
|
|
jobs:
|
|
|
verify:
|
|
|
runs-on: ubuntu-latest
|
|
|
steps:
|
|
|
- uses: actions/checkout@v2
|
|
|
- name: Setup CodeDetect
|
|
|
run: |
|
|
|
pip install -r requirements.txt
|
|
|
sudo apt-get install cbmc
|
|
|
- name: Run Verification
|
|
|
run: |
|
|
|
python scripts/run-verification.py src/
|
|
|
- name: Generate Report
|
|
|
run: |
|
|
|
python scripts/generate-report.py
|
|
|
```
|
|
|
|
|
|
#### 2. 质量门控
|
|
|
```yaml
|
|
|
quality_gates:
|
|
|
min_coverage: 0.8
|
|
|
max_timeout_rate: 0.1
|
|
|
min_success_rate: 0.9
|
|
|
max_memory_usage: "2GB"
|
|
|
```
|
|
|
|
|
|
## 附录
|
|
|
|
|
|
### 配置文件完整示例
|
|
|
|
|
|
```yaml
|
|
|
# config/default.yaml
|
|
|
llm:
|
|
|
provider: "deepseek"
|
|
|
model: "deepseek-coder"
|
|
|
api_key: "${LLM_API_KEY}"
|
|
|
max_tokens: 2000
|
|
|
temperature: 0.3
|
|
|
timeout: 30
|
|
|
retry_attempts: 3
|
|
|
|
|
|
cbmc:
|
|
|
path: "cbmc"
|
|
|
timeout: 300
|
|
|
memory_model: "little-endian"
|
|
|
output_format: "text"
|
|
|
max_concurrent_jobs: 4
|
|
|
search_strategy: "depth_first"
|
|
|
unwind: 10
|
|
|
depth: 20
|
|
|
|
|
|
web:
|
|
|
host: "0.0.0.0"
|
|
|
port: 8080
|
|
|
debug: false
|
|
|
max_file_size: "10MB"
|
|
|
allowed_extensions: [".c", ".cpp", ".h", ".hpp"]
|
|
|
session_timeout: 3600
|
|
|
|
|
|
workflow:
|
|
|
default_mode: "standard"
|
|
|
enable_parsing: true
|
|
|
enable_generation: true
|
|
|
enable_mutation: true
|
|
|
enable_verification: true
|
|
|
quality_threshold: 0.7
|
|
|
max_mutations: 20
|
|
|
max_selected_mutations: 10
|
|
|
|
|
|
freertos:
|
|
|
include_headers: ["FreeRTOS.h", "task.h", "queue.h", "semphr.h"]
|
|
|
config_path: "${FREERTOS_PATH}/FreeRTOSConfig.h"
|
|
|
heap_size: 4096
|
|
|
max_tasks: 10
|
|
|
stack_size: 1024
|
|
|
|
|
|
cache:
|
|
|
enabled: true
|
|
|
ttl: 3600
|
|
|
max_size: 1000
|
|
|
|
|
|
logging:
|
|
|
level: "INFO"
|
|
|
file: "logs/app.log"
|
|
|
max_size: "10MB"
|
|
|
backup_count: 5
|
|
|
|
|
|
quality_gates:
|
|
|
min_coverage: 0.8
|
|
|
max_timeout_rate: 0.1
|
|
|
min_success_rate: 0.9
|
|
|
max_memory_usage: "2GB"
|
|
|
```
|
|
|
|
|
|
### 常用命令
|
|
|
|
|
|
```bash
|
|
|
# 启动服务
|
|
|
python src/ui/web_app.py
|
|
|
|
|
|
# 运行测试
|
|
|
pytest tests/
|
|
|
|
|
|
# 生成文档
|
|
|
python scripts/generate-docs.py
|
|
|
|
|
|
# 清理缓存
|
|
|
python scripts/cleanup.py
|
|
|
|
|
|
# 查看系统状态
|
|
|
curl http://localhost:8080/api/status
|
|
|
|
|
|
# 查看帮助
|
|
|
python src/ui/web_app.py --help
|
|
|
```
|
|
|
|
|
|
### 支持和社区
|
|
|
|
|
|
- **文档**:[https://docs.codedetect.com](https://docs.codedetect.com)
|
|
|
- **问题报告**:[GitHub Issues](https://github.com/codedetect/codedetect/issues)
|
|
|
- **讨论**:[GitHub Discussions](https://github.com/codedetect/codedetect/discussions)
|
|
|
- **邮件**:support@codedetect.com
|
|
|
|
|
|
---
|
|
|
|
|
|
*最后更新:2024年1月* |