跳到主要内容

在 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 将在 src/.clang-tidy 中找到 Chromium 的配置并使用 Chromium 已启用的检查。您可以使用 --checks= 选项来更改运行哪些检查。这会直接传递给 clang-tidy,因此请参阅其文档以获取完整详细信息。可以使用通配符,并且可以通过在前面加上 - 来禁用检查。默认情况下,列出的任何检查都会添加到 .clang-tidy 中的检查,因此如果您想将检查限制为特定的检查,您应该首先排除所有检查,然后添加回您想要的检查,例如 --checks=-*,performance*

运行 clang-tidy 相当慢 - 在内部,它会编译每个文件,然后运行检查,因此它总是比编译慢一些。虽然您可以使用并行运行通过 --jobs|-j 选项来加快速度,但 clang-tidy 在检查期间也会使用大量内存,因此很容易出现内存不足错误。因此,默认的作业数是一个。