在 Visual Studio 中使用 Clang-Tidy

支持 Clang-Tidy 需要 Visual Studio 2019 16.4 或更高版本。 若要查看此版本对应的文档,请将本文的 Visual Studio“版本”选择器控件设置为“Visual Studio 2019 或更高版本”。 它位于此页面上目录的顶部。

无论你使用的是 Clang 还是 MSVC 工具集,代码分析都本机支持 MSBuild 和 CMake 项目的 Clang-Tidy。 Clang-Tidy 检查会作为后台代码分析的一部分运行。 它们显示为编辑器内警告(波形曲线),并显示在错误列表中。

从 Visual Studio 2019 版本 16.4 开始,已提供 Clang-Tidy 支持。 在 Visual Studio 安装程序中选择 C++ 工作负载时,会自动包含它。

Clang-Tidy 是使用 LLVM/clang-cl 工具集时的默认分析工具,在 MSBuild 和 CMake 中均有提供。 可以在使用 MSVC 工具集时将其配置为与标准代码分析体验一起运行或替换标准代码分析体验。 如果使用 clang-cl 工具集,则 Microsoft 代码分析不可用。

成功编译后,Clang-Tidy 才运行。 可能需要解决源代码错误才能获取 Clang-Tidy 结果。

MSBuild

可以在“项目属性”窗口的“代码分析”>“常规”页下将 Clang-Tidy 配置作为两种代码分析的一部分运行并生成。 Clang-Tidy 子菜单下可以找到用于配置该工具的选项。

有关详细信息,请参阅如何:设置 C/C++ 项目的代码分析属性

CMake

在 CMake 项目中,可以在 CMakeSettings.jsonCMakePresets.json 中配置 Clang-Tidy 检查。

Clang-Tidy 可识别以下键:

  • enableMicrosoftCodeAnalysis:启用 Microsoft 代码分析
  • 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。 可以在 Visual Studio 中配置 Clang-Tidy 运行的检查。 在项目“属性页”对话框中,打开“配置属性”>“代码分析”>“Clang-Tidy”页。 在“Clang-Tidy 检查”属性中输入要运行的检查。 默认设置为 clang-analyzer-* 是不错的选择。 此属性值会提供给该工具的 --checks 参数。 自定义 .clang-tidy 文件中可以包含任何进一步的配置。 有关详细信息,请参阅有关 LLVM.org 的 Clang-Tidy 文档

Clang-Tidy 工具目录

如果想要将自定义规则内置到 clang-tidy 可执行文件中并在 Microsoft Visual Studio 中运行它,可以更改 Visual Studio 运行的可执行文件的路径。 在项目“属性页”对话框中,打开“配置属性”>“代码分析”>“Clang-Tidy”页。 手动键入路径,或“浏览”并选择“Clang-Tidy 工具目录”属性下的路径。 保存更改后,将使用新的可执行文件,并重新编译应用。

另请参阅

对 MSBuild 项目的 Clang/LLVM 支持
对 CMake 项目的 Clang/LLVM 支持