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