現在gccでコンパイルしているプロジェクトをclangに移行中ですが、gccが生成しなかった警告がたくさんあります(-Winconsistent-missing-override
)。 clang-tidy
は、*.cpp
ファイルのこれらのエラーを修正するために機能しますが、データベースにコンパイルコマンドが見つからなかったため、hpp
ファイルには影響しません(予想どおり)。 。
ninja
を使用してプロジェクトをビルドし、ninja -t compdb cc cxx > .build/compile_commands.json
を使用してコンパイルデータベースを生成しています。私は実行してみました:
clang-tidy-3.6 -p .build/ \
$(find src/ -name *.cpp) \
$(find src/ -name *.hpp) \
--checks=misc-use-override --fix
エラーを修正します。不平を言うヘッダーファイルに触れることを拒否します:
Skipping .../src/header/file.hpp. Compile command not found.
--header-filter=src/
オプションを指定することで機能しました。興味深いことに、修正が数回適用され、次のような出力が発生しました。
void f() override override override override override;
これを回避するには、各ソースファイルでclang-tidy
を個別に実行しました。また、<build-path>
で指定された-p
には、スタイルを適用するための.clang-format
構成も含まれている必要があることに注意してください。
これは、コマンドの現在の反復です。
find src/ -name '*.cpp' -exec \
clang-tidy-3.6 -p . --header-filter=src/ {}
--checks=misc-use-override --fix
「-header-filter」を正しく使用する場合は注意してください。 「ヘッダー」の前に2つの「マイナス」文字はありません! nishantjrの返信とは異なります。
ここに示されているように: http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html
これは、clang-tidy9.0でも当てはまります。