让 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" 之前没有两个 "minus" 字符!与 nishantjr 回复中的不同。
如图所示:http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html
这在 clang-tidy 9.0 中仍然适用。
运行-clang-tidy.py 脚本中存在错误。它没有正确合并修复,因为文件路径未规范化为唯一路径。
试试这个使用 pathlib 在 linux、windows 和 macos...
上正确规范化路径的补丁版本
https://github.com/dyollb/modernize_cpp/blob/main/clang_tidy/run-clang-tidy.py
我正在将当前使用 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" 之前没有两个 "minus" 字符!与 nishantjr 回复中的不同。
如图所示:http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html
这在 clang-tidy 9.0 中仍然适用。
运行-clang-tidy.py 脚本中存在错误。它没有正确合并修复,因为文件路径未规范化为唯一路径。 试试这个使用 pathlib 在 linux、windows 和 macos...
上正确规范化路径的补丁版本https://github.com/dyollb/modernize_cpp/blob/main/clang_tidy/run-clang-tidy.py