[发明专利]增量代码覆盖率合并方法、系统、电子设备和存储介质在审
| 申请号: | 202210943288.0 | 申请日: | 2022-08-08 |
| 公开(公告)号: | CN115344479A | 公开(公告)日: | 2022-11-15 |
| 发明(设计)人: | 许建峰 | 申请(专利权)人: | 上海中通吉网络技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F40/143;G06F40/146 |
| 代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 牛晓 |
| 地址: | 201799 上*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 增量 代码 覆盖率 合并 方法 系统 电子设备 存储 介质 | ||
本发明涉及代码覆盖率技术领域,具体涉及一种增量代码覆盖率合并方法、系统、电子设备,本发明在实际应用中,解析测试完成后的XML文件并生成临时文件数据,其中,所述XML文件包含有覆盖率报告信息,且所述覆盖率报告信息至少包括:方法名、行号,基于所述覆盖率报告信息,获取差异代码,基于所述临时文件数据和所述差异代码生成exec文件,并解析,渲染生成合并后的增量代码覆盖率报告和新的XML文件,通过本发明的技术方案不仅能够看到本次与上次被覆盖的代码处,而且在源代码更改的情况下,之前更改的内容会跟随转移、合并至变更后的代码文件中,做到了根据历史覆盖率报告,重新计算增量代码覆盖率,使得覆盖率报告结果更加准确。
技术领域
本发明属于代码覆盖率技术领域,具体涉及一种增量代码覆盖率合并方法、系统、电子设备。
背景技术
JaCoCo通过修改类文件的字节码来做代码覆盖率统计,换句话说,探测字节码将被插入到原始类字节码的指定位置,形成新的字节码指令流,JaCoCo使用ASM字节码框架来修改字节码,JaCoCo的探测实际上是一个布尔值。当代码执行到探测位置时,将其设置为true,探测前面的代码将被认为已经执行,然后在与这部分代码对应的超文本标记语言文件中染色CSS样式(红色表示未覆盖,绿色表示覆盖,黄色表示部分覆盖),以形成最终的覆盖报告。
目前,通过对JaCoCo二次开发后,可以生成增量代码覆盖率报告,但是每次生成的报告只能看到本次与上次被覆盖的代码处,看不到之前或者是更早的代码覆盖处。若后期需要对源代码进行变更,在此之前覆盖的代码内容不会跟随转移合并至变更后的代码文件中,导致覆盖率报告结果不准确,甚至引起很多不必要的麻烦。
发明内容
为至少在一定程度上克服相关技术中存在的问题,本发明提供一种增量代码覆盖率合并方法、系统、电子设备,以解决在现有技术中在后期对源代码进行变更时,之前覆盖的代码内容不会跟随转移合并至变更后的代码文件中,从而导致覆盖率报告结果不准确的技术问题。
为实现以上目的,本发明采用如下技术方案:
第一方面,
本发明提供一种增量代码覆盖率合并方法,其特征在于,所述方法包括:
解析测试完成后的XML文件并生成临时文件数据,其中,所述XML文件包含有覆盖率报告信息,且所述覆盖率报告信息至少包括:方法名、行号;
基于所述覆盖率报告信息,获取差异代码;
基于所述临时文件数据和所述差异代码生成exec文件,并解析,渲染生成合并后的增量代码覆盖率报告和新的XML文件。
进一步地,所述解析测试完成后的XML文件并生成临时文件数据,其中,所述XML文件包含有覆盖率报告信息,且所述覆盖率报告信息至少包括:方法名、行号,具体为:
解析上一次测试完成后生成的携带有覆盖率报告信息的XML文件。
进一步地,所述基于所述覆盖率报告信息,获取差异代码,具体为:
接收ClassName合并后的覆盖率文件,并根据所述覆盖率文件中的覆盖率报告信息,判断所述覆盖率文件是否在上一次测试中被覆盖:
若是,则判定为非差异代码;
若否,则判定为差异代码。
进一步地,所述基于所述临时文件数据和所述差异代码生成exec文件,并,渲染生成合并后的增量代码覆盖率报告和新的XML文件,具体为:
根据所述临时文件数据和所述差异代码,使用改造后JaCoCo生成新的exec文件,通过Report服务设置方法与之对应的行号,并重现渲染行覆盖情况,生成合并后的增量代码覆盖率报告新的XML文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海中通吉网络技术有限公司,未经上海中通吉网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210943288.0/2.html,转载请声明来源钻瓜专利网。





