Getting clang-tidy to fix header files

≯℡__Kan透↙ 提交于 2019-12-06 19:41:26

问题


I'm in the process of moving a project currently compiling with gcc to clang, and have a bunch of warnings that gcc didn't generate (-Winconsistent-missing-override). clang-tidy works for fixing these errors in the *.cpp files, however it doesn't touch the hpp files because a compile command wasn't found in the database (as I would expect).

I'm using ninja to build the project and ninja -t compdb cc cxx > .build/compile_commands.json to generate the compilation database. I've tried running:

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

to fix the errors. It refuses to touch header files complaining:

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

回答1:


I got it working by specifying the --header-filter=src/ option. Interestingly fixes ended up being applied several times causing output like this:

void f() override override override override override;

I worked around this by running clang-tidy on each source file separately. Also note the <build-path> specified with -p must also contain the .clang-format configuration for styling to be applied.

This is my current iteration of the command:

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



回答2:


Be careful when using "-header-filter" correctly. There is no two "minus" characters before "header" ! Unlike in nishantjr reply.

As shown here : http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html

This is still true in clang-tidy 9.0.



来源:https://stackoverflow.com/questions/35261868/getting-clang-tidy-to-fix-header-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!