System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 已加载类的采集方法、代码覆盖率的确定方法及相关装置制造方法及图纸_技高网

已加载类的采集方法、代码覆盖率的确定方法及相关装置制造方法及图纸

技术编号:40558386 阅读:9 留言:0更新日期:2024-03-05 19:20
本实施例公开了一种已加载类的采集方法、代码覆盖率的确定方法及相关装置,其中所述方法包括:所述目标应用的进程,在所述进程中创建ClassLoader类的子类,所述子类继承所述ClassLoader类,所述子类包括findLoadedClass方法和可调用所述findLoadedClass方法的接口;将所述子类的classTable的存储地址设置为进程中运行的ClassLoader的classTable的存储地址;所述子类中的所述接口调用所述子类中的findLoadedClass方法,所述findLoadedClass方法从所述子类的classTable的存储地址对应的存储空间,查询所述进程的已加载类。

【技术实现步骤摘要】

本公开涉及计算机,具体涉及一种已加载类的采集方法、代码覆盖率的确定方法及相关装置


技术介绍

1、代码覆盖率可以反映软件的代码被执行的比例和程度,代码覆盖率可以为下线无用代码、优化代码包体积等提供依据,同时,代码覆盖率也能反映软件功能的使用热度,为线程资源分配等提供数据支撑。

2、已有的代码覆盖率采集方案需要侵入代码(比如代码插桩)采集代码覆盖率,这种方式适用于对在线服务的软件代码进行代码覆盖率采集,但对于需要安装在终端设备上的应用(比如安卓应用),由于代码覆盖率需要在终端实际运行该应用时进行,因此,这种方式会导致应用软件的性能、稳定性变差,有可能影响用户体验。

3、为此,需要提供能够在终端设备实际运行应用的过程中采集代码覆盖率的方案,该方案不会影响应用的性能和稳定性。


技术实现思路

1、本公开实施例提供一种已加载类的采集方法、代码覆盖率的确定方法及相关装置。

2、第一方面,本公开实施例中提供了一种已加载类的采集方法,其中,用于在目标应用运行的过程中采集所述目标应用的已加载类,以用于代码覆盖率的计算,该方法包括:

3、所述目标应用的进程,在所述进程中创建classloader类的子类,所述子类继承所述classloader类,所述子类包括findloadedclass方法和可调用所述findloadedclass方法的接口;

4、将所述子类的classtable的存储地址设置为进程中运行的classloader的classtable的存储地址;

5、所述子类中的所述接口调用所述子类中的findloadedclass方法,所述findloadedclass方法从所述子类的classtable的存储地址对应的存储空间,查询所述进程的已加载类。

6、第二方面,本专利技术实施例中提供了一种代码覆盖率的确定方法,其中,所述方法包括:

7、接收在目标应用运行的过程中,基于第一方面所述的方法采集的所述目标应用的已加载类;

8、基于所述已加载类,确定所述已加载类的代码总量;

9、获取所述已加载类的代码总量和所述目标应用的代码总量的比值作为所述目标应用的代码覆盖率。

10、第三方面,本专利技术实施例中提供了一种已加载类的采集装置,其中,用于在目标应用运行的过程中采集所述目标应用的已加载类,以用于代码覆盖率的计算,该装置包括:

11、创建模块,被配置为支持所述目标应用的进程,在所述进程中创建classloader类的子类,所述子类继承所述classloader类,所述子类包括findloadedclass方法和可调用所述findloadedclass方法的接口;

12、设置模块,被配置为将所述子类的classtable的存储地址设置为进程中运行的classloader的classtable的存储地址;

13、查询模块,被配置为所述子类中的所述接口调用所述子类中的findloadedclass方法,所述findloadedclass方法从所述子类的classtable的存储地址对应的存储空间,查询所述进程的已加载类。

14、第四方面,本专利技术实施例中提供了一种代码覆盖率的确定装置,其中,该装置包括:

15、接收模块,被配置为接收在目标应用运行的过程中,基于第三方面所述的装置采集的所述目标应用的已加载类;

16、第二确定模块,被配置为基于所述已加载类,确定所述已加载类的代码总量;

17、第二获取模块,被配置为获取所述已加载类的代码总量和所述目标应用的代码总量的比值作为所述目标应用的代码覆盖率。

18、所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

19、在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。

20、第五方面,本公开实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现上述任一方面所述的方法。

21、第六方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述的方法。

22、第七方面,本公开实施例提供了一种计算机程序产品,其包含计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述的方法。

23、本公开实施例提供的技术方案可以包括以下有益效果:

24、本公开实施例,当目标应用为针对安卓系统开发的应用时,通过目标应用的进程在所述进程中创建classloader类的子类,classloader类是指android应用java层的classloader类,由于该子类在开发时继承了classloader类,因此,该子类包括classloader类的findloadedclass方法,并且,本公开还为该子类开发了可调用所述findloadedclass方法的接口,该接口为公开接口,进一步,将该子类的classtable的存储地址设置为进程中运行的classloader的classtable的存储地址,其中,进程中运行的classloader的classtable是指android操作系统native层的classtable,由于android操作系统native层的classtable记录了类的加载和使用的情况,因此,将该子类的classtable的存储地址设置为进程中运行的classloader的classtable的存储地址,可以使该子类的接口调用findloadedclass方法,能够从该子类的classtable的存储地址对应的存储空间,也就是,android操作系统native层的classtable中,查询该进程的已加载类。由此可见,本公开基于android操作系统native层的classtable记录了类的加载和使用的特点,创建能够访问classtable的子类,从而实现对已加载类的采集,因此,本公开无需侵入目标应用的源代码,可在目标应用运行的过程中采集所述目标应用的已加载类,并且,该子类继承了android操作系统原本就存在的classloader类,对目标应用的性能、稳定性、安装包体积等没有影响。

25、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

本文档来自技高网...

【技术保护点】

1.一种已加载类的采集方法,其中,用于在目标应用运行的过程中采集所述目标应用的已加载类,以用于代码覆盖率的计算,所述方法包括:

2.根据权利要求1所述的方法,其中,所述方法进一步包括:

3.根据权利要求2所述的方法,其中,所述已加载类采集请求携带了待查询的类集合,所述类集合包括所述目标应用的所有类,或者,所述所有类中除已被查询到的已加载类以外的类,所述方法进一步包括:

4.根据权利要求3所述的方法,其中,所述方法还包括:

5.根据权利要求1-4中任意一项权利要求所述的方法,所述进程为主进程。

6.根据权利要求1-4中任意一项权利要求所述的方法,其中,所述进程为子进程,所述方法进一步包括:

7.根据权利要求1-4中任意一项权利要求所述的方法,其中,所述方法还包括:

8.一种代码覆盖率的确定方法,其中,所述方法包括:

9.一种已加载类的采集装置,其中,用于在目标应用运行的过程中采集所述目标应用的已加载类,以用于代码覆盖率的计算,所述装置包括:

10.根据权利要求9所述的装置,其中,所述装置进一步包括:

...

【技术特征摘要】

1.一种已加载类的采集方法,其中,用于在目标应用运行的过程中采集所述目标应用的已加载类,以用于代码覆盖率的计算,所述方法包括:

2.根据权利要求1所述的方法,其中,所述方法进一步包括:

3.根据权利要求2所述的方法,其中,所述已加载类采集请求携带了待查询的类集合,所述类集合包括所述目标应用的所有类,或者,所述所有类中除已被查询到的已加载类以外的类,所述方法进一步包括:

4.根据权利要求3所述的方法,其中,所述方法还包括:

5.根据权利要求1-4中任意一项权利...

【专利技术属性】
技术研发人员:杨志鹏杨夕凯张炅轩
申请(专利权)人:北京高德云图科技有限公司
类型:发明
国别省市:

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

1