[发明专利]一种无用依赖项检测方法及装置有效
申请号: | 201810474826.X | 申请日: | 2018-05-17 |
公开(公告)号: | CN108628751B | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 付祥旭 | 申请(专利权)人: | 北京三快在线科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/20 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
地址: | 100083 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 无用 依赖 检测 方法 装置 | ||
本发明实施例中,提出一种无用依赖项检测方法及装置,其中,该方法包括:获取软件项目运行时加载的目标类;从软件项目的配置文件中,获取软件项目的所有依赖项;根据所有依赖项,建立所有依赖项中各依赖项与其包含的各类的类名的预设对应关系;其中,各依赖项包含的各类包括目标类;根据目标类和预设对应关系,检测所有依赖项中的无用依赖项,其中,无用依赖项为软件项目运行时所有依赖项中使用不到的依赖项。通过本发明的技术方案,可准确地检测出该软件项目的所有依赖项中的无用依赖项,提高无用依赖项的检测结果的准确性和全面性。
技术领域
本发明涉及软件技术领域,尤其涉及一种无用依赖项检测方法及装置。
背景技术
目前,软件项目(如Maven软件项目)中使用到的依赖项如图1所示,通常包括有用依赖项(指在项目运行的过程中,需要使用到的依赖项)、无用依赖项(指在项目运行的过程中,使用不到的依赖项)和冲突依赖项(指依赖项大体相同,但版本不同,如图1中的一级子节点中的依赖项A与二级子节点中的依赖项A,即版本不同的冲突依赖项)。
但通常情况下,开发人员只会关注冲突依赖项,因为它可能使程序运行出现错误,而很少关注无用依赖项,因为它不会直接造成程序的错误;但它却是一个潜在的威胁,一方面大量无用依赖项的存在会降低软件项目的编译、打包、发布速度,另一方面,由于依赖项数量的增加,造成项目产生依赖项冲突和类冲突的风险相应增加。
而对于无用依赖项的检测,相关技术还没有完整有效的方案,主要有两方面的原因:一方面无用依赖项本身未得到足够的重视;另一方面也缺乏有效的工具。
目前,各技术论坛的主流方案是通过静态代码解析来查找无用依赖项,以Maven(可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具)软件项目为例,其代表方案就是Maven官方的一个工具analyze,它的工作原理是检测当前项目中的所有代码(Bytecode解析,其中,Bytecode即Java字节码)和Pom文件(Project ObjectModel,项目对象模型,定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等)中定义的直接依赖项(即根结点引入的依赖项称之为直接依赖项,如图1中的A、B、C、D依赖项)以确定无用依赖项,具体地,Bytecode解析得到Maven软件项目中使用到的class(类),再从直接依赖项中查找class所在的jar(Java Archive,Java归档文件),从而判断直接依赖项中的有用依赖项和无用依赖项。
但从实际应用的效果中得知,其分析结果是非常不准确的,最主要的原因是它的检测原理有以下问题:
采用静态Bytecode解析与JVM(Java Virtual Machine,Java虚拟机)运行时动态加载原理相悖,造成分析结果不准确;
只分析软件项目中的直接依赖项,但大部分无用依赖项却分布在间接依赖项(即由直接依赖项引入的依赖项,如图1中A、B、C、D依赖项之外的依赖项E、F、G等)中;
只有分析结果,没有自动化生成相应的解决方案。
发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的一种无用依赖项检测方法及装置,用于解决现有技术中存在的上述至少部分缺陷。
依据本发明的第一方面,提供了一种无用依赖项检测方法,包括:
获取软件项目运行时加载的目标类;
从所述软件项目的配置文件中,获取所述软件项目的所有依赖项;
根据所述所有依赖项,建立所述所有依赖项中各依赖项与其包含的各类的类名的预设对应关系;其中,所述各依赖项包含的各类包括所述目标类;
根据所述目标类和所述预设对应关系,检测所述所有依赖项中的无用依赖项,其中,所述无用依赖项为所述软件项目运行时所述所有依赖项中使用不到的依赖项。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京三快在线科技有限公司,未经北京三快在线科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810474826.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种测试代码处理方法及装置
- 下一篇:一种数据存储方法和装置