安装

官网下载地址: https://www.bullseye.com/cgi-bin/download

安装过程中需要License, 可以申请评估版本的key或者直接从官网渠道购买

Ubuntu18.04为例:

/install --prefix /opt --key {LICENSE_KEY}

常用命令

  • BullseyeCoverage状态切换:
cov01 -1 # Enable BullseyeCoverage
cov01 -0 # Disable BullseyeCoverage
cov01 -s # Display BullseyeCoverage Status
  • 转换扫描结果为可读格式:
covhtml -f xxx.cov /home/xxx  # convert to html
covxml -f xxx.cov /home/xxx # convert to xml
  • 合并多个扫描结果:
covmerge -c -f output.cov input1.cov input2.cov  # merge multi *.cov

使用步骤

假设BullseyeCoverage安装于/opt/BullseyeCoverage/bin

# cd CODE_BUILD_PATH
export PATH=/opt/BullseyeCoverage/bin:$PATH
export COVFILE=`pwd`/xxx.cov
export COVERAGE_REPORT=`pwd`/xxx_cov_report.xml
cov01 -1
make && test
covhtml -f xxx.cov /home/xxx

分析

https://www.bullseye.com/help/report-annotation.html

结果中的各种符号解析:

  • ->: 表示一个不完整的覆盖, 一般和T/F组合使用
  • / X: 表示下列情况之一已触达/未触达:
    • 函数 / lambda表达式被执行到
    • switch标签被执行到
    • try-catch语句块被执行到
    • for循环语句块被执行到
  • T / F: 表示当前判断bool的分支只跑了其中一个情况, TF表示均有覆盖到
  • t / f: 表示当前if的判断表达式里面的各个小分量的分支覆盖情况
  • k: 表示绝对的判断条件, 因为百分百会跑向某个分支,所以这个仅仅是为了标记而已
  • /: 表示事件被排除在汇总结果之外

*排除不想扫描的代码

  • 排除文件扫描:covselect -a '!**/*_test*.cpp' (排除当前目录下任意一级目录下的所有*_test*.cpp)
  • 排除代码块: #pragma BullseyeCoverage off / #pragma BullseyeCoverage on

参考文档

BullseyeCoverage——C/C++代码覆盖率分析工具的更多相关文章

  1. Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...

  2. VS2013单元测试及代码覆盖率分析--Xunit

    1,Javaweb中有jmeter.jacoco.ant.badboy等集成测试代码覆盖率的方式,C#代码的覆盖率怎么测试呢?VS2013的IDE上本身并未集成测试的工具,以下讲解VS2013中C#代 ...

  3. C/C++调试分析工具

    一.静态分析工具 cppcheck cppcheck主要用于对C/C++源代码进行分析检查的一个开源工具,可以用来检测未使用的变量.越界访问.内存泄漏等问题. 使用方法 cppcheck --enab ...

  4. 调试分析工具 (C/C++)

    一.静态分析工具 cppcheck cppcheck主要用于对C/C++源代码进行分析检查的一个开源工具,可以用来检测未使用的变量.越界访问.内存泄漏等问题. 使用方法 cppcheck --enab ...

  5. Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...

  6. 【转】gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  7. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  8. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  9. Java 性能分析工具 , 第 1 部分: 操作系统工具

    引言 性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置 ...

随机推荐

  1. jQuery 第十章 ajax 什么是回调地狱 优化回调地狱

    回调地狱 什么是回调地狱,回调函数,一个嵌套着一个,到最后,缩略图成了 一个三角形, 造成了可阅读性差,可阅读性差就代表代码的可维护性 和 可迭代性差,最后还有一个就是可扩展性差. 也不符合设计模式的 ...

  2. 自定义JSTL Tag

    <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java ...

  3. Java基础教程——File类、Paths类、Files类

    File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: impor ...

  4. Java基础教程——Set

    Set·无序,不重复 HashSet 特点:没有重复数据,数据不按存入的顺序输出. HashSet由Hash表结构支持.不支持set的迭代顺序,不保证顺序. 但是Hash表结构查询速度很快. 创建集合 ...

  5. XOR性质

    异或XOR的性质: 1. 交换律 2. 结合律 3. x^x = 0 -> 偶数个异或为0 4. x^0 = x -> 奇数个异或为本身 5. 自反性:a^b^b = a^0 =a

  6. 转载的一篇文章eclipse添加插件

    eclipse没有(添加)"Dynamic Web Project"选项的方法 转载海边的第八只螃蟹 最后发布于2015-11-24 21:24:15 阅读数 40814  收藏 ...

  7. Beta冲刺随笔——Day_Six

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...

  8. rest-framework 解析器

    一 解析器的作用: 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格 ...

  9. 整理一下dedecms的相关知识

    dedecms更改数据库连接 文件   data/common.inc.php ------------------------------------------------------------ ...

  10. 使用Verilog搭建一个单周期CPU

    使用Verilog搭建一个单周期CPU 搭建篇 总体结构 其实跟使用logisim搭建CPU基本一致,甚至更简单,因为完全可以照着logisim的电路图来写,各个模块和模块间的连接在logisim中非 ...