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

缺陷驱动的第三方库版本升级推荐方法技术

技术编号:24409046 阅读:17 留言:0更新日期:2020-06-06 08:21
本发明专利技术属于软件工程技术领域,具体为缺陷驱动的第三方库版本升级推荐方法。本发明专利技术方法包括:分析软件项目的第三方库依赖,获得软件项目所依赖的所有第三方库版本;通过基于程序调用图的第三方库风险分析,检测并量化旧第三方库版本中的缺陷对软件项目带来的风险,包括影响软件项目的第三方库缺陷个数、软件项目所调用的带缺陷第三方库API的个数和调用次数;通过基于API差异分析的第三方库升级代价分析,推荐并量化升级到新第三方库版本的更新代价,包括软件项目调用的、在新第三方库版本中被删除和修改的第三方库API个数和调用次数。本发明专利技术方法驱使并辅助开发人员及时升级第三方库,减少开发人员的升级工作量,并提高软件项目的质量。

Defect driven third-party library version upgrade recommendation method

【技术实现步骤摘要】
缺陷驱动的第三方库版本升级推荐方法
本专利技术属于软件工程
,具体涉及一种缺陷驱动的第三方库版本升级推荐方法。
技术介绍
在软件开发过程中,第三方库扮演着重要角色。一方面,第三方库可以被开发人员复用来构建软件系统,使得开发人员可以更多地关注于软件系统的业务逻辑。因此,第三方库可以提高开发效率、缩短开发时间和交付时间。另一方面,第三方库往往经过了第三方库开发/测试人员以及其他使用第三方库的开发/测试人员的广泛使用和测试,使得第三方库的质量有一定保证。因此,第三方库可以提高软件系统的整体质量。由此可见,随着开源软件社区以及互联网软件资源的飞速发展,第三方库已经成为了软件项目中不可或缺的重要组成部分。为了增加新功能或者修复缺陷(功能、性能、安全等缺陷),第三方库在不断地演化,而且不定期地发布新版本。这就给使用第三方库的软件系统的维护带来了严峻挑战。一方面,开发人员通常较少关注所使用的第三方库是否是最新版本、或者是否发布了新版本,导致软件系统使用了可能包含各类已知缺陷的第三方库旧版本,严重影响了软件系统的功能和质量。另一方面,即使开发人员知道了第三方库有新版本,他们往往难以确定新版本中修复的各类已知缺陷是否会真正影响到他们的软件系统,导致开发人员花费大量的时间去决定是否需要更新版本,从而使得第三方库不能及时升级。
技术实现思路
本专利技术的目的在于提供一种缺陷驱动的第三方库版本升级推荐方法,以帮助开发人员确定带缺陷的第三方库版本是否影响到软件项目并量化对软件项目带来的风险,同时推荐并量化升级到新第三方库版本的更新代价,从而帮助开发人员及时升级第三方库。本专利技术提供的缺陷驱动的第三方库版本升级推荐方法,包括:分析软件项目的第三方库依赖,获得软件项目所依赖的所有第三方库版本;通过基于程序调用图的第三方库风险分析,检测并量化旧第三方库版本中的缺陷对软件项目带来的风险;通过基于API差异分析的第三方库升级代价分析,推荐并量化升级到新第三方库版本的更新代价。本专利技术所检测到的第三方库风险包括影响软件项目的第三方库缺陷个数、软件项目所调用的带缺陷第三方库API的个数和调用次数;本专利技术所推荐的第三方库升级代价包括软件项目调用的、在新第三方库版本中被删除和修改的第三方库API个数和调用次数。具体步骤如下。(1)第三方库依赖分析软件项目通常通过自动化构建工具(例如Maven和Gradle)来声明和管理软件项目所依赖的第三方库版本。这一步通过解析软件项目的依赖配置文件(例如pom.xml和build.gradle)来抽取软件项目所依赖的第三方库版本。(2)第三方库风险分析软件项目的代码调用了第三方库API,而有些第三方库API包含各类已知缺陷,影响到软件项目的功能和质量。这一步通过API调用分析识别软件项目所调用的第三方库API并分析这些第三方库API是否含有各类缺陷。具体包括以下步骤:1)从第三方库版本知识库(保存了所有开源第三方库版本的二进制包)加载软件项目所依赖的第三方库版本二进制包,通过静态分析二进制包获得第三方库API列表;2)通过软件项目源代码和第三方库版本二进制包建立软件项目源代码的抽象语法树并做类型绑定,遍历抽象语法树中的方法调用并确定所调用方法是否是第三方库API(即判断所调用方法是否在第三方库API列表中);3)通过静态分析二进制包建立所调用第三方库API的调用图,通过第三方库缺陷知识库(保存了第三方库版本中的缺陷、以及受缺陷影响的第三方库API)分析所调用第三方库API是否受缺陷影响(即判断调用图上是否包含受缺陷影响的第三方库API);4)总结以上分析结果获得第三方库的风险度量,包括影响软件项目的第三方库缺陷个数、软件项目所调用的带缺陷第三方库API的个数和调用次数。(3)第三方库升级代价分析第三方库不同版本之间往往包含不兼容的第三方库API,影响到第三方库的升级代价。这一步通过API调用和差异分析推荐不含有缺陷的第三方库升级版本并分析升级版本中被删除和修改的第三方库API。具体包括以下步骤:1)在第三方库版本知识库中找到所有第三方库新版本的二进制包,并通过静态分析二进制包建立所调用第三方库API的调用图,同时通过第三方库缺陷知识库分析所调用第三方库API是否不受缺陷影响,如果不受影响,那么就可以作为第三方库升级版本;2)通过差异对比分析确定软件项目所调用的第三方库API在第三方库升级版本中被删除和修改的API个数和调用次数,作为升级代价的度量。本专利技术的基本过程示意图如图1所示。本专利技术能够确保推荐的第三方库升级版本中没有影响软件项目的缺陷,并且帮助开发人员识别软件项目调用的、在第三方库升级版本中没有发生变化的第三方库API(即开发人员不需要在升级时考虑这些API的兼容性问题)以及被删除和修改的第三方库API(即开发人员在升级时需要考虑这些API潜在的兼容性问题)。本专利技术通过风险度量和升级代价度量驱使并辅助开发人员及时升级第三方库,减少开发人员的升级工作量,并提高软件项目的质量。附图说明图1为本专利技术的基本过程示意图。具体实施方式以下针对Java、Maven软件项目说明本专利技术的具体实施方式,其主要使用过程为:(1)第三方库依赖分析。通过解析Java、Maven软件项目的依赖配置文件pom..xml来获得软件项目所依赖的第三方库版本;(2)第三方库风险分析。通过静态分析工具Soot获得第三方库API列表;通过JavaParser遍历软件项目源代码的抽象语法树并获得软件项目所调用的第三方库API;通过静态分析工具Soot获得所调用第三方库API的调用图并判断调用图上是否包含受缺陷影响的第三方库API;分析总结影响软件项目的第三方库缺陷个数、软件项目所调用的带缺陷第三方库API的个数和调用次数;(3)第三方库升级代价分析。通过静态分析工具Soot获得第三方库新版本中软件项目所调用的第三方库API的调用图,并分析所调用第三方库API是否不受缺陷影响,从而确定第三方库升级版本;通过基于哈希值的差异对比分析确定软件项目所调用的第三方库API在第三方库升级版本中被删除和修改的API个数和调用次数。通过该过程所生成的第三方库升级版本推荐方案列举了各个候选升级版本的升级代价信息,辅助开发人员选择一个合适的版本进行版本升级。本文档来自技高网...

【技术保护点】
1. 一种缺陷驱动的第三方库版本升级推荐方法,其特征在于,具体步骤如下:/n(1)第三方库依赖分析/n软件项目通常通过自动化构建工具来声明和管理软件项目所依赖的第三方库版本;通过解析软件项目的依赖配置文件来抽取软件项目所依赖的第三方库版本;/n(2)第三方库风险分析/n软件项目的代码调用第三方库API,有些第三方库API包含各类已知缺陷,影响到软件项目的功能和质量;通过API调用分析识别软件项目所调用的第三方库API并分析这些第三方库API是否含有各类缺陷,从而度量第三方库风险;/n(3)第三方库升级代价分析/n第三方库不同版本之间往往包含不兼容的第三方库API,影响到第三方库的升级代价;通过API调用和差异分析推荐不含有缺陷的第三方库升级版本,并分析升级版本中被删除和修改的第三方库API,从而度量第三方库升级代价。/n

【技术特征摘要】
1.一种缺陷驱动的第三方库版本升级推荐方法,其特征在于,具体步骤如下:
(1)第三方库依赖分析
软件项目通常通过自动化构建工具来声明和管理软件项目所依赖的第三方库版本;通过解析软件项目的依赖配置文件来抽取软件项目所依赖的第三方库版本;
(2)第三方库风险分析
软件项目的代码调用第三方库API,有些第三方库API包含各类已知缺陷,影响到软件项目的功能和质量;通过API调用分析识别软件项目所调用的第三方库API并分析这些第三方库API是否含有各类缺陷,从而度量第三方库风险;
(3)第三方库升级代价分析
第三方库不同版本之间往往包含不兼容的第三方库API,影响到第三方库的升级代价;通过API调用和差异分析推荐不含有缺陷的第三方库升级版本,并分析升级版本中被删除和修改的第三方库API,从而度量第三方库升级代价。


2.根据权利要求1所述的缺陷驱动的第三方库版本升级推荐方法,其特征在于,步骤(2)中所述的第三方库风险分析,具体包括以下子步骤:
1)从第三方库版本知识库加载软件项目所依赖的第三方库版本二进制包,通过静态分析二进制包获得第三方库API列表;
2)通过软件项目源代码和第三方库版本二进制包建...

【专利技术属性】
技术研发人员:陈碧欢彭鑫赵文耘
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

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

1