一句话:构建大规模 Gradle 构建失败数据集,揭示历史修复工具 HireBuild 的局限,并提出基于当前项目与外部资源搜索的简单方法,修复量翻倍。
构建系统在软件演化过程中频繁失效,自动化构建修复技术需求迫切。现有最先进的 Gradle 构建修复工具 HireBuild 通过挖掘历史修复信息来修复构建失败,但其评估数据集有限且严重依赖历史修复信息的质量与可得性。本文从 Top-1000 GitHub 项目中构建了一个新的大规模构建失败数据集,对 HireBuild 进行了定量与定性评估,揭示其有效性与局限。受此启发,作者提出一种简化技术:不从历史修复信息出发,而是从被测项目当前状态与外部资源中搜索生成候选补丁。实验结果表明,这种基于当前信息的简单方法修复的可复现构建失败数量是基于历史信息的 HireBuild 的两倍,并为未来构建失败修复技术提供了多项发现与指导准则。
Build systems are essential for modern software development and maintenance since they are widely used to transform source code artifacts into executable software. Previous work shows that build systems break frequently during software evolution. Therefore, automated build-fixing techniques are in huge demand. In this paper we target a mainstream build system, Gradle, which has become the most widely used build system for Java projects in the open-source community (e.g., GitHub). HireBuild, state-of-the-art build-fixing tool for Gradle, has been recently proposed to fix Gradle build failures via mining the history of prior fixes. Although HireBuild has been shown to be effective for fixing real-world Gradle build failures, it was evaluated on only a limited set of build failures, and largely depends on the quality/availability of historical fix information. To investigate the efficacy and limitations of the history-driven build fix, we first construct a new and large build failure dataset from Top-1000 GitHub projects. Then, we evaluate HireBuild on the extended dataset both quantitatively and qualitatively. Inspired by the findings of the study, we propose a simplistic new technique that generates potential patches via searching from the present project under test and external resources rather than the historical fix information. According to our experimental results, the simplistic approach based on present information successfully fixes 2X more reproducible build failures than the state-of-art HireBuild based on historical fix information. Furthermore, our results also reveal various findings/guidelines for future advanced build failure fixing.
DOI 原文 ·
@inproceedings{paperbot5347,
title = {History-driven build failure fixing: how far are we?},
author = {Yiling Lou and Junjie Chen and Lingming Zhang and Dan Hao and Lu Zhang},
booktitle = {ISSTA},
year = {2019},
doi = {10.1145/3293882.3330578}
}