[发明专利]一种Java软件依赖冲突问题自动化修复的方法有效
申请号: | 202110338522.2 | 申请日: | 2021-03-26 |
公开(公告)号: | CN112965913B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 孙俊彦;王莹;王修齐;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/71 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 软件 依赖 冲突 问题 自动化 修复 方法 | ||
本申请公开一种Java软件依赖冲突问题自动化修复的方法,该方法通过分析Java软件项目的依赖关系找出依赖冲突的问题,在加以静态分析得到程序实现的类和方法以及其之间可能的调用路径。本发明设置了4种修复策略,根据风险类型选择不同的策略将无风险的版本加载到当前项目中,根据项目的调用路径关系选择合适的依赖版本进行自动的版本置换,从而帮助开发者有效的规避依赖冲突问题。并且在修复的同时能够评估是否会为项目带来更多会造成运行时错误的依赖冲突,最终自动的形成修复补丁和修复报告给开发者。减少了开发者在开发过程中遇到运行时错误的机率以及解决运行时错误的时间,节约了开发成本。
技术领域
本发明涉及软件可靠性技术领域,尤其涉及一种Java软件依赖冲突问题自动化修复的方法。
背景技术
Java软件在诸多开发者的努力下,形成了一个庞大的第三方开源依赖库。虽然第三方开源依赖库给开发者开发Java软件项目带来了极大的便利,但是也给开发者带来了困扰,即如何管理Java软件项目中所引入的诸多第三方依赖包。当一个Java软件项目引入了一个第三方依赖包,而该第三方依赖包的开发又引入了其他第三方依赖包,形成了一种传递情况,这样的情况阻碍了Java软件项目对第三方依赖包的管理。因此,Maven的出现给Java软件项目带来了一种良好的构建管理解决方案。Maven是Java项目主要的构建工具,也是Java项目所引入的第三方开源项目的主要管理工具。通过配置文件注入所需要的第三方依赖,Maven可以自动获取所有该项目所需要的依赖包。这样不仅解决了Java软件项目中第三方依赖包的管理问题,也为开发Java软件项目提供了极大的便利
Maven作为Java构建管理的一种良好的解决方案,虽然能够有效的管理第三方依赖包,但也会带来问题。一个第三方依赖包往往会进行功能更新、问题修复等过程,在多次更新迭代后,会产生多个版本。由于在引入依赖包的同时会传递地引入该依赖所需的依赖包,所以一个Java软件项目往往会存在同一个依赖包的多个版本。依据Maven的依赖管理机制,只有其中一个版本会加载到项目中,而屏蔽其他版本,从而出现依赖冲突现象。一个第三方依赖包经过迭代更新后,会出现某个类或方法存在于一个版本中而不存在于另一个版本情况,当项目使用到了该方法而实际加载的是不包含该方法的依赖版本时,在运行时就会发生错误。当一个Java软件项目存在依赖冲突问题时,在集成测试不充分的情况下,依赖冲突问题可能会在项目运行的时候产生意想不到的运行时错误,比如java.lang.NoClassDefFoundError和java.lang.NoSuchMethodError。Maven本身虽然可以识别依赖冲突,但缺乏有效的机制帮助开发者修复依赖冲突。
对于Maven环境中依赖冲突导致的运行时错误的问题,Maven构建工具并未提供有效的解决方案。一旦遇到运行时错误,需要花费大量的时间寻找触发错误的类和方法,然后在寻找方法来修复错误。通过分析程序内部的类和方法的关系对依赖冲突进行修复可以更进一步地帮助软件开发者避免程序运行时崩溃。
发明内容
本发明要解决的技术问题是针对上述现有技术的不足,提供一种Java软件依赖冲突问题自动化修复的方法
为解决上述技术问题,本发明所采取的技术方案是:一种Java软件依赖冲突问题自动化修复的方法,包括如下步骤:
步骤1:获取当前项目的项目代码和依赖关系;
步骤2:分析当前项目的依赖关系,得到风险依赖冲突和调用到的风险方法,并将风险依赖冲突划分为有直接依赖的冲突和无直接依赖的冲突,过程如下:
步骤2.1:遍历当前项目的完全依赖树,分析得到在完全依赖树中存在多个版本的依赖关系,定义为依赖冲突;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110338522.2/2.html,转载请声明来源钻瓜专利网。