原标题:一文详解C/C++代码覆盖率--gcov/lcov/gcovr
统计C/C++代码覆盖率的工具很多,比如OpenCppCoverage可以与VS工具配合,获取并展示代码覆盖率简单直观,但是在Linux、Mac等系统该如何统计呢?一般的持续集成工具(Jenkins、gitlab-ci等)中又该如何统计呢?
准备工具
请参考教程安装即可:
GCC
CMake
Google Test
gcov
lcov
gcovr
代码覆盖率
代码覆盖率一般包含以下几种类型:
函数覆盖率:描述有多少比例的函数经过了测试。
语句覆盖率:描述有多少比例的语句经过了测试。
分支覆盖率:描述有多少比例的分支(例如:if-else,case语句)经过了测试。
条件覆盖率:描述有多少比例的可能性经过了测试。
因此一般的覆盖率结果也分为几种不同的类型。
gcov
gcov是由gcc工具链提供的代码覆盖率生成工具,可以很方便的和GCC编译器配合使用,通常情况下,直接安装gcc工具链,也就同时包含了gcov命令行工具。
对于代码覆盖率工具所做的工作,可以简单的理解为:标记一次运行过程中,哪些代码被执行过,哪些没有执行。
因此,即便没有测试代码,直接运行编译产物也可以得到代码的覆盖率。只不过,通常情况下这样得到的