是否可以忽略带有叮当整洁的标题



我想包含一个来自外部项目的标头,但 clang-tidy 对此非常不满意,并生成了大量警告。为了解决此问题,我正在尝试禁用来自此标头的所有诊断。

我试过了:

// NOLINTBEGIN
// NOLINTNEXTLINE
#include <bad.hpp> // NOLINT
// NOLINTEND

但不幸的是,这行不通。

此电子邮件线程建议使用-header-filter(HeaderFilterRegex)选项。

HeaderFilterRegex: '^((?!bad.hpp).)*$'

但这会导致所有标头都被忽略,因为 clang tidy 使用 POSIX 正则表达式语法。这不支持负面的展望未来。

正如这个答案所暗示的那样,我还考虑为此使用行过滤器,但配置文件没有这样的选项。

可能吗?

截至今天(2022 年 4 月 19 日),披露 llvm 博客上的此线程表明不支持该功能。

相关说明如下:

  • HeaderFilterRegex使用llvm::Regex进行解析,不支持负前瞻。
  • 目前还无法使用std::regex而不是llvm::Regex,因为某些编译器没有std::regex支持。clang-tidy的未来版本可能会实现基于 glob 的文件名筛选。

我现在只能看到两种可能的解决方法:

  • 列出HeaderFilterRegex中允许的所有路径。
  • 修补clang-tidy以使用std::regex并使用您自己的版本。

最新更新