如何在 Visual Studio 和 CMake 中使用 clang-tidy?

Posted

技术标签:

【中文标题】如何在 Visual Studio 和 CMake 中使用 clang-tidy?【英文标题】:How to use clang-tidy with Visual Studio and CMake? 【发布时间】:2019-11-30 18:01:22 【问题描述】:

我的最终目标是对某些代码进行一次性的自动化现代化改造,并应用我们以 .clang-tidy 表示的标识符大写规则。能够随着时间的推移重复这一点会很好。我们使用 Visual Studio 2015、CMake 3.13,并且我已经安装了 LLVM 9 以获得整洁。

我可以在命令行、CMake 或 Visual Studio 中运行 clang-tidy,但我需要任何帮助。

为了在命令行上运行,我需要一个来自 CMake 的 compile_commands.json 文件,但传递 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 不会创建一个。我听说这不适用于 CMake Visual Studio 生成器。我尝试了一个带有“cmake .. -G Ninja”的忍者生成器,但我得到了错误。我不熟悉忍者,不知道是否可以正常工作。如果我真的使用 Visual Studio 2015 构建,我也不知道它生成的 compile_commands.json 文件是否相关。在我的平台上生成此文件的最可接受的方式是什么?

我可以访问 Visual Studio 2019, 16.4,它具有内置的 clang-tidy 支持,但博客说这不适用修复,这是我的主要目标。

【问题讨论】:

【参考方案1】:

我这样做的方式是通过Clang Power Tools - 它是 Visual Studio 的一个扩展,它集成了 clang-tidy 并且可以应用修复。

它还帮助我让我的代码库可以被 clang 编译(clang-tidy 的必要前提),因为它提供了基本的 clang 编译(只是语法,没有输出)。

【讨论】:

以上是关于如何在 Visual Studio 和 CMake 中使用 clang-tidy?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CMake 构建后,如何在 Visual Studio 中创建项目以使用 OpenMesh?

使用CMake,Microsoft MPI和Visual Studio 2017 - 找不到mpi.h [重复]

如何在 Visual Studio 2017、C++、CMake 中使用数据断点?

visual studio 编译器的堆空间不足问题的解决(cmake版本)

如何在 Cmake 生成的 ALL_BUILD 和 ZERO_CHECK Visual Studio 2013 项目中将 unicode 设置为字符集?

如何在 Visual Studio 2019 CMake 项目(Windows 10)上安装 SDL2