我开始使用llvm-cov为我的项目生成覆盖率统计数据。llvm-cov有几种类型:行覆盖、功能覆盖和区域覆盖。但它们都只考虑实例化函数,忽略了没有实例化的函数。这样很容易获得接近100%覆盖率的文件,其中实例化函数的百分比很低,这不是我想要的。是否有可能让llvm-cov考虑甚至未实例化的函数,或者让它生成单独的覆盖统计信息?
发布于 2020-04-22 20:27:47
不幸的是,目前还没有。这是llvm cov中缺少的功能。
原因是clang不为非专用模板发出任何代码,覆盖生成逻辑依赖于函数发出的clang代码。这是个奇怪的限制。编译器确实有足够的信息来描述这些模板。
编辑:当然,需要考虑的另一点是,C++翻译单元往往包含绝对大量的非专门/非实例化模板,而且如果编译器要为每个模板发出覆盖映射区域,那么编译时间和二进制大小可能会大量回归。
https://stackoverflow.com/questions/57331600
复制相似问题