13

我正在将当前使用 gcc 编译的项目移动到 clang,并且有一堆 gcc 没有生成的警告(-Winconsistent-missing-override)。clang-tidy用于修复文件中的这些错误*.cpp,但它不会触及hpp文件,因为在数据库中找不到编译命令(如我所料)。

ninja用来构建项目并ninja -t compdb cc cxx > .build/compile_commands.json生成编译数据库。我试过运行:

clang-tidy-3.6 -p .build/      \
      $(find src/ -name *.cpp) \
      $(find src/ -name *.hpp) \
      --checks=misc-use-override --fix

修复错误。它拒绝触摸头文件抱怨:

Skipping .../src/header/file.hpp. Compile command not found.
4

3 回答 3

11

我通过指定--header-filter=src/选项让它工作。有趣的是,修复程序最终被应用了多次,导致输出如下:

void f() override override override override override;

我通过clang-tidy分别在每个源文件上运行来解决这个问题。另请注意,<build-path>指定的 with-p还必须包含.clang-format要应用的样式的配置。

这是我当前的命令迭代:

find src/ -name '*.cpp' -exec \
     clang-tidy-3.6 -p . --header-filter=src/ {}
               --checks=misc-use-override --fix
于 2016-02-14T04:59:24.947 回答
1

正确使用“-header-filter”时要小心。“标题”之前没有两个“减号”字符!不像 nishantjr 的回复。

如此处所示:http ://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html

在 clang-tidy 9.0 中仍然如此。

于 2019-03-05T15:07:27.127 回答
-1

run-clang-tidy.py 脚本中有一个错误。它没有正确合并修复,因为文件路径未标准化为唯一路径。试试这个使用 pathlib 在 linux、windows 和 macos 上正确规范化路径的补丁版本......

https://github.com/dyollb/modernize_cpp/blob/main/clang_tidy/run-clang-tidy.py

于 2021-05-17T15:36:35.977 回答