代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

2023-11-07

一、OpenCppCoverage(cpp)

OpenCppCoverage是一个运行在windows上的程序,其不是在编译时进行插桩,而是在运行时,因此保证了代码和测试的一致性。 参考文档:https://github.com/OpenCppCoverage/OpenCppCoverage

1、命令行方式

(1)下载和安装

下载地址:https://github.com/OpenCppCoverage/OpenCppCoverage/releases 安装方法:正常安装,没有什么注意事项(安装时勾选添加环境变量)

(2)执行方法

假设已有程序MatrixUDG,生成的可执行文件名称为:MatrixUDG.exe,存放目录:F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug(exe文件在程序运行之后便会自动生成),则执行步骤为: Step1:打开命令行提示符 Step2:将当前目录切换到F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug Step3:使用下列命令:
OpenCppCoverage.exe --sources F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug -- MatrixUDG.exe

Step4:自动生成的CoverageReport存放在当前目录。
注:遗留问题:生成的html文件显示不出详细内容,只有title

2、作为VisualStudio插件

(1)插件安装

打开VisualStudio --> 工具 --> 扩展和更新 --> 联机 --> 右上角输入OpenCppCoverage,在下面的结果会出现“OpenCppCoverage Plugin”点击安装即可(安装中需要将VisualStudio重启)

(2)执行

程序写好,编译执行之后,点击“工具 --> Run OpenCppCoverage”,程序运行,将命令行窗口关掉,则代码会出现红色或者绿色的阴影,下面会出现Coverage的报告,如下图:

这里写图片描述

二、EclEmma(java)

EclEmma是一款集成在Eclipse上的测试代码覆盖度的插件。

(1)下载和安装

下载地址:https://sourceforge.net/projects/eclemma/ ,解压到[eclipse_home]\dropins\中。 安装(我的版本是Eclipse neon.3):打开eclipse --> help --> install new software --> add --> local --> 选择你下载的eclemma,点OK就可以安装,然后按提示重启。

(2)执行

Step1:代码写好之后,运行java程序 Step2:右击代码 --> Coverage As --> Java Application,执行完毕,查看运行结果,如下图:

这里写图片描述
Step3:导出报告:右击Project name – > Export --> 搜索CoverageReport --> 点击CoverageReport --> 选择存储路径即可,导出的html文件如下图:
这里写图片描述

三、Coverage(python)

Coverage支持分支覆盖。

安装方法:

下载地址:https://pypi.python.org/pypi/coverage
安装方法:直接安装,安装之后将E:\Anaconda\Scripts(如果没有安装Anaconda,这个目录应该在python的安装目录下)添加到path环境变量中。

1、命令行方式

命令详见: http://coverage.readthedocs.io/en/latest/cmd.html 关键命令如下: 这里以calculator.py为例,这个py文件目录为:F:\code\python\workspace1\testCoverage\

(1)run
将当前目录切换至F:\code\python\workspace1\testCoverage\,输入下列命令:

coverage run calculator.py

执行完之后,会自动生成一个覆盖率统计结果文件,其后缀名为.coverage。
(2)report
有个.coverage文件,可以使用report参数将统计结果在命令行中打印出来,具体命令如下:

coverage report

(3)html
html参数可以生成html测试报告,具体命令如下:

coverage html -d covhtml

具体命令行截图如下:
这里写图片描述
html文件如下图所示:
这里写图片描述

1、代码API调用方式

使用如下代码:
import coverage

cov = coverage.coverage()
cov.start()

#coding

cov.stop()
cov.report()
cov.html_report(directory='covhtml')

注:遗留问题:使用coverage.py API方法调用不成功,总是提示“Coverage.py warning: No data was collected. (no-data-collected)”错误。

参考文章:
http://www.cnblogs.com/zoro-robin/p/5612472.html
http://coverage.readthedocs.io/en/latest/
http://www.cnblogs.com/coderzh/p/OpenCppCoverage.html
http://www.cnblogs.com/Ming8006/p/5811425.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用 的相关文章

随机推荐

  • GBDT算法详解

    GBDT基本思想 GBDT的基本结构是决策树组成的森林 学习方式是梯度提升 具体的讲 GBDT作为集成模型 预测的方式是把所有子树的结果加起来 GBDT通过逐一生成决策子树的方式生成整个森林 生成新子树的过程是利用样本标签值与当前树林预测值
  • dp(动态规划)思考

    dp的核心思想是分治策略和表存储 分治策略并非dp所独有 很多算法都运用了把问题拆解为子问题的做法 比如递归 表存储应该是dp比较独有的一种方式 通过存储一些中间结果 可以避免重复计算 从而提升程序运行的速度 def max length
  • 简述3032路pcm帧的结构_基于5G NSA组网结构下用户体验提升研究

    摘要 针对现阶段5G NSA组网结构模式下 开展5G特性研究 以研究5G新一代通信技术与5G相关技术特点为前提 结合实际测试与分析结果 通过对DC双连接 时隙配比以及MASSIVE MIMO差异性3个方面进行分析测试对比 大幅度提升NSA组
  • UnityWebRequest向后端Get数据,后端显示 code 400, message Bad request version 和 HTTPStatus.BAD_REQUEST

    结论 我遇到这个问题是因为UnityWebRequest Get url 中的url是 https localhost port 但是用python flask写的后端服务器url却是 http localhost port 当我把Unit
  • JDBC(二)

    DatabaseMetaData 接口 通过这个接口中的方法可以查看数据库的整体综合信息 DatabaseMetaData 给出的信息描述 DBMS 所提供的事务支持水平 比如 查看驱动程序 数据库 的版本号等 boolean suppor
  • Node.js后端开发 - 进阶篇 #8 express框架之路由模块的封装1

    目录 一 前言 二 路由模块的封装 1 初始化项目 安装express框架 1 npm init y 初始化项目 生成package json文件 2 npm init y 和 npm init 区别 3 安装 express 框架 生成
  • 卸载 SQL Server Management Studio 的操作工具

    我们今天是要和大家一起讨论的是卸载 SQL Server Management Studio 时所要用到的实际操作工具 以及对实现卸载 SQL Server Management Studio 的实际操作步骤的具体描述 以下就是文章的主要内
  • Windows下 Cmake 没有生成makefile文件

    Windows下 Cmake 没有生成makefile文件 不是为了生成解决方案的 针对指令操作 1 主要是因为编译器选择的问题 很有可能选择到了vs的编译器MSVC 了导致生成了解决方案 2 如下操作 使用cmake G Unix Mak
  • 2023年最好用的办公AI工具,让你工作效率提升10倍!

    2023年是AI工具大爆发的一年 在效率办公领域 同样涌现出了很多优秀的AI办公工具 小编亲测了几款 都是宝藏好用的App 以下排名不分先后 一起来看看吧 AI办公工具哪个好 GitMind Notion AI 酷表ChatExcel 通义
  • 计算机老师副业能做什么,教师除了本职工作,还能做哪些副业?

    原标题 教师除了本职工作 还能做哪些副业 本文来源于微信公众号 教师帮 作者 小磊哥 图 互联网 如有转载 请联系并注明原出处 不知老师在学校有没有发现这么一种情况 当你正在为这个月的工资怎么分配而发愁的时候 坐在你身边的同事却春风得意 好
  • 模糊控制器 Matlab 源码程序设计

    模糊控制器 Matlab 源码程序设计 模糊控制是指在不确定 复杂的环境中 通过将自然语言转为数学形式 使用一定的逻辑运算来处理模糊信息 从而实现对系统的控制 在实际应用中 模糊系统已被广泛应用于各种领域 如自动控制 图像处理 数据挖掘等方
  • 软件测试用例编写方法

    边界值分析方法 概念 边界值其实就是一种黑盒测试方法 边界值本质上就是有效等价类和无效等价类的边界 1 边界范围节点 边界值的三个概念 上点 边界值上面的这个点 就是上点 正好等于 内点 有效等价类中的任意一个点 区间范围内的数据 离点 边
  • 改变数据类型

    int 是32 long 是64 numpy改变 pytorch改变 np th list 互换
  • CCF-CSP真题《202305-1 重复局面》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看 CCF CSP真题附题解大全 试题编号 202305 1 试题名称 重复局面 时间限制 1 0s 内存限制 512 0MB 问题描述 题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以
  • 如何实现概率性事件

    游戏中经常会遇到概率性的问题 比如装备升级的成功率 合成宝石的成功率 洗装备时出现随机属性条数的概率等 这些概率性事件具体是怎么实现的呢 在网上看了一些相关的文章 总结一下 首先需要了解两个函数rand 和srand 下面是百科里面的解释
  • 如何存储Ajax请求的响应值

    如何存储Ajax请求的响应值 一 背景 二 代码部分 三 总结 一 背景 开发者使用Ajax请求网络 获取到了返回的结果 但开发者不想将回调函数写的过于冗长 因此希望将Ajax请求的返回值存储到一个变量中 方便后期取用 二 代码部分 代码部
  • Qt简介以及工程创建

    Qt是一种跨平台应用程序和UI开发框架 只需要一次性开发应用程序 可应用于不同的系统 Qt不是一个严格的前后端 而是一种框架 Qt Creator是一种全新跨平台 Qt IDE集成开发环境 可以单独使用 也可以与Qt库和开发工具组成一套完整
  • Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08

    源码如下 include
  • 线性表顺序存储の介绍、应用 与 实践(第二章: 线性表 )

    一 线性表的介绍 线性表 线性表 linear list 是n个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使用的数据结构 常见的线性表 顺序表 链表 栈 队列 字符串 线性表在逻辑上是线性结构 也就说是连续的一条直线 但是在
  • 代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

    一 OpenCppCoverage cpp OpenCppCoverage是一个运行在windows上的程序 其不是在编译时进行插桩 而是在运行时 因此保证了代码和测试的一致性 参考文档 https github com OpenCppCo