[发明专利]Java软件项目依赖冲突语义一致性的自动化检测方法有效
申请号: | 202011238918.1 | 申请日: | 2020-11-09 |
公开(公告)号: | CN112181858B | 公开(公告)日: | 2021-12-31 |
发明(设计)人: | 王超;王莹;李丹程;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/53;G06F8/70 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | java 软件 项目 依赖 冲突 语义 一致性 自动化 检测 方法 | ||
本发明公开一种Java软件项目依赖冲突语义一致性的自动化检测方法,该方法包括:获取Maven项目POM文件和项目代码;从项目完全依赖树中分析出依赖冲突;对于所有的依赖冲突,检测是否存在真实风险方法的情况;对检测出的存在真实风险方法的项目构建相应的对象池和API池;对于检测出的真实风险方法,通过自动化测试用例生成工具结合构建的对象池和API池生成测试用例并进行验证;将分析结果生成缺陷结果报告。本发明通过静态分析的方法检测依赖冲突中可能存在不一致语义的行为,再通过动态测试进一步验证风险方法是否真的存在问题,使开发者可以在全自动的情况下,检测软件项目中存在的依赖冲突问题。
技术领域
本发明涉及软件可靠性检测技术领域,尤其涉及一种Java软件项目依赖冲突语义一致性的自动化检测方法。
背景技术
在当代的软件开发过程中,第三方库的重用给开发人员带来了极大的便利,使得一些软件开发人员更加专注于自己业务功能的开发,而一些基础功能则越来越依赖于第三方库,这也使得第三方库成为了Java编程中不可缺失的一部分。然而在Maven的中央仓库中,开发者不能删除或者修改已经上传到中央仓库中的构件,所以只能发布新版本的方式进行迭代更新,这也间接导致了Maven中央仓库越来越庞大,这其中很多是因为第三方库的更新而不断迭代开发的构件,而且现在Maven仓库还在继续扩大。软件通过致力于修复错误,引入新的功能,重构现有代码而发展,但是这种发展也可能带来新的问题,例如API的变更导致的兼容性问题。在Maven中央仓库中存在大量构件无法向后兼容,同时开发者并未给出相关标注且更改语义版本。虽然第三方库的重用给开发者带来了极大的便利,而且为了充分利用第三方库,开发者应该尽量保持同步更新软件系统的依赖库,以避免一些已经暴露的漏洞和错误。但是由于一些软件系统的依赖关系过于庞大,并且一些开发者并不清楚更新一下第三方库是否会带来未知的风险。并不是所有的开发者都能完全了解自己软件系统当中的所有依赖关系,包括第三方依赖,因此就会造成很多依赖冲突问题被不断传递。
Maven的依赖管理能够自动的帮助开发者管理依赖关系。当软件系统越来越大时,就会出现多个版本的同一个第三方库同时存在的情况,然而JVM只能允许一个库存在于运行环境中,此时Maven通过仲裁策略帮助开发者自动解决传递依赖中存在的冲突问题。然而,这带来了一种非常严重的风险,因为经过Maven的仲裁机制选择后,最后留在运行环境中的第三方库可能存在严重的漏洞,或者API的变更导致软件系统出现了不一致的缺陷。研究表明,在中央仓库的发行版本中,大约有三分之一的构件在引入重大不兼容性更新的同时,并未标注相关信息,这让开发者在选择版本时无法识别风险存在。
发明内容
针对上述现有技术的不足,本申请提供一种Java软件项目依赖冲突语义一致性的自动化检测方法。
为解决上述技术问题,本发明所采取的技术方案是:一种Java软件项目依赖冲突语义一致性的自动化检测方法,包括如下步骤:
步骤1:获取Maven项目POM文件和项目代码;
步骤2:获取项目完全依赖树,从中分析出依赖冲突并做筛选和过滤,过程如下:
步骤2.1:通过项目源代码中的pom.xml文件获取项目的完全依赖树;
步骤2.2:根据项目的完全依赖树,分析出所有由于Maven仲裁机制所屏蔽掉的第三方依赖,作为初始依赖冲突问题;
步骤2.3:对于检测出来的依赖冲突问题,筛选掉所有不参与项目正常运行的依赖包,以及自定义的过滤项。
步骤3:对于所有的依赖冲突,检测是否存在真实风险方法的情况,过程如下:
步骤3.1:在步骤2中可以得到项目的依赖冲突,检测其中是否包含完全限定名相同的方法;
步骤3.2:对于在两个冲突包中的完全限定名相同的方法,通过反编译技术,把二进制文件反编译成源文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011238918.1/2.html,转载请声明来源钻瓜专利网。