将 `misc-include-cleaner` 与 <windows.h>

问题描述 投票:0回答:1

我想在我的代码库中使用 clang-tidy 的

misc-include-cleaner
检查,但不幸的是,整个 WinAPI 中使用的
<windows.h>
标头与 IWYU 哲学相冲突。

从技术上讲,我只能显式包含必要的 WinAPI 标头,但包含的顺序很重要,并且管理它似乎很乏味。

有一个优雅的解决方案吗?仅仅因为这个就对整个项目禁用此检查感觉是错误的。我知道

IgnoreHeaders
选项,但我不知道它是否可以解决问题或如何正确应用它。对于编译器警告,我使用
/external:anglebrackets
/external:W0
,效果很好。在这种情况下我可以使用类似的东西吗?

winapi clang-tidy iwyu
1个回答
0
投票

我想我已经找到了一个不错的解决方案。

Clang-tidy 支持将配置文件放置在与源文件相同的位置。通常,这会覆盖父文件夹的配置,但启用

InheritParentConfig
允许它继承设置:

Checks: '
      -misc-include-cleaner
      '
InheritParentConfig: true 

这使得可以仅在选定的文件夹中禁用某些检查,同时保留全局检查。 显然,这不仅仅会影响

<windows.h>
标头,但考虑到维护的容易程度,我认为这是一个合理的解决方案。如果包含
<windows.h>
的所有文件都位于同一文件夹中并与项目的其余部分分开,效果最好,但我认为它只会强化良好的设计,并且无论如何都是您应该做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.