将特定级别的所有警告视为错误,而不是下一级的警告

Posted

技术标签:

【中文标题】将特定级别的所有警告视为错误,而不是下一级的警告【英文标题】:Treat all warnings of specific level as errors but not those of next level 【发布时间】:2017-07-28 12:47:38 【问题描述】:

我知道there is /WX to treat all warnings as errors。还有/we1234 将特定警告(即1234)视为错误。

我错过了一个标志,它将所有级别 3 的警告视为错误,而不是级别 4 的警告。

在我的遗留项目中,我们只是设法摆脱了所有 W3 警告并增加到 W4。由于这引发了数千个警告,因此在引入 W3 时,我们将无法发现任何新的警告。 因此,我们想让所有 W3 警告错误。

我可以编译所有 W3 警告的列表并为每个警告添加一个/weXYZ,但这似乎太乏味了。

【问题讨论】:

W4 总是会从 STL 实施中触发无数警告。 @Zereges 我无法确认。我主要从我们的 VS2017 代码中收到警告。 有趣的一点,升级的另一个原因:) @Zereges W4 should be okay 但 Wall 会遇到无数错误。 【参考方案1】:

你有几个选择:

为每个三级警告添加/weXYZ。请按以下方式进行操作:

通过 GUI 添加几个这样的标志 在文本编辑器中打开项目文件,并找到它使用的格式 从合适的网页中抓取所有三级警告的列表 将其编辑为正确的格式 将设置放入项目文件中。

或者,不要启用所有 4 级警告,而是一次启用一个(一旦您修复了之前的警告)。

【讨论】:

.vsprops 文件会更有用,因为它可以重复使用。 我正在使用 CMake 生成项目和解决方案文件。所以我不会通过 VS GUI 添加任何东西。你基本上是在描述我问题的最后一句话。

以上是关于将特定级别的所有警告视为错误,而不是下一级的警告的主要内容,如果未能解决你的问题,请参考以下文章

将警告视为错误无效

如何将所有 C# 8 可空引用警告视为错误?

在 NXLog 中选择特定级别的 Windows 应用程序日志的问题

警告注释

使用 .eslintrc.js 将所有 eslint 错误更改为警告而不是错误

Make - 特定文件的“将警告视为错误”