交互式、工作量感知的库版本协调
Interactive, Effort-Aware Library Version Harmonization
摘要:
由于对第三方库的强烈依赖、声明依赖关系的灵活机制以及项目中模块数量的增加,同一第三方库的多个版本直接依赖于项目的不同模块。这种库版本不一致会增加依赖维护成本,甚至在模块相互依赖时导致依赖冲突。尽管自动化构建工具(例如,Maven的enforcer插件)提供部分支持来检测库版本不一致,但它们不提供任何支持来协调不一致的库版本。我们首先对GitHub上的131名Java开发人员进行了调查,以获取有关库版本不一致的根本原因、检测方法、修复或不修复的原因、修复策略、修复工作以及工具期望的第一手信息。然后,根据我们的调查的见解,我们提出了LibHarmo,一个交互式的,努力感知的库版本协调技术,检测库版本不一致,交互式地建议一个协调的版本与最少的协调工作的基础上库API的使用分析,并重构构建配置文件。LibHarmo目前为Java Maven项目开发。我们对来自GitHub的443个高星级Java Maven项目的实验研究表明,i)LibHarmo识别出621个库版本不一致,覆盖152个项目(34.3%),ii)平均协调工作是1个和12个库API调用受到影响,分别是由于协调版本中删除和更改的库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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。