code-coverage - llvm-cov:未实例化函数的统计信息

标签 code-coverage llvm-cov

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

最佳答案

很遗憾,目前还没有。这是 llvm-cov 中缺少的功能。

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

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

关于code-coverage - llvm-cov:未实例化函数的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331600/

相关文章:

unit-testing - 当方法中的代码被 emma 覆盖时,为什么方法调用显示为未覆盖?

tfs - TFS 中特定开发人员的总体代码覆盖率

php - 使用代码覆盖率运行 PHPUnit 时出现 "Cannot redeclare class"错误

c++ - 多进程覆盖率报告

c++ - 你如何将 c++filt 与 llvm-cov 报告一起使用?

java - Intellij、JUnit 5 和 Java 11 的代码覆盖率不起作用

svn - 代码覆盖率和责任

code-coverage - 让llvm-cov与codecov.io交谈

c++ - LLVM 覆盖被 if-constexpr 混淆