[发明专利]一种获取代码依赖关系的方法、装置及电子设备有效
申请号: | 201810007488.9 | 申请日: | 2018-01-04 |
公开(公告)号: | CN110007920B | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 肖浩龙 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁;窦晓慧 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 代码 依赖 关系 方法 装置 电子设备 | ||
本申请公开了一种获取代码依赖关系的方法、装置以及电子设备。其中,所述获取代码依赖关系的方法,包括:解析字节码文件,获取字节码文件中各个类的信息以及各个成员信息;于各个类的信息,确定各个类中的方法对于其他方法的调用关系以及各个类中的继承关系,并在各个类之间添加依赖关系;根据各个成员信息,获取成员信息对于已获取的其他成员信息的访问,在各个成员信息中添加依赖关系;持久化类之间的依赖关系以及成员的依赖关系。所述技术方案通过对字节码文件进行全依赖扫描,构造客户端代码层面模块/类/方法/属性多个维度的层次树和依赖图,从而简单便捷的获取多个层面的依赖关系,从而为架构分析,模块重构,质量保障提供数据支撑。
技术领域
本申请涉及软件开发领域,具体涉及一种获取代码依赖关系的方法。本方案还涉及一种获取代码依赖关系的装置以及一种电子设备。
背景技术
目前,随着应用软件需求的提高,客户端代码的体量越来越大,代码规模已经增长到几百个模块,几十万个类的规模,业务开发人员和系统架构师很难比较直观,方便地获取模块/类/方法之间的相互耦合关系,对于依赖分析,系统设计,模块打标等都存在一定的门槛。
在此背景下,各个模块的开发人员都希望比较方便的获取整个客户端每个模块拥有的类,每个类的基本信息,并且这些模块/类/方法的相互调用关系,从而梳理出产品在模块/类/方法/属性等不同维度上的依赖关系。
在实际应用过程中,获取依赖关系是通过集成开发环境(IDE),如eclipse,intelij等来实现。实现方式为导入项目源码,经过编译后,可以通过IDE的调用方查找功能查看某个类/方法/属性的调用方。
然而,由于代码的数量一般都比较庞大,开发人员一般只拥有自己模块的源代码,其他模块对其来说是黑盒,而当前IDE的使用方式,导致在查找调用方时局限于当前模块,而无法获取到整个产品的调用关系。同时也因此不能在模块层面上去获取模块之间的相互依赖关系。
发明内容
本申请提供一种获取代码依赖关系的方法,以解决现有技术中的上述问题。本申请另外提供一种获取代码依赖关系的装置以及一种电子设备。
本申请提供一种获取代码依赖关系的方法,所述获取代码依赖关系的方法,包括:
解析字节码文件,获取所述字节码文件中各个类的信息以及各个成员信息;
基于所述各个类的信息,确定各个类中的方法对于其他方法的调用关系以及各个类中的继承关系,并在各个类之间添加依赖关系;
根据各个所述成员信息,获取所述成员信息对于已获取的其他成员信息的访问,在各个成员信息中添加依赖关系;
持久化所述类之间的依赖关系以及所述成员的依赖关系。
优选的,所述类的信息,至少包括:
类名以及父类的信息。
优选的,所述基于所述各个类的信息,确定各个类中的方法对于其他方法的调用关系以及各个类中的继承关系,并在各个类之间添加依赖关系,包括:
根据各个所述类的信息,构造对应所述类的信息的类节点;
在构造所述类节点之后,根据所述类的信息中的继承关系,获取所述类节点的父类的信息;
基于所述父类的信息确定对应的父类节点,在所述类节点与对应的所述父类节点之间添加依赖关系;
根据所述类中的方法对于其他方法调用关系,确定所述类调用的方法所属的类;
基于已确定的所述类获取对应的类节点,在所述类节点与调用的方法对应的所述类节点之间添加依赖关系。
优选的,在所述构造对应所述类的信息的类节点的步骤之后,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810007488.9/2.html,转载请声明来源钻瓜专利网。