覆盖率测试工具的分层

发布时间 2023-10-27 04:48:58作者: ffl

许多软件都有分层。C/C++代码的覆盖率工具亦如此。

最底层是GCC支持的编译和收集两个底层:

  • 编译选项:-g -fprofile-arcs -ftest-coverage
  • 收集工具:gcov, gcov-tool

往上一层是覆盖率报告生成工具,有几种:

  • lcov, Linux 的覆盖率报告就是用这个生成的,有1.x版本和2.0版本。这个都是用perl 写的,但是它 2.0版本只有预编译了centos的rpm包,没有ubuntu的dep包,安装非常慢。而且,这个工具只输出html 格式,不利于结构化处理。
  • gcovr,使用Python写的,内部也是对 gcov 处理结果的二次处理。这个工具可以输出 html、cvs、json等丰富的格式。Python项目也更有利于按需修改。缺点是官方对于bug的修复不是很积极。

用户层,如果用户要做覆盖率统计,多半是需要基于 lcov/gcor > gcov 做进一步的封装,得到一个自己的 xxcov 工具或者系统。分层结构是: xxcov > gcovr/lcov > gcov/gcov-tool

这就是工具的分层。和 CMake > Makefile/Ninja > gcc/clang/msvc 的编译工具链分层一个道理。

--end--