[发明专利]代码检测方法、装置、设备和存储介质在审
申请号: | 202110372232.X | 申请日: | 2021-04-07 |
公开(公告)号: | CN112988592A | 公开(公告)日: | 2021-06-18 |
发明(设计)人: | 纪玮;徐磊 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京开阳星知识产权代理有限公司 11710 | 代理人: | 阮改燕 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 检测 方法 装置 设备 存储 介质 | ||
本公开实施例涉及一种代码检测方法、装置、设备和存储介质。该方法包括:在待检测的应用程序的运行过程中,调用加载类信息输出函数,输出加载类信息至预设输出流;从所述预设输出流中筛选属于所述应用程序的应用加载类信息;将所述应用程序对应的代码检测信息发送至服务端;其中,所述代码检测信息包括所述应用加载类信息,或者基于所述应用加载类信息和所述应用程序的安装包确定的代码检测结果。通过上述技术方案,既能更加快捷、高效地分析出应用程序源代码中的废弃代码,又能提高代码检测的普适性。
技术领域
本公开涉及计算机技术领域,尤其涉及一种代码检测方法、装置、设备和存储介质。
背景技术
随着业务的扩展,诸多客户端都存在版本不断更新的情况,而每次版本更新都会对应用源代码进行变更,使得应用源代码中存在大量的废弃逻辑,这些废弃逻辑的代码主要是通过代码覆盖率检测方法予以发现并清理。
目前,主流的代码覆盖率检测方法为静态字节码插桩方法,其核心手段是在代码中所有类class的初始化方法(也就是static块)中加入埋点统计,以便每个类class在被调用时会被统计到已经使用了,进而发现安装包中所有没有被调用到的类class。但是,该方案需要在安装包中新增大量统计代码,反而会造成应用性能与包体积的极度劣化。也正因此,该方案目前只能用于线下测试场景,无法被集成到线上实际应用,进而无法根据用户真实使用场景获取客户端实际的废弃业务逻辑信息。
发明内容
为了解决上述技术问题,本公开提供了一种代码检测方法、装置、设备和存储介质。
本公开实施例提供了一种代码检测方法,该方法包括:
在待检测的应用程序的运行过程中,调用加载类信息输出函数,输出加载类信息至预设输出流;
从所述预设输出流中筛选属于所述应用程序的应用加载类信息;
将所述应用程序对应的代码检测信息发送至服务端;其中,所述代码检测信息包括所述应用加载类信息,或者基于所述应用加载类信息和所述应用程序的安装包确定的代码检测结果。
在一些实施例中,所述调用加载类信息输出函数,输出加载类信息至预设输出流包括:
针对每个被加载的类,以所述预设输出流为输入参数,调用预设转储类函数,将相应类的加载类信息输出至所述预设输出流;其中,所述预设转储类函数通过预先对原生转储类函数进行封装而获得。
在一些实施例中,在于,所述加载类信息包括类名称和类加载器地址。
在一些实施例中,所述从所述预设输出流中筛选属于所述应用程序的应用加载类信息包括:
基于所述预设输出流中的各类的类加载器地址,从所述预设输出流中筛选属于所述应用程序的应用加载类信息。
进一步地,所述基于所述预设输出流中的各类的类加载器地址,从所述预设输出流中筛选属于所述应用程序的应用加载类信息包括:
基于系统类的类加载器地址的标识和所述预设输出流中的各所述类的类加载器地址,从所述预设输出流中删除属于系统类的加载类信息,获得所述应用加载类信息。
在一些实施例中,所述将所述应用程序对应的代码检测信息发送至服务端包括:
将所述应用加载类信息发送至所述服务端,以使所述服务端基于所述应用加载类信息和所述应用程序的安装包确定所述代码检测结果。
在一些实施例中,基于所述应用加载类信息和所述应用程序的安装包确定代码检测结果包括:
比较所述应用加载类信息中的类和所述安装包中的类,确定在当前用户操作下未被加载的类,作为当前用户对应的代码检测结果。
本公开实施例还提供了一种代码检测装置,该装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110372232.X/2.html,转载请声明来源钻瓜专利网。