繁体   English   中英

使用 clang-tidy 修复头文件

[英]Getting clang-tidy to fix header files

我正在将当前使用 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.

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

void f() override override override override override;

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

这是我当前的命令迭代:

find src/ -name '*.cpp' -exec \
     clang-tidy-3.6 -p . --header-filter=src/ {}
               --checks=misc-use-override --fix

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

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

这在 clang-tidy 9.0 中仍然成立。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM