一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置制造方法及图纸

技术编号:28837068 阅读:13 留言:0更新日期:2021-06-11 23:34
本发明专利技术公开了一种基于JaCoCo基础上实现增量代码覆盖率统计的方法,所述方法包括:获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执行信息;在JVM中注入javaagent参数;使用JGit获取基线提交与测试提交之间的差异代码;对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得第一差异信息;根据所述第一差异信息,基于JaCoCo生成覆盖率模型解析所述exec文件获得增量代码的覆盖率报告。

【技术实现步骤摘要】
一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置
本申请涉及代码覆盖率统计领域,尤其涉及一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置。
技术介绍
目前,市场上java主要代码覆盖率工具包括EMMA和JaCoCo。JaCoCo优势:(1)JaCoCo支持分支覆盖、引入了Agent模式。(2)EMMA官网已经不维护了,JaCoCo是其团队开发的,可以理解为一个升级版。(3)JaCoCo社区比较活跃,官网也在不断的维护更新。Jacoco可以嵌入到Ant、Maven中,并提供了EclEmmaEclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。Jacoco包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstractmethods)、类覆盖(classes)等,但是并没有提供增量覆盖的解决方案。随着业务发展,存量代码较多,对当下敏捷开发,现有的全量代码覆盖率统计使用传统的Jacoco执行耗时较长,效率低下。
技术实现思路
本申请要解决的技术问题,在于提供一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置,以解决现有现有的全量代码覆盖率统计使用传统的Jacoco执行耗时较长,效率低下的技术问题。为实现上述目的,本申请采用下述技术方案:第一方面,本申请提供一种基于JaCoCo基础上实现增量代码覆盖率统计的方法,所述方法包括:获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执行信息;在JVM中注入javaagent参数;使用JGit获取基线提交与测试提交之间的差异代码;对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得第一差异信息;根据所述第一差异信息,基于JaCoCo生成覆盖率模型解析所述exec文件获得增量代码的覆盖率报告。第二方面,本申请提供一种基于JaCoCo基础上实现增量代码覆盖率统计系统,所述系统包括:第一获取单元,用于获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执行信息;第一注入单元,用于在JVM中注入javaagent参数;第二获取单元,用于使用JGit获取基线提交与测试提交之间的差异代码;第一解析单元,用于对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得第一差异信息;第二解析单元,用于根据所述第一差异信息,基于JaCoCo生成的覆盖率模型解析所述exec文件获得增量代码的覆盖率报告。第三方面,本申请提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、待码集或指令集,所述至少一条指令、所述至少一段程序、所述待码集或指令集由所述处理器执行以实现如上述第一方面所述的基于JaCoCo基础上实现增量代码覆盖率统计的方法。第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、待码集或指令集,所述至少一条指令、所述至少一段程序、所述待码集或指令集由处理器执行以实现如上述第一方面所述的基于JaCoCo基础上实现增量代码覆盖率统计的方法。本申请的有益效果是:本申请提供一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置,解决了敏捷模式下增量代码覆盖率统计的问题,从而做到快速高效反馈代码覆盖率报告,大大缩短了全量代码覆盖统计的时间,真正做到敏捷测试。附图说明图1为本申请一个实施例提供的一种基于JaCoCo基础上实现增量代码覆盖率统计的方法的流程示意图;图2为本申请一个实施例提供的一种基于JaCoCo基础上实现增量代码覆盖率统计系统的结构示意图;图3为本申请一个实施例提供的一种电子设备的结构示意图。具体实施方式下面通过具体实施例,并结合附图,对本申请的技术方案作进一步的具体描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请提供一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置,以解决现有现有的全量代码覆盖率统计使用传统的Jacoco执行耗时较长,效率低下的技术问题。以下结合附图,详细说明本申请中各实施例提供的技术方案。请参阅附图1,其示出了本申请一个实施例提供的一种基于JaCoCo基础上实现增量代码覆盖率统计的方法的流程示意图,所述方法包括:S101,获取测试完成后的exec文件;其中,所述exec文件至少包括探针的覆盖执行信息。针对步骤S101,在一个实施例中,通过tcp方式获取所述exec文件。S102,在JVM中注入javaagent参数;针对步骤S102,在JVM中注入javaagent参数后,使得java应用自动注入JVM。S103,使用JGit获取基线提交与测试提交之间的差异代码;S104,对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得第一差异信息;S105,根据所述第一差异信息,基于JaCoCo生成覆盖率模型解析所述exec文件获得增量代码的覆盖率报告。针对步骤S105,改造ClassProbesAdapter类的visitMethod方法获得生成覆盖率模型,基于上述获得生成覆盖率模型的方法,使覆盖率模型只对提取出的每个类的新增或者变更方法做解析,非指定类和方法不做处理。在一个实施例中,当获得所述覆盖率报告之后,通过批量查询数据库信息获取所述覆盖率报告。请参阅附图2,其示出了本申请一个实施例提供的一种基于JaCoCo基础上实现增量代码覆盖率统计系统的结构示意图,所述系统包括:第一获取单元201,用于获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执行信息;第一注入单元202,用于在JVM中注入javaagent参数;第二获取单元203,用于使用JGit获取基线提交与测试提交之间的差异代码;第一解析单元204,用于对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得第一差异信息;第二解析单元205,用于根据所述第一差异信息,基于JaCoCo生成的覆盖率模型解析所述exec文件获得增量代码的覆盖率报告。请参阅附图3,其示出了本申请一个实施例提供的一种电子设备的结构示意图,可以包括:至少一个网络接口302、存储器303和至少一个处理器301本文档来自技高网...

【技术保护点】
1.一种基于JaCoCo基础上实现增量代码覆盖率统计的方法,其特征是,所述方/n法包括:/n获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执/n行信息;/n在JVM中注入javaagent 参数;/n使用JGit获取基线提交与测试提交之间的差异代码;/n对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得/n第一差异信息;/n根据所述第一差异信息,基于JaCoCo生成覆盖率模型解析所述exec文件获/n得增量代码的覆盖率报告。/n

【技术特征摘要】
1.一种基于JaCoCo基础上实现增量代码覆盖率统计的方法,其特征是,所述方
法包括:
获取测试完成后的exec文件,其中,所述exec文件至少包括探针的覆盖执
行信息;
在JVM中注入javaagent参数;
使用JGit获取基线提交与测试提交之间的差异代码;
对所述差异代码进行解析,将所述差异代码使用更小的颗粒度进行切割获得
第一差异信息;
根据所述第一差异信息,基于JaCoCo生成覆盖率模型解析所述exec文件获
得增量代码的覆盖率报告。


2.根据权利要求1所述的基于JaCoCo基础上实现增量代码覆盖率统计的方法,
其特征是,通过tcp方式获取所述exec文件。


3.根据权利要求1所述的基于JaCoCo基础上实现增量代码覆盖率统计的方法,
其特征是,改造ClassProbesAdapter类的visitMethod方法获得生成覆盖率模型。


4.根据权利要求1所述的基于JaCoCo基础上实现增量代码覆盖率统计的方法,
其特征是,通过批量查询数据库信息获取所述覆盖率报告。


5.一种基于JaCoCo基础上实现增量代码覆盖率统计系统,其特征是,所述系统<...

【专利技术属性】
技术研发人员:邵磊
申请(专利权)人:浙江百应科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1