【问题标题】:Suppress warnings for external headers in VS2017 Code Analysis在 VS2017 代码分析中抑制外部标头的警告
【发布时间】:2017-05-03 08:57:06
【问题描述】:

我想在 Visual Studio 2017 中使用代码分析,但我使用的是 Qt,它给了我很多来自标题的警告。我试过关闭警告:

#pragma warning(push, 0)
#include <QtGlobal>
#pragma warning(pop)

但这无济于事。我也试过使用this:

#include <codeanalysis\warnings.h>
#pragma warning(push, 0)
#pragma warning(disable : ALL_CODE_ANALYSIS_WARNINGS)
#include <QtGlobal>
#pragma warning(pop)

但没有帮助。如何禁用 Qt 外部头文件的代码分析?

【问题讨论】:

  • 但这将禁用整个代码库的警告。我只是希望它忽略外部标题。

标签: c++ qt visual-studio-2017 static-analysis


【解决方案1】:

如果您打开 .vcxproj 文件,您应该会在底部看到:

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>

您可以在下面添加:

  <PropertyGroup Condition="'$(Language)'=='C++'">
    <IncludePath>$(QTDIR)\include;.\GeneratedFiles;$(IncludePath)</IncludePath>
    <CAExcludePath>$(QTDIR)\include;.\GeneratedFiles;$(CAExcludePath)</CAExcludePath>
  </PropertyGroup>

微软说有一个错误,CAExcludePathIncludePath 覆盖,但这已在Visual Studio 2017 V15.3 中修复,您只需要设置CAExcludePath - 我还没有验证这一点(我会更新这个一旦我这样做)。

这个答案来自How can I suppress warnings for external headers in VS2017 Code Analysis?

【讨论】:

  • 试过这个解决方案,但这对我不起作用。我看到 CAExcludePath 设置正确,但我仍然从第 3 方标头的编译中收到警告。我使用的是 15.2 (26430.6) 版本。还尝试在Microsoft.CodeAnalysis.Targets中设置CAExcludePath,没有成功。
  • 此外,您可以将其作为“用户宏”放入属性表中。我发现我需要选中“将此宏设置为构建环境中的环境变量”框。
  • 据我所知,您不需要 。我刚刚在 VS 15.7 中禁用了这种方式的提升警告。
猜你喜欢
  • 2011-02-02
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2017-06-05
  • 2017-04-11
  • 1970-01-01
  • 2021-07-08
相关资源
最近更新 更多