メインコンテンツにスキップ

C++コードでのclang-tidyの使用

clang-tidyは、C/C++/Objective-Cコードのスタイル違反、プログラミングエラー、ベストプラクティスを自動的にチェックするツールです。

Electronのclang-tidy統合は、npm run lint:clang-tidyで実行できるリンタースクリプトとして提供されています。clang-tidyはディスク上のファイルをチェックしますが、どのコンパイラフラグが使用されたかを認識させるためにElectronをビルドしておく必要があります。スクリプトには必須オプションが1つあり、--output-dirはコンパイル情報を取得するビルドディレクトリをスクリプトに伝えます。典型的な使用法は、npm run lint:clang-tidy --out-dir ../out/Testingです。

ファイル名を指定しない場合、すべてのC/C++/Objective-Cファイルがチェックされます。オプションの後にファイル名を渡すことで、チェックするファイルの一覧を提供できます:npm run lint:clang-tidy --out-dir ../out/Testing shell/browser/api/electron_api_app.cc

clang-tidyには、可能なチェックの長いリストがありますが、Electronではデフォルトで有効になっているのはほんの一部です。現時点では、Electronには.clang-tidy設定がないため、clang-tidyはChromiumのsrc/.clang-tidyから設定を見つけて、Chromiumで有効になっているチェックを使用します。--checks=オプションを使用することで、実行するチェックを変更できます。これはclang-tidyに直接渡されるため、詳細についてはそのドキュメントを参照してください。ワイルドカードを使用でき、-を接頭辞としてチェックを無効にできます。デフォルトでは、リストされたチェックは.clang-tidyのチェックに追加されるため、チェックを特定のチェックに制限したい場合は、まずすべてのチェックを除外し、次に必要なものを追加する必要があります(例:--checks=-*,performance*)。

clang-tidyの実行はかなり遅いです。内部的には各ファイルをコンパイルしてからチェックを実行するため、コンパイルよりも常に何倍か遅くなります。--jobs|-jオプションを使用して並列実行で高速化できますが、clang-tidyはチェック中に多くのメモリも使用するため、メモリ不足エラーが発生しやすくなります。そのため、デフォルトのジョブ数は1つです。