You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:06:02