3

我开始llvm-cov为我的项目生成覆盖率统计数据。llvm-cov有几类:线路覆盖、功能覆盖和区域覆盖。但是他们都只考虑实例化的函数,没有实例化的函数被简单地忽略。这样,对于实例化函数百分比较低的文件,很容易获得接近 100% 的覆盖率,这不是我想要的。是否可以llvm-cov考虑甚至未实例化的功能或使其产生单独的覆盖率统计信息?

4

1 回答 1

1

目前,不幸的是没有。这是 llvm-cov 中缺少的功能。

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

编辑:当然,要考虑的另一点是 C++ 翻译单元往往包含绝对大量的未专门化/未实例化的模板,如果编译器要为每个模板发出覆盖映射区域,编译时间和二进制大小可能会倒退大量地。

于 2020-04-22T20:27:47.473 回答