安装

官网下载地址: 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

参考文档

最新文章

  1. Quick Cocos (2.2.5plus)CoinFlip解析(MenuScene display AdBar二次封装)
  2. Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
  3. 使用DataOutputStream写入int类型数字不能显示
  4. C遇到的问题
  5. 让Placeholder在IE中燥起来
  6. 嵌入式OS的现状、智能的物联网与未来的机器人
  7. MFC之常用控件(四)
  8. jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
  9. Python urllib和urllib2模块学习(三)
  10. ABP框架 - 嵌入资源
  11. Bootstrap3 表格-带边框的表格
  12. 02 Django REST Framework 序列化
  13. IP地址 0.0.0.0 是什么意思?
  14. idea 新建项目上传至git(coding)
  15. 【做题】51Nod1766树上的最远点对——直径&线段树
  16. Pycharm增加新安装Python的路径
  17. [原][unreal][UE][spark]分析unreal engine 虚幻引擎的粒子编辑器:Cascade
  18. 生成Release apk
  19. 解决redis远程连接不上的问题
  20. angular4 防二次重复点击

热门文章

  1. DNS系列—dig命令的使用
  2. SpringBoot整合Elasticsearch7
  3. Windows/Linux 代码共享,开发者称此举使Linux有了更差的结局
  4. 4 种高可用 RocketMQ 集群搭建方案!
  5. 生僻的mysql
  6. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?
  7. 自动化运维工具之Puppet变量、正则表达式、流程控制、类和模板
  8. vue绑定用户页面
  9. java并发编程实战《三》互斥锁(上)
  10. 第9.1节 Python的文件打开函数open简介