我想向 clang-tidy 添加自定义检查,因此我使用命令
clang-tidy/add_new_check.py misc passes
(https://clang.llvm.org/extra/clang-tidy/Contributing.html) 遵循官方文档
检查已在 CMakeLists.txt 和 MiscTidyModule.cpp 中注册
clang-tidy 仍然无法使用支票 -
clang-tidy -checks="*" --list-checks | grep passes
正如评论中现在所解释的,问题是由于调用最初安装的
clang-tidy
而不是从修改后的源构建的。后者位于 $BUILD/bin/clang-tidy
中,其中 $BUILD
是运行 cmake
的目录。
为了使此问答对其他人可能更有用,我将总结一些相关的故障排除:
如果
$BUILD/bin/clang-tidy
缺失,但存在 $BUILD/bin/clang
等其他程序,则问题可能是由于 cmake
的调用方式造成的。特别是,必须将 -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"
传递给 cmake
才能启用 clang-tools-extra
项目,clang-tidy
是其中的一部分。
如果您有
clang-tidy
,您可以在其上运行 strings
程序来查看自定义检查中的字符串文字是否存在于二进制文件中。如果不是,则问题可能与构建系统有关,例如 CMakeLists.txt
中缺少条目或无法正确重新运行构建。
如果支票已链接,那么它应该出现在
$BUILD/bin/clang-tidy -checks="*" --list-checks
的输出中。如果没有,则问题可能出在支票的注册方式上(使用 registerCheck
;参见 ClangTidyCheckFactories
)。