是否可以使用ccache或类似方法加速clang-tidy?

Tim*_*gus 9 c c++ static-analysis ccache clang-tidy

自从ccache在我们的CI服务器上使用以来,我们发现在构建时间方面的瓶颈现在是我们的静态分析过程clang-tidy,以及其他工具。有人知道有一种clang-tidy类似于ccache普通编译器的加速方法吗?

Fel*_*oid 5

谢谢你的提问和大家的回答。

在努力使ejfitzgerald/clang-tidy-cache在没有任何像样的文档或帮助的情况下工作之后,我尝试了matus-chochlik/ctcache。安装和配置确实要容易得多。

这是我们在安装后自动将其与 cmake 一起使用的代码片段

find_program (CLANG_TIDY_CACHE_PATH NAMES "clang-tidy-cache")
if (CLANG_TIDY_CACHE_PATH)
    find_program (_CLANG_TIDY_PATH NAMES "clang-tidy" "clang-tidy-15" "clang-tidy-14" "clang-tidy-13" "clang-tidy-12")

    # Why do we use ';' here?
    # It's a cmake black magic: https://cmake.org/cmake/help/latest/prop_tgt/LANG_CLANG_TIDY.html#prop_tgt:%3CLANG%3E_CLANG_TIDY
    # The CLANG_TIDY_PATH is passed to CMAKE_CXX_CLANG_TIDY, which follows CXX_CLANG_TIDY syntax.
    set (CLANG_TIDY_PATH "${CLANG_TIDY_CACHE_PATH};${_CLANG_TIDY_PATH}" CACHE STRING "A combined command to run clang-tidy with caching wrapper")
else ()
    find_program (CLANG_TIDY_PATH NAMES "clang-tidy" "clang-tidy-15" "clang-tidy-14" "clang-tidy-13" "clang-tidy-12")
endif ()

set (CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_PATH}")
Run Code Online (Sandbox Code Playgroud)

有了它,如果clang-tidy-cache位于路径中,它将与任何找到的 一起使用clang-tidy

在构建过程中,我们CTCACHE_DIR在构建之间定义并保留它们。

在我们的CI中,它使 linting 时间从 330 分钟减少到 22 分钟,因此速度几乎快了 15 倍!