[发明专利]基于GitHub自动化检测Maven项目中依赖冲突问题的方法有效
申请号: | 202110043582.1 | 申请日: | 2021-01-13 |
公开(公告)号: | CN112799937B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 王修齐;王莹;孙俊彦;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 github 自动化 检测 maven 项目 依赖 冲突 问题 方法 | ||
本发明公开一种基于GitHub自动化检测Maven项目中依赖冲突问题的方法,该方法根据造成依赖冲突问题的不同原因将依赖冲突问题分为了三种不同类型的场景,本发明可以自动化检测GitHub用户的由Maven管理的Java程序中是否存在上述三种不同类型场景的依赖冲突问题,检查完毕后会在issue页面显示检查结果,若发现有害冲突还会给出详细的测试报告以及问题节点的调用信息。本发明的方法还实时监控用户更新代码时是否引入了新的依赖冲突问题。使用本发明可以节省用户自身查找依赖冲突问题的时间,极大地降低了程序中出现xx no found bug的风险,有效地提高了程序的有效性。
技术领域
本发明涉及软件可靠性检测技术领域,尤其涉及一种基于GitHub自动化检测Maven项目中依赖冲突问题的方法。
背景技术
软件开发过程中经常会复用第三方开源项目从而减少开发成本。Maven,Apache开发维护的Java项目依赖管理工具。由Maven管理的Java项目可以通过xml形式的pom文件引入并管理第三方依赖组件。然而,由于同一个第三方库存在多个不同的版本以及Maven依赖组件加载的仲裁机制,经常会出现依赖冲突问题,产生软件缺陷,降低软件质量。在测试用例不够完善,测试不够充分的情况下,这种软件缺陷通常会在程序运行时产生xx no foundbu g。Bug的主要类型包括java.lang.NoSuchMethodError、java.lang.NoSuchMethodException和java.lang.ClassNotFoundException。
Java语言的流行也带来了大量的第三方开源库的发展,Maven仓库中涵盖了超过一百万个Java项目,其中包括了超过五百万个不同版本的Jar,这些不同的Jar提供了多种功能供开发者使用。此外,当宿主项目依赖于某一个版本的Jar时,还会引入该Jar对应的依赖组件,平均一个由Maven管理的Java项目会引入48个直接依赖和间接依赖。当一个项目引入了同一个开源项目的不同版本时,就有可能出现依赖冲突问题,产生软件缺陷。然而,Maven对这种依赖冲突问题并没有提供理想的解决方案,只能粗粒度的提示有问题的Jar。
发明内容
针对上述现有技术的不足,本发明提供一种基于GitHub自动化检测Maven项目中依赖冲突问题的方法。GitHub是通过Git进行版本控制的软件源代码托管服务平台,是最流行的Git访问站点。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般的社区功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。目前GitHub拥有超过4000万用户和超过1.9亿的储存库,其中包含了大量由Maven管理的Java项目。
为解决上述技术问题,本发明所采取的技术方案是:一种基于GitHub自动化检测Maven项目中依赖冲突问题的方法,包括如下步骤:
步骤1:用户订阅GitHub Bot,并选择对应的储存库;
步骤2:获取Maven项目中所有的开源依赖组件,所有开源依赖组件的坐标使用组标签GroupId,构建标签ArtifactId和版本Version三个字段进行唯一标识;
步骤3:将依赖冲突问题分为三种不同类型的场景,分别为:
场景一:包粒度的冲突,即同一Jar的不同版本导致的依赖冲突问题;
场景二:类粒度的冲突,即不同Jar包含了完全限定名相同的类;
场景三:宿主项目和第三方Jar中包含冲突的类文件;
步骤4:识别Maven项目中是否包含场景一的依赖冲突问题,过程如下:
步骤4.1:遍历所有依赖冲突,识别出当前项目使用的依赖组件UsedJar,以及未使用的依赖组件集合NotUsedJarSet;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110043582.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:餐盘收洗一体机
- 下一篇:一种高耐候钢结构水性丙烯酸树脂的制备方法