web-dev-qa-db-ja.com

clang-tidyチェックを無効にするインライン方法

プロジェクトに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

また、clangclang-tidyに置き換えました。残念ながら、プラグマターゲットとしてclangを使用し、通常のclangでコンパイルすると、コンパイル警告が表示されます

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

そして

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

clangの代わりにclang-tidyを使用すると、コンパイル時にまた、ソースで実行したときにclang-tidy自体が出力する内容に影響を与えません。

これは、x86_64 Linuxのclangおよびclang-tidy 3.8に対応しています。

19
Rich L

文字列NOLINTを含むコメントを、clang-tidyで無視する行のどこかに追加するだけです。例えば:

badcode;  // NOLINT

// NOLINTNEXTLINE
badcode;

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

ドキュメント here を参照してください。

24
Niall Douglas