通过cmd使用覆盖exe文件传递宏

时间:2015-11-20 08:38:48

标签: macros coverity

我是Coverity的新手,我在命令提示符下使用它的.exe文件。所以我想在封面cov-build.exe中传递特定的宏,以便在cov-emit.exe时实现这些宏(当它被cov-build.exe调用时)正在解析.c文件。现在我已经尝试了下面说明的配置。

code-build.exe Intermediate_folder --delete-stale-tus --preprocessor-first --return-emit-failure "My_bat_file" -- -D My_macro_name=my_macro_body

所以任何帮助都会受到赞赏。我坚持这一点。

谢谢和问候,
Newbie_in

1 个答案:

答案 0 :(得分:0)

cov-build包装您现有的构建命令,监视它并生成并行编译器调用以理解您的代码。这些并行编译器调用将看到传递给您自己的编译器的相同命令行。

因此,如果您希望此定义对您的编译器以及Coverity生效,那么您只需将其添加到您的构建中,就像通常那样,Coverity将会看到它。

如果要添加只有Coverity编译器可以看到的定义,最好在编译器的配置中完成。

您可以直接编辑配置(添加

<append_arg>-Dmy_macro_name=my_macro_body</append_arg> 

<begin_command_line_config>行之后),或使用--xml-option重新配置。

例如,如果您使用快捷方式gcc配置,则它将如下所示:

$ cov-configure --gcc --xml-option=append_arg>-Dmy_macro_name=my_macro_body.

我注意到你在cov-build命令行上使用--preprocess-first - 我建议不要这样做,因为它会破坏XREF,使得浏览缺陷信息变得更加困难,并且使得分析无法进行找到一些缺陷(即由宏引起的缺陷)。 --preprocess-next的行为与--preprocess-first类似,只有在初始编译尝试失败时才会触发,因此如果您使用--preprocess-first来解决编译问题,我强烈建议您使用--preprocess-接下来。

如果您确实遇到编译问题,最好将它们(以及复制器)报告给Coverity支持,以便在将来的版本中修复它们。