我是frama-c的新手。所以我提前为我的问题道歉。
我想创建一个插件来修改源代码,克隆一些函数,插入一些函数调用,我希望我的插件生成第二个文件,其中包含输入文件的修改版本。
我想知道是否可以使用frama -c生成新文件c。例如,Sparecode和Semantic常量折叠插件的结果直接显示在终端上而不是文件中。所以我想知道Frama-c是否具有写入文件的功能,而不是将分析结果发送到标准输出。
当然我们可以将frama-c的输出重定向到file.c,但在这种情况下,对于插件scf,例如,值的结果就在那里,我发现frama-c替换了例如" for"循环时间。
但我想要的是frama-c可以生成一个文件,其中包含我原来的代码以及我要插入的修改。
我查看了目录src / kernel_services / ast_printing但我还没有找到可以指导我的功能。
感谢。
答案 0 :(得分:1)
在命令行中,选项-ocode <file>
表示后续的-print
将在<file>
而不是标准输出中完成(如果您愿意,请使用-ocode ""
再次在stdout上打印)。请注意-print
打印与当前项目对应的代码。您可以使用-then-on <prj>
更改您感兴趣的项目。更多信息当然可以在the user manual中找到。
所有这些当然都是以编程方式提供的。特别是,File.pretty_ast
默认情况下在stdout上打印(即输出一个C程序)当前项目的AST,但是需要两个可选参数来更改项目或输出应该执行的格式化程序。 / p>