46

我正在尝试为一个项目设置 clang-tidy。我希望能够获得干净的输出,并鼓励在可能的情况下使用 -fix 模式。但是,在个别情况下需要例外。

尽可能使用

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
// Code that is being specially exempted
#pragma clang diagnostic pop

对于想要在本地禁用编译器警告的等效情况,是否可以从 clang-tidy 做类似的事情?

我试过了

#pragma clang diagnostic push
#pragma clang diagnostic ignored "readability-identifier-naming"
// Code that is being specially exempted
#pragma clang diagnostic pop

并且也clang替换为clang-tidy. 不幸clang的是,当用作 pragma 目标并使用常规 clang 编译时,我收到编译警告

warning: pragma diagnostic expected option name (e.g. "-Wundef") [-Wunknown-pragmas]

warning: unknown pragma ignored [clang-diagnostic-unknown-pragmas]

编译时如果我使用clang-tidy代替clang. 当在源上运行时,它们都不会对clang-tidy自身输出的内容产生影响。

这是x86_64 Linux 上的clangand 3.8。clang-tidy

4

1 回答 1

66

只需在您希望 clang-tidy 忽略的行的任意位置添加包含字符串 NOLINT 的注释。例如:

badcode;  // NOLINT

// NOLINTNEXTLINE
badcode;

badcode; // NOLINT(cert-err-58-cpp)

请参阅此处的文档。

于 2016-10-30T01:44:00.317 回答