如何设置clang-tidy仅对指定目录执行扫描检查?
配置修改方案
你只需要调整file(GLOB_RECURSE的文件匹配规则即可,有两种常用实现方式:
方式1:直接限定检索目录(更推荐,性能更好)
直接把源文件检索的范围限制在src/project和tests两个目录下,修改后的完整代码如下:
# 仅递归检索指定目录下的.cpp和.hpp文件 file(GLOB_RECURSE ALL_SOURCE_FILES src/project/*.cpp src/project/*.hpp tests/*.cpp tests/*.hpp ) add_custom_target( clang-format COMMAND /usr/bin/clang-format -style=file -i ${ALL_SOURCE_FILES} ) add_custom_target( clang-tidy COMMAND /usr/bin/clang-tidy ${ALL_SOURCE_FILES} -config='' -- -std=c++11 ${INCLUDE_DIRECTORIES} )
注意:如果你的cmake执行目录不是项目根目录,需要给目录加上绝对路径前缀,比如
${CMAKE_SOURCE_DIR}/src/project/*.cpp即可。
方式2:全局检索后过滤(更灵活,适合需要复杂规则的场景)
如果你需要先全量检索再做过滤,可以用list(FILTER命令筛选目标目录的文件,适配CMake 3.6及以上版本:
file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.hpp) # 仅保留src/project和tests目录下的文件 list(FILTER ALL_SOURCE_FILES INCLUDE REGEX "^${CMAKE_SOURCE_DIR}/(src/project|tests)/.*") add_custom_target( clang-format COMMAND /usr/bin/clang-format -style=file -i ${ALL_SOURCE_FILES} ) add_custom_target( clang-tidy COMMAND /usr/bin/clang-tidy ${ALL_SOURCE_FILES} -config='' -- -std=c++11 ${INCLUDE_DIRECTORIES} )
两种方式修改完成后,重新执行cmake配置,再运行clang-tidy或clang-format就只会处理指定目录下的文件了。
内容的提问来源于stack exchange,提问作者Rumeone
相关产品推荐
相关产品推荐

