跳到主要内容

在 C++ 代码中使用 clang-tidy

clang-tidy 是一个用于自动检查 C/C++/Objective-C 代码的工具,用于查找风格违规、程序错误和不符合最佳实践的地方。

Electron 的 clang-tidy 集成作为一个 Linter 脚本提供,可以使用 npm run lint:clang-tidy 运行。 尽管 clang-tidy 检查的是磁盘上的文件,但你需要先构建 Electron,这样它才知道使用了哪些编译器标志。 该脚本有一个必需的选项 --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 在检查过程中也需要大量内存,因此很容易出现内存不足错误。 因此,默认的工作进程数为一。