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

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. 前端面试题2016--HTML

    本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可 ...

  2. 189. Rotate Array

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...

  3. C# 图片的裁剪,两个图片合成一个图片

    图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary>         /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png  新图1_ne ...

  4. 处理GitHub不允许上传大于100M文件问题

    第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你自己项目的路径) 第二步输入命令 git rm --cached/Users/Dora/Desktop/ ...

  5. Devexpress - office - 效果

    项目开发时需要设计好看的UI界面,因公司使用Devexpress控件,因此用到了Devexpress自带的office效果 具体案例 新建一个RibbonForm模版 删除clientPanel(不删 ...

  6. mysql 找回密码方法

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...

  7. 转-IE浏览器自动配置代理脚本-Proxy.PAC文件及PAC相关语法

    用笔记本上网时,往返家里和单位,因为单位是用的代理上网,家里是直接连接.因此每次都要修改IE的代理设置,虽然是个小事,但是每次都要修改总是有点烦 ,于是参考GOOGLE,写了一个自动配置代理的脚本.这 ...

  8. wordpress 获取特色图片url方法

    制作主题是需要获取特色图片,直接获取到url能更好的编辑css样式 <?php $large_image_url = wp_get_attachment_image_src( get_post_ ...

  9. MFC学习笔记(一)

    个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...

  10. $scope 的生命周期

    当Angular关心的事件发生在浏览器中时,比如用户在通过ng-model属性监控的输入字段中输入,或者带有ng-click属性的按钮被点击时,Angular的事件循环都会启动.这个事件将在Angul ...