Frama-c:将插件分析结果保存在c文件

时间:2018-01-05 22:23:01

标签: c static-analysis frama-c

我是frama-c的新手。所以我提前为我的问题道歉。

我想创建一个插件来修改源代码,克隆一些函数,插入一些函数调用,我希望我的插件生成第二个文件,其中包含输入文件的修改版本。

我想知道是否可以使用frama -c生成新文件c。例如,Sparecode和Semantic常量折叠插件的结果直接显示在终端上而不是文件中。所以我想知道Frama-c是否具有写入文件的功能,而不是将分析结果发送到标准输出。

当然我们可以将frama-c的输出重定向到file.c,但在这种情况下,对于插件scf,例如,值的结果就在那里,我发现frama-c替换了例如" for"循环时间。

但我想要的是frama-c可以生成一个文件,其中包含我原来的代码以及我要插入的修改。

我查看了目录src / kernel_services / ast_printing但我还没有找到可以指导我的功能。

感谢。

1 个答案:

答案 0 :(得分:1)

在命令行中,选项-ocode <file>表示后续的-print将在<file>而不是标准输出中完成(如果您愿意,请使用-ocode ""再次在stdout上打印)。请注意-print打印与当前项目对应的代码。您可以使用-then-on <prj>更改您感兴趣的项目。更多信息当然可以在the user manual中找到。

所有这些当然都是以编程方式提供的。特别是,File.pretty_ast默认情况下在stdout上打印(即输出一个C程序)当前项目的AST,但是需要两个可选参数来更改项目或输出应该执行的格式化程序。 / p>