跳转到主要内容

在 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 在检查时也会占用大量内存,所以很容易遇到内存不足的错误。因此,默认的作业数量是 1。