Frama-C选项-no-simplify-cfg不起作用

时间:2012-10-30 17:25:48

标签: frama-c

我正在使用Frama-C来计算C程序的一部分。我希望切片程序看起来像没有代码转换的原始程序。但是在生成的切片中,我总是有goto语句和标签。 我使用命令:

frama-c -no-simplify-cfg -main test -slice-assert test test.c -then-on 'Slicing export' -print -ocode result.c

我在Cygwin的Windows机器上从最新的Oxygen版本编译了Frama-C。

1 个答案:

答案 0 :(得分:5)

$ frama-c -kernel-help
[...]
-simplify-cfg   remove break, continue and switch statement[sic] before
                analyzes[sic] (opposite option is -no-simplify-cfg)

选项-no-simplify-cfg没有做任何事情,因为没有简化 breakcontinueswitch语句已经是默认语句。

前端会将goto语句和标签作为目标引入 对于这些以非可选的方式作为其他构造的翻译,for 实例||&&。 没有办法禁用这种治疗方法。 切片插件选择AST的一部分并擦除其他部分, 因此goto语句出现在其输出中。

Frama-C的切片插件是我所知道的唯一切片器 C程序的可编辑切片。如果你需要一个更好的切片机 不会引入goto语句,您可能需要自己编写。