codedetect/docs/examples/basic-usage-tutorial.md

262 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

# CodeDetect基础使用教程
## 概述
本教程将指导您完成CodeDetect的基础使用从安装配置到运行第一次代码验证。
## 前提条件
- Python 3.8或更高版本
- CBMC (C Bounded Model Checker) 安装
- 基本的C语言知识
## 第一步:安装
### 1.1 克隆仓库
```bash
git clone https://github.com/your-username/codedetect.git
cd codedetect
```
### 1.2 安装Python依赖
```bash
pip install -r requirements.txt
pip install -r requirements-dev.txt
```
### 1.3 安装CBMC
**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install cbmc
```
**macOS:**
```bash
brew install cbmc
```
### 1.4 验证安装
```bash
# 检查CBMC安装
cbmc --version
# 检查Python依赖
python -m pytest tests/unit/ -v
```
## 第二步:基本使用
### 2.1 准备测试代码
创建一个简单的C文件 `test_function.c`
```c
int add(int a, int b) {
return a + b;
}
```
### 2.2 使用命令行界面
```bash
# 运行代码验证
python -m src.main verify test_function.c
# 生成规范
python -m src.main generate-spec test_function.c --function add
# 运行完整分析
python -m src.main analyze test_function.c
```
### 2.3 使用Web界面
启动Web服务器
```bash
python -m src.ui.web_app
```
然后在浏览器中访问 `http://localhost:5000`
## 第三步:验证结果解读
### 3.1 成功验证
```
VERIFICATION SUCCESSFUL
Property __CPROVER_assert: OK
Property __CPROVER_assert: OK
** 1 of 1 properties verified (2 PASS) **
```
**含义:**
- 所有属性都已验证通过
- 代码在给定条件下是安全的
### 3.2 验证失败
```
VERIFICATION FAILED
Property __CPROVER_assert: FAILED
Violated property:
File test.c, line 2
assertion
arr[index]
STATE:
- Line 2: arr[index]
- index: 5
- size: 3
```
**含义:**
- 发现了潜在的安全问题
- 需要修复代码或添加保护措施
## 第四步:进阶功能
### 4.1 使用突变测试
```bash
# 生成测试突变
python -m src.main mutate test_function.c --function add
# 运行突变验证
python -m src.main verify-mutants test_function.c
```
### 4.2 批量处理
```bash
# 处理整个目录
python -m src.main batch-verify ./src/
# 生成报告
python -m src.main generate-report --format html
```
### 4.3 配置文件
创建配置文件 `config.yaml`
```yaml
verification:
cbmc:
options:
- "--bounds-check"
- "--pointer-check"
- "--unwind 10"
timeout: 30
generation:
llm:
model: "gpt-4"
temperature: 0.3
max_tokens: 1000
```
## 第五步:故障排除
### 5.1 常见问题
**CBMC未找到**
```bash
# 确保CBMC在PATH中
which cbmc
# 如果没有,手动设置
export CBMC_PATH=/path/to/cbmc
```
**Python依赖问题**
```bash
# 重新安装依赖
pip install --force-reinstall -r requirements.txt
```
**内存不足:**
```bash
# 减少验证深度
python -m src.main verify test.c --unwind 5
```
### 5.2 性能优化
- 使用 `--unwind` 限制递归深度
- 增加 `--timeout` 防止长时间运行
- 使用 `--jobs` 进行并行处理
## 第六步:最佳实践
### 6.1 编写可验证的代码
```c
// 好的实践:包含边界检查
int safe_access(int* arr, int size, int index) {
if (arr == NULL || size <= 0 || index < 0 || index >= size) {
return 0;
}
return arr[index];
}
// 避免的做法:没有边界检查
int unsafe_access(int* arr, int size, int index) {
return arr[index]; // 潜在的缓冲区溢出
}
```
### 6.2 规范编写建议
- 使用清晰的断言
- 考虑边界条件
- 添加前置条件
- 记录假设条件
### 6.3 持续集成
将CodeDetect集成到CI/CD流程中
```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 Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
pip install -r requirements.txt
sudo apt-get install cbmc
- name: Run verification
run: python -m pytest tests/ -v
```
## 下一步
完成本教程后,您可以:
1. 阅读 [API参考文档](../api-reference.md)
2. 探索 [开发者指南](../developer-guide.md)
3. 查看 [FreeRTOS示例](../freertos-examples/)
4. 尝试 [高级配置选项](../configuration.md)
## 获取帮助
- 查看 [用户手册](../user-manual.md)
- 提交 [Issue](https://github.com/your-username/codedetect/issues)
- 加入社区讨论