是否可以使用Frama-C
的切片插件来切片以获得多个断言?
E.g。给出以下代码:
#include "assert.h"
int main() {
double a=3;
double b=4;
b=a+b;
double c=123;
//@ assert(b>=0);
double d=a/b;
c=a;
//@ assert(c==0);
if (a<b)
a=c;
return 0;
}
我想得到两个断言的切片。
答案 0 :(得分:3)
选项-slice-assert main
将选择函数main
的所有断言作为切片条件。实际上,您无法直接选择仅对其中一个进行切片。您必须先使用//@ slice pragma expr b;
作为第一个,或//@ slice pragma expr c;
作为第二个。ErrorDocument
。
更一般地说,切片标准是累积的:您提供的标准越多,保留的代码就越多。