有选择地禁用第三方库的C ++核心指南检查器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有选择地禁用第三方库的C ++核心指南检查器相关的知识,希望对你有一定的参考价值。
我想尝试在VS2015下的C ++ 11/14项目中使用Core Guidelines checker tool。
在我的代码中,我使用了许多来自Boost的库,它们会引发很多警告。我并不担心这些警告,因为Boost正在做很多非常聪明的工作,并且这些图书馆的编写目的不是为了符合准则,而这些准则主要是他们所遵循的。
但是在如此大量的警告中,我无法在我的代码中找到真正的问题(至少根据工具)。
有没有办法抑制第三方代码的所有警告?也许在#including boost标题之前和之后有一些属性?
我从Visual C ++团队博客中读过this page,但我一直无法找到它。
目前,在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的未来发布。
有一个未记录的环境变量CAExcludePath,用于过滤该路径中文件的警告。我通常在%CAExcludePath%设置为%Include%的情况下运行。
你也可以在MSBuild中使用它,看这里的例子(混合成功):Suppress warnings for external headers in VS2017 Code Analysis
MSVC正在开发类似于GCC系统头的东西,应该是解决这个问题的更全面的解决方案。
以上是关于有选择地禁用第三方库的C ++核心指南检查器的主要内容,如果未能解决你的问题,请参考以下文章
我会Python,且第三方系统有接口,我应该如何通过Python去调用第三方系统的接口,进行对接?