0

我是 Coverity 的新手,我在命令提示符下使用它的 .exe 文件。所以我想在 Coverity 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

4

1 回答 1

0

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

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

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

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

<append_arg>-Dmy_macro_name=my_macro_body</append_arg> 

在该<begin_command_line_config>行之后),或使用--xml-option.

例如,如果您使用快捷方式 gcc config,则如下所示:

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

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

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

于 2015-11-22T01:02:52.560 回答