[发明专利]代码覆盖率的处理方法、装置、设备及存储介质在审
申请号: | 202011393628.4 | 申请日: | 2020-12-03 |
公开(公告)号: | CN112416794A | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 余卫平 | 申请(专利权)人: | 平安银行股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳市沃德知识产权代理事务所(普通合伙) 44347 | 代理人: | 高杰;于志光 |
地址: | 518000 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 覆盖率 处理 方法 装置 设备 存储 介质 | ||
本发明涉及一种计算机技术,揭露了一种代码覆盖率的处理方法、装置、设备及存储介质,该方法包括:开启JavaAgent代理程序,当接收网络请求时,基于JavaAgent代理程序为网络请求开启对应的处理线程,在处理线程内设置一变量;在运行应用程序时,获取应用程序的类文件,对类文件中的各个函数进行插桩;当应用程序在运行过程中调用到已插桩的函数时,基于JavaAgent代理程序录制已插桩的函数,并获取变量所记录的时间;在运行结束时,基于所记录的时间获取所录制的函数,对所录制的函数进行去重处理,得到被调用函数的数量;获取类文件中的调用关系,基于调用关系获取应用程序函数的总数;基于被调用函数的数量及总数计算覆盖率。本发明能够快速实时地获取覆盖率。
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码覆盖率的处理方法、装置、设备及存储介质。
背景技术
目前,为了快速粗略估计代码的质量,需要衡量代码方法的覆盖率,以分析未覆盖的方法是否存在代码夹带。Jacoco是一个针对Java语言开源的覆盖率工具,现有技术中一般使用Jacoco工具来得到代码覆盖率。利用jacoco工具分析覆盖率,一方面需要获取代码仓库权限,并获取源码,而仓库权限一般不会轻易获得,另一方面需要反复重启程序,重启会导致覆盖率数据丢失,因此,利用jacoco工具分析覆盖率时的处理效率低,不能实时快速地得到得到覆盖率。
发明内容
本发明的目的在于提供一种代码覆盖率的处理方法、装置、设备及存储介质,旨在快速实时地获取覆盖率,提高处理效率。
本发明提供一种代码覆盖率的处理方法,包括:
开启JavaAgent代理程序,当接收网络请求时,基于所述JavaAgent代理程序为所述网络请求开启对应的处理线程,在所述处理线程内设置一变量,所述变量的属性为时间;
在运行所述网络请求对应的应用程序时,获取预定目录下所述应用程序的类文件,基于所述JavaAgent代理程序对所述类文件中的各个函数进行插桩;
当所述应用程序在运行过程中调用到已插桩的函数时,基于所述JavaAgent代理程序录制所述已插桩的函数,并获取所述变量所记录的时间;
在所述应用程序运行结束时,基于所记录的时间获取所录制的函数,对所录制的函数进行去重处理,得到被调用函数的数量;
获取所述类文件中的调用关系,基于所述调用关系获取所述应用程序函数的总数;
基于被调用函数的数量及所述总数计算覆盖率。
本发明还提供一种代码覆盖率的处理装置,包括:
开启模块,用于开启JavaAgent代理程序,当接收网络请求时,基于所述JavaAgent代理程序为所述网络请求开启对应的处理线程,在所述处理线程内设置一变量,所述变量的属性为时间;
插桩模块,用于在运行所述网络请求对应的应用程序时,获取预定目录下所述应用程序的类文件,基于所述JavaAgent代理程序对所述类文件中的各个函数进行插桩;
录制模块,用于当所述应用程序在运行过程中调用到已插桩的函数时,基于所述JavaAgent代理程序录制所述已插桩的函数,并获取所述变量所记录的时间;
去重模块,用于在所述应用程序运行结束时,基于所记录的时间获取所录制的函数,对所录制的函数进行去重处理,得到被调用函数的数量;
获取模块,用于获取所述类文件中的调用关系,基于所述调用关系获取所述应用程序函数的总数;
处理模块,用于基于被调用函数的数量及所述总数计算覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于平安银行股份有限公司,未经平安银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011393628.4/2.html,转载请声明来源钻瓜专利网。