初始状态下只有一个源代码文件

nosoul@linux:testCov> ls
test.c
nosoul@linux:testCov>

第一步:编译、链接、执行可执行文件

gcc -o a -coverage test.c -lgcov && ./a

这时会生成所需的记录文件(*.gcda,*.gcno)

nosoul@linux:testCov> ls
a test.c test.gcda test.gcno
nosoul@linux:testCov>

第二步:分析目标文件

nosoul@linux:testCov> gcov test.c
File 'test.c'
Lines executed:100.00% of
Creating 'test.c.gcov' nosoul@linux:testCov>

这时会生成*.gcov的文件,该类文件可能会有多个我们只需要打开目标文件对应的gcov文件即可

nosoul@linux:testCov> vim test.c.gcov

结果如下

        -:    :Source:test.c
-: :Graph:test.gcno
-: :Data:test.gcda
-: :Runs:
-: :Programs:
-: :#include <stdio.h>
-: :
-: :char Visit[];
-: :int Ans[];
-: :int N;
-: :int Cnt[];
-: :
#####: :void ForEmptyCheck()
-: :{
#####: : puts("Here");
#####: :}
-: :
: :int Sum()
-: :{
: : int i, j, Sum = ;
: : for(i = ; i < N; ++i) {
: : int min = Ans[i];
: : for(j = i; j < N; ++j) {
: : if(Ans[j] < min) {
: : min = Ans[j];
-: : }
-: : }
: : Sum += min;
-: : }
: : ++Cnt[Sum];
: : return Sum;
-: :}
-: :
: :void DFS(int s, int cnt)
-: :{
-: : int i;
: : char over = ;
: : Visit[s] = ;
: : Ans[cnt] = s + ;
: : for(i = ; i < N; ++i) {
: : if(!Visit[i]) {
: : over = ;
: : DFS(i, cnt + );
: : Visit[i] = ;
-: : }
-: : }
: : if(over) {
: : for(i = ; i < N; ++i) {
: : printf("%d ", Ans[i]);
-: : }
: : printf("\t%d\n", Sum());
-: : }
: :}
-: :
: :int main()
-: :{
-: : int i;
: : N = ;
: : for(i = ; i < N; ++i) {
: : DFS(i, );
: : Visit[i] = ;
-: : }
: : for(i=; i<=; ++i)
-: : {
: : printf("%d ", Cnt[i]);
-: : }
: : puts("");
: : return ;
-: :}

其中ForEmptyCheck()前面有标记字符串“#####”的字样,表示该函数未被调用;

Sum()前面有标记数字“24”,表示该函数被调用了24次,刚好对应着4!=24

C/C++代码覆盖率生成的更多相关文章

  1. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  2. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  3. Karma +Jasmine+ require JS进行单元测试并生成测试报告、代码覆盖率报告

    1. 关于Karma Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner). 该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuou ...

  4. HttpRunnerManager平台异步生成及展示代码覆盖率报告

    ant+jacoco+jenkins+HttpRunnerManager代码覆盖率统计平台搭建 实现思路通过jenkins构建,并使用HttpRunnerManager异步实现报告更新与展示. 现在整 ...

  5. 【Azure DevOps系列】Azure DevOps生成代码覆盖率

    前言 在做单元测试时,代码覆盖率可以作为我们衡量代码质量的一个指标,本章我们将使用Azure DevOps帮助我们生成代码覆盖率的结果.Azure DevOps构建管道还是具有代码覆盖率选项的,在Vi ...

  6. jacoco-统计代码覆盖率并生成报告

    一.概述: 作为一个合格的测试人员,保证产品的软件质量是其工作首要目标,为了这个目标,测试人员常常会通过很多手段或工具来加以保证,覆盖率就是其中一环比较重要的环节. 通常我们会将测试覆盖率分为两个部分 ...

  7. Python 代码覆盖率统计工具 coverage.py

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

  8. 基于Grunt&Mocha 搭建Nodejs自动化单元测试框架(含代码覆盖率统计)

    Introduction Grunt 是一个基于任务的JavaScript 世界的构建工具 Mocha 是具有丰富特性的 JavaScript 测试框架,可以运行在 Node.js 和浏览器中,使得异 ...

  9. C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)

    关于代码覆盖率统计工具,Linux平台下,gcc内置支持gcov,通过编译时加参数选项,进行代码插桩,从而实现代码覆盖率.在Windows平台下,早在几年前,我还没找到特别好用又开源的覆盖率工具,所以 ...

随机推荐

  1. JavaScript中面向对象的的深拷贝和浅拷贝

    理解深拷贝和浅拷贝之前需要弄懂一些基础概念,内存中存储的变量类型分为值类型和引用类型. 1.值类型赋值的存储特点, 将变量内的数据全部拷贝一份, 存储给新的变量. 例如:var num = 123 : ...

  2. 非对称加密算法-RSA

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第8章“高等加密算法--非对称加密算法” 12.1.RSA(最经典的非对称加密算法) 特点: 使用一套密钥即可完成加解密(与D ...

  3. mydumper 快速高效备份mysql,按照表生成备份文件,快速恢复

    Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydumper. Mydum ...

  4. 显示隐藏文件 .DS_Store文件

    1. mac为了保护系统文件和减少对用户的干扰,提高用户体验,将一些系统文件隐藏了起来,如hosts配置文件,.DS_Store文件 (Desktop Services Store),.localiz ...

  5. Java期末设计(十三周)

    一.项目完成计划     十三周和十四周完成用户交互界面的设计(1.登陆界面2.订票以及查询界面3.用户管理界面4.退票界面):     十三周完成登陆界面,十四周完成订票以及查询界面,用户管理界面和 ...

  6. js 简繁体字转换

    有些项目需要用到简体和繁体两种字体,在js前台进行转换比较方便而且显示速度没有延时 是一个比较好的解决方案. var _isFT_CS = 0// 简体 var _isFT_CT = 1// 繁体 v ...

  7. Easy51RTOS入门级初略分析

    main.c #include "reg51.h" #include "os_cfg.h" #define TASK_DELAY0 TIME_PER_SEC/1 ...

  8. BOM 和DOM

    BOM 1.BOM:浏览器对象模型(Browser Object Model)尚无正式标准: 2.Window 对象:所有浏览器都支持 window 对象.它表示浏览器窗口. 3.Window 尺寸 ...

  9. Android 取源码时 error: could not verify the tag 'v1.12.4'的解决

    原帖地址http://forum.xda-developers.com/showthread.php?p=46100064也没说啥原因 repo init -u git://github.com/Cy ...

  10. PCA and kmeans MATLAB实现

    MATLAB基础知识 l  Imread:  读取图片信息: l  axis:轴缩放:axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置 x.y 和  ...