代码覆盖度工具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)使用 的相关文章

  • Structured Streaming Programming Guide-2.3.0

    概览 结构化流是一个可伸缩和容错的流处理引擎 xff0c 内置在Spark SQL 引擎中 你可以以对静态数据表达批处理计算的方式表达你的流计算 Spark SQL引擎会注意逐渐 持续第运行 xff0c 并随着流数据不断到来而更新最终的结果
  • Excel 2013 Power Programming with VBA 翻译

    第14 章 xff1a 基于VBA开发的Excel实用工具 545页 是什么让它成为一个优秀的工具 xff1f Excel工具 xff0c 理所应当的让你的工作变得更容易或者更有效 但是 如果你正在为其他用户开发一个实用工具 xff0c 你
  • 《Qt5 C++ GUI Programming cook book 》笔记 1

    一 xff0c 前言 第一章 xff0c 使用QT Designer 和QT Quick Designer自定义设计用户界面 第二章 xff0c 通过增强的状态机框架和动画框架 xff0c 制作用户界面动画 第三章 xff0c 使用QT内建
  • 《Programming in Lua 3》读书笔记(十六)

    日期 xff1a 2014 7 23 Part The Standard Libraries 20 The Table Library table库包含一些辅助函数用以类似与数组一样操作table 提供了从list内插入和删除元素的操作 x
  • 《Programming in Lua 3》读书笔记(十八)

    日期 xff1a 2014 7 28 Part The Standard Libraries 22 The I O Library Lua的I O库提供了两种不同的文件处理模式 简单模式以I O操作是基于当前的输入文件和输出文件的 xff1
  • Cannot Load Flash Programming Algorithm !错误解决方案,亲自验证过的几套方案

    当你下载程序的时候遇到Cannot Load Flash Programming Algorithm xff01 错误的时候是不是很崩溃 xff1f 按字面翻译的意思大概是编程算法不对 xff1b 一 这个问题我们一般先检查设备是否连接和编
  • 表述编程语言(Declarative Programming Language)

    在计算机科学中 表述程序语言是一种描述问题而不是定义解决方案的高级语言 一个表述程序语言描述问题 xff0c 而一个命令程序语言规定了要执行的命令 表述编程有两个定义 xff0c 目前都在使用 一种定义 xff0c 如果一个程序只是描述了某
  • 《Programming in Lua 3》读书笔记(九)

    Part 已经看完了 xff0c 然后进入了part 阶段了 日期 xff1a 2014 7 6 Part 11 Data Structures Lua中的数据结构都是以table实现的 队列 List 61 function List n
  • PTA 浙大版《C语言程序设计(第3版)》题目集--练习2-1 Programming in C is fun!

    题目 本题要求编写程序 xff0c 输出一个短句 Programming in C is fun 输入格式 本题目没有输入 输出格式 在一行中输出短句 Programming in C is fun 思路 一个简单的输出 代码 includ
  • 如何在 Ubuntu 20.04 上安装 Ruby

    Ruby 是动态的开源编程语言 其重点是编码简单性和提高生产力 第一个 Ruby 版本 0 95 于 1995 年发布 此后 在过去几年中发布了几个稳定的 Ruby 版本 在撰写本教程时 Ruby 2 7 0 是可用于开发的最新稳定版本 本
  • 如何在 Ubuntu 16.04 LTS 上安装 Swift

    Swift 是一种安全 快速 富有表现力的通用编程语言 专为软件设计模式而构建 它最适合系统编程 移动和桌面应用程序 Swift 提供了大量功能 使编程变得更加容易 同时为开发人员提供了真正的系统编程语言所需的控制能力 本教程将帮助您在 U
  • How to use jupyterlab in Ubuntu 22.04

    How to use jupyterlab in Ubuntu 22 04 Install Start Stop Install lwk qwfys pip install jupyterlab upgrade i http mirrors
  • 代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

    一 OpenCppCoverage cpp OpenCppCoverage是一个运行在windows上的程序 其不是在编译时进行插桩 而是在运行时 因此保证了代码和测试的一致性 参考文档 https github com OpenCppCo
  • coverage代码覆盖率测试工具:基本原理分析与使用

    coverage环境描述 本文环境python3 5 2 coverage版本4 3 1 coverage概述 代码覆盖率工具主要是为了检查测试用例覆盖了多少业务处理代码 在Django项目中 通过编写的测试用例 来检查后端业务逻辑接口的逻
  • 加载报道会话时出错(代码 5001)

    当我尝试使用 EclEmma 检查覆盖率时出现以下错误 请帮助我 加载报道会话时出错 代码 5001 错误同时 分析包片段 roo t java at F solo repository target test classes 代码 500
  • EclEmma、Java8 和 Lambda - 不涉及 lambda 表达式

    我在 Eclipse Luna 下有一个 Java 项目 使用 EclEmma 2 3 1 201405111647 最新 它使用 Jacoco 0 7 1 它支持 Java 8 如其变更日志 2 3 1版本 2014 05 11 Fixe
  • Eclemma 不提供报告导出选项

    我确信我犯了某种菜鸟错误 但我现在第一次使用 EclEmma 尽管检查了大量指南 但仍无法弄清楚如何导出我的覆盖率报告 作为参考 这是在 Windows 8 x64 上并使用 Eclipse Kepler 如果您需要更多信息 请告诉我 我可
  • EclEmma 代码覆盖率忽略 Junit 测试

    我发现在 JUnit 测试中不检查代码覆盖率的唯一方法是右键单击包 选择 Coverage as 然后选择配置 然后我可以取消单击我的测试包 我已经尝试了所有可能的组合来排除test在常规首选项 java 代码覆盖率 排除下 没有看到任何变
  • Eclemma 说 4 个分支中有 1 个未被覆盖,但它是哪个分支?

    有没有一种简单的方法可以告诉我缺少哪个分支 IE 我有一些这样的代码 if x y do stuff 在突出显示的覆盖范围中 Eclipse 中有一个黄点 上面写着 4 个分支中的 1 个缺失 但我想知道哪个分支丢失了 有一个非常简单的解决
  • assert groupType != null 如何包含4个分支

    我需要测试以下代码 public List

随机推荐

  • 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