Linux下c/c++项目代码覆盖率的产生方法

来源:转载

最近做了一系列的单元测试相关的工作,除了各种规范及测试框架以外,讨论比较多的就是关于代码覆盖率的产生,c/c++与其他的一些高级语言或者脚本语言相比较而言,例如 Java、.Net和php/python/perl/shell等,由于没有这些高级语言和脚本语言的反射的特性,其代码覆盖率的产生过程会稍微复杂一些。发现许多同学对C++的覆盖率如何产生在都不太清楚,这里做一个简单的介绍。

一、基本使用方法

在Linux上的c/c++开发一般都使用gcc/g++作为主要的编译器,如果需要产生覆盖率数据需要在Makefile或者Scons文件中做下面的编译链接设置,

  • 编译的时候,增加 -fprofile-arcs -ftest-coverage 或者 –coverage;
  • 链接的时候,增加 -fprofile-arcs 或者 –lgcov;
  • 打开–g3 选项,去掉-O2以上级别的代码优化选项;否则编译器会对代码做一些优化,例如行合并,从而影响行覆盖率结果;

分享给朋友:
您可能感兴趣的文章:
随机阅读: