Skip to main content

未提供项目描述

项目描述

cltcache -- python3 clang-tidy 缓存

一个简单的缓存,可以缓存整洁的静态代码分析结果,以加快大型混乱代码库的构建过程。cltcache 与 ccache 类似,但用于 clang-tidy 静态代码分析结果。

用法

使用 pip 安装

pip3 install cltcache

在构建系统或配置中使用 cltcache 为所有 clang-tidy 调用添加前缀。

set(CMAKE_C_CLANG_TIDY "cltcache" "${CLANG_TIDY_PROGRAM}")
set(CMAKE_CXX_CLANG_TIDY "cltcache" "${CLANG_TIDY_PROGRAM}")
cmake -DCLANG_TIDY_PROGRAM="cltcache /usr/bin/clang-tidy" ..

最后,您必须手动管理存储在~/.cltcache. 如果您在 CI 中使用 cltcache,则需要在构建器之间分配缓存。如果您在本地使用 cltcache,则需要手动管理您的 cltcache,因为它会无限增长。这是一个有用的命令,它应该删除所有超过 60 天的缓存条目:

find ~/.cltcache -mtime +60 | xargs rm

为了合理的整洁使用,缓存应该非常小,以至于在升级计算机之前不需要清理它。使用以下命令检查缓存的磁盘使用情况:

du -hd0 ~/.cltcache

配置

默认情况下,从 ~/.cltcache/cltcache.cfg 加载了一些配置选项。有关它们的更多信息,请参阅此处的示例配置文件。

为什么?

C++ 代码的静态代码分析可能比编译消耗更多的时间和功率,同时生成的输出文件要小得多,尤其是在没有生成警告和错误的情况下。输出也基本上不会被客户消费,这意味着确保缓存的正确性并不那么重要。由于这些原因,静态代码分析应该比编译更适合缓存。因为 clang-tidy 可能在世界各地的大量 CI 管道中使用,所以应该可以通过缓存结果来节省大量能源。

如何?

缓存键是通过计算 gcc 预处理器结果的 sha256-hash、启用的 clang-tidy 检查和 clang-tidy 版本字符串生成的。

graph LR;
    clang-tidy_args-->g++_preprocessor;
    clang-tidy_args-->clang-tidy_version;
    clang-tidy_args-->clang-tidy_enabled_checks;
    g++_preprocessor-->preprocessor_sha256;
    clang-tidy_version-->version_sha256;
    clang-tidy_enabled_checks-->enabled_checks_sha256;
    preprocessor_sha256-->sha256;
    version_sha256-->sha256;
    enabled_checks_sha256-->sha256;
    sha256-->cache_key;

注意事项

正确性

cltcache 假定相同的预处理器输出、clang-tidy 版本和启用的检查将产生相同的结果,这不是保证。一种这样的情况是,如果将过滤的标头移动到不再过滤其警告和错误的路径。如果您对此感到担忧,您可能应该重新考虑您的优先事项。依赖 clang-tidy 到它的正确性比时间、金钱和环境更重要的地步,很少是一个可持续的策略。

输出顺序

不保留 stdout 和 stderr 的顺序。clang-tidy 的 stdout 先打印,stderr 最后打印。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

cltcache-1.1.2.tar.gz (5.2 kB 查看哈希

已上传 source

内置分布

cltcache-1.1.2-py3-none-any.whl (5.7 kB 查看哈希

已上传 py3