nis*_*tjr 11 c++ automated-refactoring llvm-clang clang++ clang-tidy
我正在将当前使用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
Run Code Online (Sandbox Code Playgroud)
修复错误.它拒绝触摸头文件抱怨:
Skipping .../src/header/file.hpp. Compile command not found.
Run Code Online (Sandbox Code Playgroud)
nis*_*tjr 10
我通过指定--header-filter=src/选项让它工作.有趣的是,修复程序最终被多次应用,导致输出如下:
void f() override override override override override;
Run Code Online (Sandbox Code Playgroud)
我通过分别运行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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11079 次 |
| 最近记录: |