[发明专利]一种获取代码依赖关系的方法、装置及电子设备有效
申请号: | 201810007488.9 | 申请日: | 2018-01-04 |
公开(公告)号: | CN110007920B | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 肖浩龙 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁;窦晓慧 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 代码 依赖 关系 方法 装置 电子设备 | ||
1.一种获取代码依赖关系的方法,其特征在于,包括:
解析字节码文件,获取所述字节码文件中各个类的信息以及各个成员信息,其中,所述成员信息至少包括:指令、方法列表、方法名、属性列表以及属性名;
基于所述各个类的信息,确定各个类中的方法对于其他方法的调用关系以及各个类中的继承关系,并在各个类之间添加依赖关系;
根据各个所述成员信息,构造对应所述成员信息的方法节点以及属性节点,逐条解析所述成员信息中的指令,确定所述指令的类型,根据所述指令的类型,访问对应的成员信息,根据所述指令访问的成员信息,在所述指令所属的节点与对应所述成员信息的节点中添加依赖关系;
持久化所述类之间的依赖关系以及所述成员的依赖关系。
2.根据权利要求1所述的获取代码依赖关系的方法,其特征在于,所述类的信息,至少包括:
类名以及父类的信息。
3.根据权利要求2所述的获取代码依赖关系的方法,其特征在于,所述基于所述各个类的信息,确定各个类中的方法对于其他方法的调用关系以及各个类中的继承关系,并在各个类之间添加依赖关系,包括:
根据各个所述类的信息,构造对应所述类的信息的类节点;
在构造所述类节点之后,根据所述类的信息中的继承关系,获取所述类节点的父类的信息;
基于所述父类的信息确定对应的父类节点,在所述类节点与对应的所述父类节点之间添加依赖关系;
根据所述类中的方法对于其他方法调用关系,确定所述类调用的方法所属的类;
基于已确定的所述类获取对应的类节点,在所述类节点与调用的方法对应的所述类节点之间添加依赖关系。
4.根据权利要求3所述的获取代码依赖关系的方法,其特征在于,在所述构造对应所述类的信息的类节点的步骤之后,包括:
将构造的所述类节点注册至节点仓库。
5.根据权利要求4所述的获取代码依赖关系的方法,其特征在于,所述基于所述父类的信息确定对应的父类节点,包括:
在节点仓库内,基于所述父类的信息查找对应的父类节点;
若查找到对应的父类节点,则执行所述在所述类节点与对应的所述父类节点之间添加依赖关系的步骤;
若未查找到对应的父类节点,则在所述类节点内创建父类监听器。
6.根据权利要求5所述的获取代码依赖关系的方法,其特征在于,在所述构造对应所述类的信息的类节点的步骤之后,包括:
基于已创建所述父类监听器的所述类节点,回调所述类节点创建的父类监听器;
若构造的所述类节点,是所述父类监听器所监听的类节点,则将构造的所述类节点作为父类节点,与创建所述父类监听器的类节点之间添加依赖关系。
7.根据权利要求6所述的获取代码依赖关系的方法,其特征在于,所述父类节点,包括:类节点以及接口节点。
8.根据权利要求1所述的获取代码依赖关系的方法,其特征在于,所述解析所述成员信息中的指令,确定所述指令的类型,包括:
解析所述指令获取操作码,根据所述指令的操作码,确定所述指令的类型。
9.根据权利要求8所述的获取代码依赖关系的方法,其特征在于,所述成员类型,包括:属性以及方法;
相应的,所述确定所述指令的类型,包括:
属性访问指令以及方法调用指令。
10.根据权利要求8所述的获取代码依赖关系的方法,其特征在于,所述根据所述指令的类型,访问对应的成员信息,包括:
若所述指令的类型为属性访问指令,则获取所述指令访问的属性对应的属性节点;
若所述指令的类型为方法调用指令,则获取所述指令调用的方法对应的方法节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810007488.9/1.html,转载请声明来源钻瓜专利网。