未提供项目描述
项目描述
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 最后打印。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。