论文标题

交互式,努力意识的库版本协调

Interactive, Effort-Aware Library Version Harmonization

论文作者

Huang, Kaifeng, Chen, Bihuan, Shi, Bowen, Wang, Ying, Xu, Congying, Peng, Xin

论文摘要

由于密切依赖第三方库,声明依赖性的灵活机制以及项目中的模块数量增加,因此同一第三方库的多个版本直接取决于项目的不同模块,这是一个混合的结果。这种库版本的不一致会增加依赖性维护成本,甚至会导致模块相互依赖时导致依赖性冲突。尽管自动化构建工具(例如Maven的Enforcer插件)提供了部分支持以检测库版本不一致,但它们并未提供任何支持以协调不一致的库版本。我们首先与GitHub的131个Java开发人员进行了调查,以检索有关根本原因,检测方法,修复或不解决的原因,修复策略,修复策略,修复工作以及对图书馆版本不一致的工具期望的信息。然后,根据我们调查的见解,我们提出了一种互动的,努力的图书馆版本协调技术Libharmo,以检测库版本的不一致,并互动地提出了一个协调的版本,其基于库API用法分析和重构构建配置文件的协调版本最少的协调工作。 Libharmo目前是针对Java Maven项目开发的。我们对GitHub的443个备受瞩目的Java Maven项目的实验研究表明,Libharmo确定了涉及152(34.3%)项目的621个图书馆版本不一致,ii)平均协调工作是由于删除和更改了库中的1和12库API呼叫,分别受到了库的呼叫的影响。已经确认了5个图书馆版本不一致,其中1个已经由开发人员协调。

As a mixed result of intensive dependency on third-party libraries, flexible mechanism to declare dependencies, and increased number of modules in a project, multiple versions of the same third-party library are directly depended in different modules of a project. Such library version inconsistencies can increase dependency maintenance cost, or even lead to dependency conflicts when modules are inter-dependent. Although automated build tools (e.g., Maven's enforcer plugin) provide partial support to detect library version inconsistencies, they do not provide any support to harmonize inconsistent library versions. We first conduct a survey with 131 Java developers from GitHub to retrieve first-hand information about the root causes, detection methods, reasons for fixing or not fixing, fixing strategies, fixing efforts, and tool expectations on library version inconsistencies. Then, based on the insights from our survey, we propose LibHarmo, an interactive, effort-aware library version harmonization technique, to detect library version inconsistencies, interactively suggest a harmonized version with the least harmonization efforts based on library API usage analysis, and refactor build configuration files. LibHarmo is currently developed for Java Maven projects. Our experimental study on 443 highly-starred Java Maven projects from GitHub indicates that i) LibHarmo identifies 621 library version inconsistencies covering 152 (34.3%) of projects, and ii) the average harmonization efforts are that 1 and 12 library API calls are affected, respectively due to the deleted and changed library APIs in the harmonized version. 5 library version inconsistencies have been confirmed, and 1 of them has been already harmonized by developers.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源