Visual Studio での Clang-Tidy の使用

Clang-Tidy のサポートには、2019 バージョン 16.4 以降 Visual Studio が必要です。 このバージョンのドキュメントを表示するには、この記事の Visual Studio の [バージョン] セレクター コントロールを Visual Studio 2019 以降に設定してください。 このページの目次の一番上にあります。

Code Analysis では、Clang または MSVC ツールセットを使用しているかどうかにかかわらず、MSBuild と CMake の両方のプロジェクトに対して Clang-Tidy をネイティブにサポートします。 Clang-Tidy チェックは、バックグラウンド コード分析の一部として実行できます。 これらは、エディター内の警告 (波線) として表示され、エラー一覧に表示されます。

Clang-Tidy のサポートは、Visual Studio 2019 バージョン 16.4 以降で使用できます。 Visual Studio インストーラーで C++ ワークロードを選択すると、自動的に追加されます。

Clang-Tidy は、MSBuild と CMake の両方で使用できる llvm/clang-cl ツールセットを使用する場合の既定の分析ツールです。 MSVC ツールセットを使用して、標準の Code Analysis エクスペリエンスと一緒に実行するか、置き換えるかを設定できます。 clang-cl ツールセットを使用する場合、Microsoft Code Analysis は使用できません。

コンパイルが成功すると Clang-Tidy が実行されます。 Clang-Tidy の結果を取得するには、ソース コード エラーの解決が必要になる場合があります。

MSBuild

両方の Code Analysis の一部として実行するように Clang-Tidy を構成し、Project プロパティ ウィンドウの [コード分析]>[全般] ページでビルドできます。 ツールを構成するオプションは、[Clang-Tidy] サブメニューにあります。

詳細については、「方法: C/C++ プロジェクトのコード分析プロパティを設定する」を参照してください。

CMake

CMake プロジェクトでは、CMakeSettings.json または CMakePresets.json 内で Clang-Tidy チェックを構成できます。

Clang-Tidy は次のキーを認識します。

  • enableMicrosoftCodeAnalysis: Microsoft Code Analysis の有効化
  • enableClangTidyCodeAnalysis: Clang-Tidy 分析を有効にします
  • clangTidyChecks: Clang-Tidy 構成。 有効または無効にするチェックのコンマ区切りの一覧。 先頭に - を付けるとチェックは無効になります。 たとえば、cert-oop58-cpp, -cppcoreguidelines-no-malloc, google-runtime-int を使うと cert-oop58-cppgoogle-runtime-int は有効になりますが、cppcoreguidelines-no-malloc は無効になります。 Clang-Tidy チェックの一覧については、Clang-Tidy のドキュメントを参照してください。

"enable" オプションが指定されていない場合、Visual Studio は、使われているプラットフォーム ツールセットと一致する分析ツールを選びます。

CMake の設定

Clang-Tidy 設定を編集するには、CMake 設定を開き、CMake プロジェクト設定エディターで [JSON の編集] を選びます。 上記のキーを使って、CMake 設定 JSON ファイルに Clang-Tidy の仕様を入力できます。

CMake 設定の実装例は次のようになります。

{
  "configurations": [
  {
    "name": "x64-debug",
    "generator": "Ninja",
    ....
   "clangTidyChecks": "llvm-include-order, -modernize-use-override",
   "enableMicrosoftCodeAnalysis": true,
   "enableClangTidyCodeAnalysis": true
  }
  ]
}

CMake プリセット

vendor オブジェクトを介して、CMake プリセットで同じキーを使用できます。

CMake プリセットの実装例は次のようになります。

"configurePreset": [
{ "name": "base",
  ....
  "vendor": {
    "microsoft.com/VisualStudioSettings/CMake/1.0": {
      "clangTidyChecks": "llvm-include-order, -modernize-use-override",
      "enableMicrosoftCodeAnalysis": true,
      "enableClangTidyCodeAnalysis": true
      }
    }
}
]

警告の表示

Clang-Tidy を実行すると、エラー一覧に警告が表示されます。また、コードの関連するセクションの下にエディター上の波線が表示されます。 Clang-Tidy 警告を並べ替えて整理するには、[エラー一覧] ウィンドウの [カテゴリ] 列を使います。 エディター内の警告を構成するには、[ツール]>[オプション] の下にある [コード分析破線を無効にする] 設定を切り替えます。

Clang-Tidy 構成

既定では、Clang-Tidy は有効にされても、何もチェックは設定されません。 コマンド ライン バージョンのチェック一覧を表示するには、開発者コマンド プロンプトで clang-tidy -list-checks を実行します。 Visual Studio 内で Clang-Tidy によって実行されるチェックを構成できます。 [プロジェクト プロパティ ページ] ダイアログで、[構成プロパティ]>[Code Analysis]>[Clang-Tidy] ページを開きます。 [Clang-Tidy チェック] プロパティで実行するチェックを入力します。 適切な既定のセットは clang-analyzer-* です。 このプロパティ値は、ツールの --checks 引数に指定されます。 その他の構成は、カスタム .clang-tidy ファイルに含めることができます。 詳細については、「LLVM.org の Clang-Tidy ドキュメント」を参照してください。

関連項目

Clang/LLVM の MSBuild プロジェクトのサポート
Clang/LLVM の CMake プロジェクトのサポート