当前位置: 首页 > 专利查询>东北大学专利>正文

一种Java软件依赖冲突问题自动化修复的方法技术

技术编号:28871229 阅读:40 留言:0更新日期:2021-06-15 23:03
本申请公开一种Java软件依赖冲突问题自动化修复的方法,该方法通过分析Java软件项目的依赖关系找出依赖冲突的问题,在加以静态分析得到程序实现的类和方法以及其之间可能的调用路径。本发明专利技术设置了4种修复策略,根据风险类型选择不同的策略将无风险的版本加载到当前项目中,根据项目的调用路径关系选择合适的依赖版本进行自动的版本置换,从而帮助开发者有效的规避依赖冲突问题。并且在修复的同时能够评估是否会为项目带来更多会造成运行时错误的依赖冲突,最终自动的形成修复补丁和修复报告给开发者。减少了开发者在开发过程中遇到运行时错误的机率以及解决运行时错误的时间,节约了开发成本。

【技术实现步骤摘要】
一种Java软件依赖冲突问题自动化修复的方法
本专利技术涉及软件可靠性
,尤其涉及一种Java软件依赖冲突问题自动化修复的方法。
技术介绍
Java软件在诸多开发者的努力下,形成了一个庞大的第三方开源依赖库。虽然第三方开源依赖库给开发者开发Java软件项目带来了极大的便利,但是也给开发者带来了困扰,即如何管理Java软件项目中所引入的诸多第三方依赖包。当一个Java软件项目引入了一个第三方依赖包,而该第三方依赖包的开发又引入了其他第三方依赖包,形成了一种传递情况,这样的情况阻碍了Java软件项目对第三方依赖包的管理。因此,Maven的出现给Java软件项目带来了一种良好的构建管理解决方案。Maven是Java项目主要的构建工具,也是Java项目所引入的第三方开源项目的主要管理工具。通过配置文件注入所需要的第三方依赖,Maven可以自动获取所有该项目所需要的依赖包。这样不仅解决了Java软件项目中第三方依赖包的管理问题,也为开发Java软件项目提供了极大的便利Maven作为Java构建管理的一种良好的解决方案,虽然能够有效的管理第三本文档来自技高网...

【技术保护点】
1.一种Java软件依赖冲突问题自动化修复的方法,其特征在于,包括如下步骤:/n步骤1:获取当前项目的项目代码和依赖关系;/n步骤2:分析当前项目的依赖关系,得到风险依赖冲突和调用到的风险方法,并将风险依赖冲突划分为有直接依赖的冲突和无直接依赖的冲突;/n步骤3:分析风险依赖冲突,通过判断加载的依赖版本中的方法是否满足在当前项目中的所有调用,来寻找无风险的依赖版本;/n步骤4:设置修复策略,根据风险类型选择不同的策略将无风险的版本加载到当前项目中;/n步骤5:评估使用修复策略后的项目是否产生新的依赖冲突;/n步骤6:将修复建议和修复补丁推送给开发者。/n

【技术特征摘要】
1.一种Java软件依赖冲突问题自动化修复的方法,其特征在于,包括如下步骤:
步骤1:获取当前项目的项目代码和依赖关系;
步骤2:分析当前项目的依赖关系,得到风险依赖冲突和调用到的风险方法,并将风险依赖冲突划分为有直接依赖的冲突和无直接依赖的冲突;
步骤3:分析风险依赖冲突,通过判断加载的依赖版本中的方法是否满足在当前项目中的所有调用,来寻找无风险的依赖版本;
步骤4:设置修复策略,根据风险类型选择不同的策略将无风险的版本加载到当前项目中;
步骤5:评估使用修复策略后的项目是否产生新的依赖冲突;
步骤6:将修复建议和修复补丁推送给开发者。


2.根据权利要求1所述的Java软件依赖冲突问题自动化修复的方法,其特征在于,所述步骤2的过程如下:
步骤2.1:遍历当前项目的完全依赖树,分析得到在完全依赖树中存在多个版本的依赖关系,定义为依赖冲突;
步骤2.2:对于分析得到的依赖冲突,对比分析加载版本和未加载版本jar包中的类和方法,如果一个未加载版本jar包中的方法在加载版本jar包中没有对应的限定名相同的方法,则为一个风险方法,获取这样的方法集合,判断集合中的方法在当前项目中是否有调用,若有调用,即为风险依赖冲突,获取被调用到的风险方法;
步骤2.3:对于风险依赖冲突,通过依赖关系图查看冲突的加载版本是否是当前项目直接声明的依赖,若为当前项目直接声明的依赖,则为有直接依赖的冲突;反之为无直接依赖的冲突。


3.根据权利要求1所述的Java软件依赖冲突问题自动化修复的方法,其特征在于:所述步骤3的过程如下:
步骤3.1:对于风险依赖冲突,分析未加载的依赖版本的方法是否满足加载的依赖版本的方法在项目中的所有调用,若满足,则未加载版本为无风险版本,进入步骤3.5;若不满足,进入下一个步骤;
步骤3.2:获取风险依赖的所有发行版本,删除风险冲突中所存在的版本,过滤比风险冲突中版本号低的版本,依次从过滤后的版本集中取出测试版本;
步骤3.3:获取测试版本的jar包,分析测试版本中的方法是否满足加载的依赖版本中的方法在项目中的所有调用,若满足,进入下一个步骤;若不满足,...

【专利技术属性】
技术研发人员:孙俊彦王莹王修齐于海朱志良
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1