llvm-cov:非实例函数的统计学。

问题描述 投票:0回答:1

我开始与 llvm-cov 来为我的项目制作覆盖率统计。llvm-cov 有几个类别:行覆盖率、函数覆盖率和区域覆盖率。但它们都只考虑了 实例化的函数没有实例化的函数会被直接忽略。这样一来,对于实例化函数比例较低的文件,很容易得到接近100%的覆盖率,这不是我想要的。是否可以让 llvm-cov 甚至考虑非实例函数或使其产生单独的覆盖率统计?

code-coverage llvm-cov
1个回答
0
投票

目前,很遗憾没有。这是llvm-cov中缺失的一个功能。

原因是,clang不会为非专业化的模板发出任何代码,覆盖率生成逻辑依赖于clang为函数发出代码。这是一个奇怪的限制。编译器确实有足够的信息来描述这些模板。

编辑:当然,还有一点需要考虑的是,C++翻译单元往往包含了绝对数量巨大的非特殊化uninstantiated模板,如果编译器为每一个模板都发出覆盖映射区域,编译时和二进制大小很可能会大规模倒退。

© www.soinside.com 2019 - 2024. All rights reserved.