如何抑制特定 clang-tidy 警告
⚠️ clang-tidy 的规则能够帮助检查潜在的问题,不要盲目抑制警告!
可以通过添加 NOLINT
, NOLINTNEXTLINE
, 以及 NOLINTBEGIN
… NOLINTEND
注释来抑制某些(或所有)clang-tidy 警告。
NOLINT
抑制同一行的警告NOLINTNEXTLINE
抑制下一行的警告NOLINTBEGIN
…NOLINTEND
抑制多行警告- 上述 3 种标记都可以增加一对圆括号,来抑制特定类型的警告,可以用逗号分隔,抑制多种类型的警告;通配符也是可以的!
class Foo {
// 抑制本行所有的警告
Foo(int param); // NOLINT
// 可以增加说明,解释抑制警告的理由
Foo(char param); // NOLINT: Allow implicit conversion from `char`, because <some valid reason>
// 只抑制 google-explicit-constructor 和 google-runtime-int 两种类型的警告
Foo(double param); // NOLINT(google-explicit-constructor, google-runtime-int)
// 抑制所有 `google` 开头的警告
Foo(bool param); // NOLINT(google*)
// 抑制所有以 `-avoid-c-arrays` 结尾的警告
int array[10]; // NOLINT(*-avoid-c-arrays)
// 抑制下一行 google-explicit-constructor 和 google-runtime-int 警告
// NOLINTNEXTLINE(google-explicit-constructor, google-runtime-int)
Foo(bool param);
// 抑制下一行所有 `google` 开头的警告
// NOLINTNEXTLINE(google*)
Foo(bool param);
// 抑制下一行以 `-avoid-c-arrays` 结尾的警告
// NOLINTNEXTLINE(*-avoid-c-arrays)
int array[10];
// 抑制 NOLINTBEGIN 和 NOLINTEND 之间所有的 google-explicit-constructor 和 google-runtime-int 警告
// NOLINTBEGIN(google-explicit-constructor, google-runtime-int)
Foo(short param);
Foo(long param);
// NOLINTEND(google-explicit-constructor, google-runtime-int)
// 抑制 NOLINTBEGIN 和 NOLINTEND 之间所有的 google 开头的警告
// NOLINTBEGIN(google*)
Foo(bool param);
// NOLINTEND(google*)
// 抑制 NOLINTBEGIN 和 NOLINTEND 之间所有的以 `-avoid-c-arrays` 结尾的警告
// NOLINTBEGIN(*-avoid-c-arrays)
int array[10];
// NOLINTEND(*-avoid-c-arrays)
};
Reference
https://clang.llvm.org/extra/clang-tidy/#suppressing-undesired-diagnostics
本文作者:Zijian/TENG(微信公众号:好记性如烂笔头),转载请注明原文链接:https://www.cnblogs.com/tengzijian/p/17630423.html