我正在使用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。
答案 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没有做任何事情,因为没有简化
break
,continue
和switch
语句已经是默认语句。
前端会将goto
语句和标签作为目标引入
对于这些以非可选的方式作为其他构造的翻译,for
实例||
和&&
。
没有办法禁用这种治疗方法。
切片插件选择AST的一部分并擦除其他部分,
因此goto
语句出现在其输出中。
Frama-C的切片插件是我所知道的唯一切片器
C程序的可编辑切片。如果你需要一个更好的切片机
不会引入goto
语句,您可能需要自己编写。