当前位置: 首页 > news >正文

代码覆盖率工具OpenCppCoverage在Windows上的使用

      OpenCppCoverage是用在Windows C++上的开源的代码覆盖率工具,源码地址为https://github.com/OpenCppCoverage/OpenCppCoverage ,最新发布版本为0.9.9.0,License为GPL-3.0。

      从https://github.com/OpenCppCoverage/OpenCppCoverage/releases 下载OpenCppCoverageSetup-x64-0.9.9.0.exe ,并双击安装。

      OpenCppCoverage的主要用途是单元测试覆盖率。Features包括:

      (1).支持带有程序数据库文件(program database file, .pdb)的编译器;

      (2).只需使用OpenCppCoverage运行你的程序,无需重新编译你的应用程序;

      (3).网页报告;

      (4).line coverage;

      (5).作为Visual Studio插件运行:能用于生成与Visual Studio 2013, 2015和2017兼容的插件;

      (6).Jenkins支持;

      (7).支持优化构建;

      (8).排除(exclude)基于正则表达式的行;

      (9).子进程覆盖;

      (10).运行多个代码覆盖率并将它们合并到单个报表中.

      注意事项:

      (1).通过执行OpenCppCoverage.exe --help 可查看支持哪些输入参数

      (2).执行方式: OpenCppCoverage.exe [options] -- program_to_run optional_arguments

      (3).需要在Debug模式下执行;

      (4).--sources:指定需要进行测试覆盖率的源文件路径,后指定的源文件路径需要是绝对路径,不能有.或..,可出现多次;

      (5).--excluded_sources:指定不参与测试覆盖率的源文件路径,后指定的源文件路径需要是绝对路径,不能有.或..,可出现多次;

      (6).--export_type:指定结果文件输出的路径,如: --export_type html:E:\test

      (7).执行完后,会生成一个新的目录名为CoverageReport-local time,如CoverageReport-2023-02-10-09h05m48s,双击打开此目录下的index.html即可查看代码覆盖情况.

      这里使用https://blog.csdn.net/fengbingchun/article/details/78825004 中的代码进行测试,执行命令如下图所示:

      双击打开CoverageReport-2023-02-11-13h39m08s目录下的index.html,结果如下图所示:

      然后,再点击链接"E:\GitCode\Messy_Test\lib\dbg\x64_vc12\Library.dll",结果如下图所示:因为我们测试的是对库Library的代码覆盖情况,这里显示的是sources时指定的路径,即生成Library库时所需要的源文件,这里只有两个library.hpp, library.cpp,如果有更多源文件,这里会显示更多,从此页面可看到我们的测试代码覆盖library中每个文件的覆盖情况

 

       如library.cpp,覆盖率为61%,可点击此library.cpp链接,显示结果如下图所示:浅绿色为我们的测试代码覆盖到的,淡粉色为我们的测试代码没有覆盖到的

       GitHub:https://github.com/fengbingchun/Messy_Test

http://www.lryc.cn/news/3018.html

相关文章:

  • 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合
  • Python_pytorch
  • 【Java|golang】2335. 装满杯子需要的最短总时长
  • shell编程之sed
  • 安全寒假作业nginx反向代理+负载均衡上传webshell重难点+apache漏洞
  • day35|01背包问题、416. 分割等和子集
  • Linux内核启动(3,0.11版本)内核启动完成与进入内核main函数
  • 【2023】Prometheus-Alertmanager高可用集群
  • 2023-2-11 刷题情况
  • 2019_41 考研408
  • Linux账号与用户组
  • 有趣的Hack-A-Sat黑掉卫星挑战赛——定位卫星Jackson
  • JAVA集合专题3 —— vector + LinkedList + Set
  • Scout:一款功能强大的轻量级URL模糊测试与爬取工具
  • leaflet 解决marker呈现灰色边框的问题
  • MySQL JSON类型字段的查找与更新
  • element Ui树状图控件 spring boot Vue 实现角色授权功能
  • 已解决sc delete MongoDB卸载MongoDB拒绝访问。
  • python的opencv操作记录11——阈值分割
  • Python-项目实战--飞机大战-英雄登场(7)
  • 寒假安全作业nginx-host绕过实例复现
  • RocketMQ-消息消费模式 顺序消费
  • 一、Java并发编程之线程、synchronized
  • 12.hadoop系列之MapReduce分区实践
  • 有了独自开,一个人就是一个团队
  • web期末复习 2023.02.11
  • 第44章 用户密码实体及其约束规则的定义实现
  • 聊聊并发与锁
  • 开源项目 —— 原生JS实现斗地主游戏 ——代码极少、功能都有、直接粘贴即用
  • Linux第四讲