分享方式:


在 Visual Studio 中使用 Clang-Tidy

支援 Clang-Tidy 需要 Visual Studio 2019 16.4 版或更新版本。 若要查看此版本的文件,請將本文的 Visual Studio 版本 選取器控制項設定為 Visual Studio 2019 或更新版本。 它位於本頁目錄的頂端。

無論您是使用 Clang 還是 MSVC 工具組,Code Analysis 現在都可針對 MSBuild 和 CMake 專案,以原生方式支援 Clang-Tidy。 Clang-Tidy 檢查可以作爲背景程式碼分析的一部分執行。 它們會顯示為編輯器內警告 (波浪線),並顯示在 [錯誤清單] 中。

自 Visual Studio 2019 16.4 版開始,提供 Clang-Tidy 的支援。 當您在 Visual Studio 安裝程式中選擇 C++ 工作負載時,會自動包含它。

Clang-Tidy 是使用 LLVM/clang-cl 工具組時的預設分析工具,可在 MSBuild 和 CMake 中使用。 您可以在使用 MSVC 工具組時加以設定,以與標準 Code Analysis 體驗同時運行或取代它。 如果您使用 clang-cl 工具組,則無法使用 Microsoft Code Analysis。

Clang-Tidy 會在編譯成功之後執行。 您可能需要解決原始程式碼錯誤,以取得 Clang-Tidy 結果。

MSBuild

您可以將 Clang-Tidy 設定為 Code Analysis 的一部分,並在專案屬性視窗的 [Code Analysis]>[一般] 頁面底下建置。 您可以在 Clang-Tidy 子選單下找到設定工具的選項。

如需詳細資訊,請參閱 如何: 為 C/C++ 專案設定 Code Analysis 屬性

CMake

在 CMake 專案中,您可以在 CMakeSettings.jsonCMakePresets.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 文件

如果未指定任何「啟用」選項,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 警告,請使用 [錯誤清單] 視窗中的 [類別] 資料行。 您可以切換 [工具]>[選項] 底下的 [停用 Code Analysis 波浪線] 設定,以設定編輯器內警告。

Clang-Tidy 設定

根據預設,Clang-Tidy 不會在啟用時設定任何檢查。 若要查看命令列版本中的檢查清單,請在開發人員命令提示字元中執行 clang-tidy -list-checks。 您可以設定 Clang-Tidy 在 Visual Studio 內執行的檢查。 在專案 [屬性頁面] 對話框中,開啟 [設定屬性]>[Code Analysis]>[Clang-Tidy] 頁面。 輸入檢查以在 Clang-Tidy 檢查 屬性中執行。 良好的預設集是 clang-analyzer-*。 這個屬性值會提供給工具的 --checks 引數。 任何進一步的設定都可以包含在自訂 .clang-tidy 檔案中。 如需詳細資訊,請參閱 LLVM.org 的 Clang-Tidy 文件

Clang-Tidy 工具目錄

如果您想在 clang-tidy 可執行檔建置自訂規則,並在 Microsoft Visual Studio 中執行,可以將路徑變更為 Visual Studio 執行的可執行檔。 在專案 [屬性頁面] 對話框中,開啟 [設定屬性]>[Code Analysis]>[Clang-Tidy] 頁面。 手動輸入路徑或瀏覽,然後選取 Clang-Tidy 工具目錄屬性下方的路徑。 儲存變更之後,就會使用新的可執行檔,並重新編譯應用程式。

另請參閱

MSBuild 專案的 Clang/LLVM 支援
CMake 專案的 Clang/LLVM 支援