有选择地禁用第三方库的C ++核心指南检查器

时间:2017-08-20 17:46:11

标签: c++ visual-studio c++11 boost code-analysis

我想尝试在VS2015下的C ++ 11/14项目中使用Core Guidelines checker tool

在我的代码中,我使用Boost中的许多库来触发大量警告。我并不担心这些警告,因为Boost正在做很多非常聪明的工作,并且这些图书馆的编写目的不是为了符合准则,而这些准则主要是它们之前的。

但是由于警告如此繁多,我无法在我的代码中找出真正的问题(至少根据工具)。

有没有办法抑制第三方代码的所有警告?也许在#including boost标题之前和之后都有一些属性?

我已阅读Visual C ++团队博客中的this page,但我无法找到它。

2 个答案:

答案 0 :(得分:2)

目前,在VS中,抑制来自第三方库的警告的功能仍然是实验性的,但肯定会出现。

VS 2017版15.6预览版1附带了一项功能,可以抑制来自第三方库的警告。在下面的文章中,他们使用"外部标题"作为引用第三方库标题的术语。

https://blogs.msdn.microsoft.com/vcblog/2017/12/13/broken-warnings-theory/

上面的文章基本上就是说

  • 指定外部标题
  • 指定外部标题的警告级别

禁止他们发出警告。例如,如果我们在some_lib_dir目录中有外部头文件并希望在my_prog.cpp中编译我们的代码,这取决于外部头文件,则以下命令应该可以完成这项工作。

cl.exe /experimental:external /external:I some_lib_dir /external:W0 /W4 my_prog.cpp

请注意,/experimental:external是必需的,因为这仍然是一项实验性功能,此功能的详细信息可能会在将来发生变化。

无论如何,我们需要等待Visual Studio的未来发布。

答案 1 :(得分:1)

有一个未记录的环境变量CAExcludePath,用于过滤该路径中文件的警告。我通常将%CAExcludePath%设置为%Include%。

您也可以在MSBuild中使用它,请参阅此处获取示例(混合成功):Suppress warnings for external headers in VS2017 Code Analysis

MSVC正在开发类似于GCC系统头的东西,应该是解决这个问题的更全面的解决方案。