我想尝试在VS2015下的C ++ 11/14项目中使用Core Guidelines checker tool。
在我的代码中,我使用Boost中的许多库来触发大量警告。我并不担心这些警告,因为Boost正在做很多非常聪明的工作,并且这些图书馆的编写目的不是为了符合准则,而这些准则主要是它们之前的。
但是由于警告如此繁多,我无法在我的代码中找出真正的问题(至少根据工具)。
有没有办法抑制第三方代码的所有警告?也许在#including boost标题之前和之后都有一些属性?
我已阅读Visual C ++团队博客中的this page,但我无法找到它。
答案 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系统头的东西,应该是解决这个问题的更全面的解决方案。