Tim*_*gus 9 c c++ static-analysis ccache clang-tidy
自从ccache在我们的CI服务器上使用以来,我们发现在构建时间方面的瓶颈现在是我们的静态分析过程clang-tidy,以及其他工具。有人知道有一种clang-tidy类似于ccache普通编译器的加速方法吗?
谢谢你的提问和大家的回答。
在努力使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 倍!