切片多个断言

时间:2016-04-14 09:11:17

标签: frama-c program-slicing

是否可以使用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;
}

我想得到两个断言的切片。

1 个答案:

答案 0 :(得分:3)

选项-slice-assert main将选择函数main的所有断言作为切片条件。实际上,您无法直接选择仅对其中一个进行切片。您必须先使用//@ slice pragma expr b;作为第一个,或//@ slice pragma expr c;作为第二个。ErrorDocument

更一般地说,切片标准是累积的:您提供的标准越多,保留的代码就越多。