lab1
信息
本次实验作为第一次实验, 只需要跟着实验手册一步步做就行.
由于实验结果可能有个体差异性, 所以在此不提供个人作业
- 运行
make all
- 打开
answers.txt
和c_programs
里面的十份源码 - 挨个阅读源码, 脑测一下是否会出现
division by zero
错误, 如果会的话, 就在ground truth
列填right
; 反之填写wrong
- 这个时候你的
make all
应该运行完了, 没有的话等它运行完 - 打开
results
, 里面有afl_logs
和csa_logs
- 对于
afl_logs
, 我们查看afl_logs/test{n}/afl_output/crashes
中是否有文件, 如果有, 说明对于test{n}
, afl 检测到了division by zero
错误, 那么我们在对应的AFL
列填写reject
; 反之, 填写accept
- 对于
csa_logs
, 我们挨个查看test{n}_out.txt
, 并在每个之中查找字符串Division by zero
, 如果查找到了, 说明对于test{n}
, csa 检测到了division by zero
错误, 那么我们在对应的CSA
列填写reject
; 反之, 填写accept
- 对于
- 根据刚刚填写的内容计算
AFL
和CSA
列的Precision
,Recall
和F1 score
- Precision: 准确率, 即不误报, 即对于所有检测结果为
Reject
的行里Ground Truth
为wrong
的比例 - Recall: 召回率, 即不漏报, 即对于所有
Ground Truth
为wrong
的行, 检测结果为Reject
的比例 - F1 score: 计算公式:
- Precision: 准确率, 即不误报, 即对于所有检测结果为
- 回答下方的问题
- 第 1, 2 题中的 sound 对应 Precision, complete 对应 Recall, 根据自己的运行结果回答即可
- 讨论
CSA
的accuracy
和cost
的时候要关注它的性质——静态分析工具