带有Frama-c的RTE插件:无法识别“ -rte-unsigned-ov”

时间:2019-07-13 16:03:33

标签: c verification frama-c rte

我是Fraama-c的新手。我正在尝试使用rte插件生成注释。 通过查看链接[1],我尝试使用以下命令生成注释:

frama-c -rte -rte-unsigned-ov test.c

我的test.c所在的地方

int main(void){
  signed char cx, cy, cz;
  cz = cx + cy;
  return 0;
}

我已复制[2] 2.1.2节中的代码。我希望rte将生成以下注释并修改我的test.c文件:

/*@ assert rte: signed_overflow: -2147483648 <= (int)cx+(int)cy; */
/*@ assert rte: signed_overflow: (int)cx+(int)cy <= 2147483647; */

但是,它没有生成任何注释(未修改test.c),此外,frama-c无法检测到选项“ -rte-unsigned-ov”。它显示了我

[kernel] User Error: option `-rte-unsigned-ov' is unknown. 

我也尝试了命令“ frama-c -rte test.c”,但是没有生成注释。我已经尝试过frama-c的19.0和18.0版本。

如果有人可以帮助我找出我所缺少的东西,那就太好了。谢谢。

[1] https://frama-c.com/rte.html

[2] https://frama-c.com/download/frama-c-rte-manual.pdf

1 个答案:

答案 0 :(得分:1)

这里有两个问题,一个是您对Frama-C的理解,另一个是https://frama-c.com/rte.html上的文档。

让我们从第二点开始:文档已过时,您可能应该在https://github.com/Frama-C/Frama-C-snapshot/issues处发布问题。 RTE手册在第2.3节中为您提供了该选项的新名称,即-warn-unsigned-overflow

第二点,Frama-C永远不会修改您的输入文件。相反,您可以要求它使用选项-print打印出已解析的代码源。您还可以使用选项-ocode <file>将结果重定向到一个文件中。您必须在RTE插件运行后执行此操作,因此需要-then运算符。

因此,您的完整命令行应该是

frama-c test.c -rte -warn-unsigned-overflow -then -print -ocode <yourfile>