[发明专利]一种评估Maven环境中依赖冲突危险级别的方法有效
申请号: | 201810891476.7 | 申请日: | 2018-08-07 |
公开(公告)号: | CN108984416B | 公开(公告)日: | 2022-04-08 |
发明(设计)人: | 刘振伟;王蕊;杨博;王莹;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 刘晓岚 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 评估 maven 环境 依赖 冲突 危险 级别 方法 | ||
本发明提出一种评估Maven环境中依赖冲突危险级别的方法,流程包括:步骤1:获取到当前项目中使用的所有第三方依赖,包括直接依赖和间接依赖;步骤2:对当前项目所有直接依赖和间接依赖进行遍历,识别当前项目中出现的所有依赖冲突;步骤3:针对当前项目中的每个依赖冲突进行NoClass危险级别的评估:步骤4:针对项目中的每个依赖冲突进行NoMethod危险级别的评估:步骤5:对评估结果进行封装,向开发者展现评估结果。本发明不仅可以检测到项目中存在的依赖冲突,而且对依赖冲突的危险等级进行了有效的评估,帮助开发者更清晰地了解项目中存在的依赖冲突的危险性,优先处理高等级的依赖冲突,可以在有限的时间内最大程度的降低软件在运行时的出现xx‑not‑found‑bug的风险。
技术领域
本发明涉及软件可靠性领域,特别涉及一种评估Maven环境中依赖冲突危险级别的方法。
背景技术
在软件开发的过程中,经常会使用第三方开源项目进行软件复用来减少开发成本。Apache组织开发维护的Maven是用java编写的开源项目的管理工具。使用maven进行项目开发可以通过xml形式的pom文件导入及管理项目的依赖。但是在Maven的构建环境中,由于同一个开源项目存在多个版本、maven的依赖管理又存在依赖传递机制,经常会导致项目中出现依赖冲突现象,产生软件缺陷。在软件测试不充分的情况下,这种软件缺陷可能会在软件运行的时候产生开发者意想不到的xx-not-found-bug,主要表现形式包括:java.lang.NoClassDefFoundError、java.lang.ClassNotFoundException、java.lang.NoSuchMetho dError和java.lang.NoSuchMethodException。Maven本身虽然可以检测依赖冲突,但缺乏有效的机制对依赖冲突进行评估。
Java虚拟机中定义的Class格式文件是编译java类文件后产生的字节码,每一个Class文件都对应着唯一一个类或接口的定义信息,java类文件中的属性、方法,以及类中的常量信息,都会被存储在.class文件中。相对于易于程序员读写java文件,class文件的格式被更加严格的定义,更易于被程序分析。目前有asm、Javassist等流行的工具可以在class形式的字节码文件进行操作,进行java类的产生、分析、修改。借助于soot等java优化框架可以分析java程序的内部结构,既能从单个java文件的角度分析每一条java语句,也可以从整个程序的角度分析每个java类,java方法之间的关系。
针对于Maven环境中依赖冲突导致的not-found-bug问题,maven并未提供理想的解决方案。检测项目中的依赖冲突现象只能初步帮助开发者避免此类问题。结合程序内部的类和方法的关系对依赖冲突导致xx-not-found-bug的危险性进行评估比简单的侦测可以更进一步地帮助软件开发者避免程序运行时崩溃。
发明内容
针对于项目中出现的依赖冲突,本发明通过静态分析得到程序运行可能需要加载执行的类和方法,并基于加载执行的可能性对maven环境中的依赖冲突导致的NoClass和NoMethod两种危险分别进行评估分级:使用类之间的引用关系评估NoClass危险级别,使用方法之间的调用关系评估NoMethod危险级别。
一种评估Maven环境中依赖冲突危险级别的方法,包括流程如下,其中步骤3与步骤4不分先后顺序:
步骤1:获取到当前项目中使用的所有第三方依赖,包括直接依赖和间接依赖;
步骤2:对当前项目所有直接依赖和间接依赖进行遍历,识别当前项目中出现的所有依赖冲突;
步骤3:针对当前项目中的每个依赖冲突进行NoClass危险级别的评估,包括步骤3.1~步骤3.6:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810891476.7/2.html,转载请声明来源钻瓜专利网。