web-dev-qa-db-ja.com

ヘッダーファイルを修正するためのclang-tidyの取得

現在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.
11
nishantjr

--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
10
nishantjr

「-header-filter」を正しく使用する場合は注意してください。 「ヘッダー」の前に2つの「マイナス」文字はありません! nishantjrの返信とは異なります。

ここに示されているように: http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html

これは、clang-tidy9.0でも当てはまります。

1
fpiat