一句话:通过分析 Stack Overflow 上 Maven、Ant、Gradle 的 1,080 个构建问题,构建症状分类并总结修复模式。
构建失败在现代软件开发中频繁发生,解决成本高,而现有自动化修复技术效果仍有限,因此需要理解实践中构建问题如何被修复。本文对 Stack Overflow 上 Maven、Ant 和 Gradle 三个流行构建系统的 1,080 个构建问题进行了实证研究,构建了一个包含 50 个类别的细粒度症状分类体系,并针对不同失败类型总结修复模式。关键发现包括:构建问题的症状范围广泛;67.96% 的问题通过修改与插件和依赖相关的构建脚本代码修复;有 20 个症状类别中超过一半的构建问题可由特定模式修复。文章还讨论了开发者应用非直观或过于简化的修复模式时面临的挑战。
Build systems are essential for modern software maintenance and development, while build failures occur frequently across software systems, inducing non-negligible costs in development activities. Build failure resolution is a challenging problem and multiple studies have demonstrated that developers spend non-trivial time in resolving encountered build failures; to relieve manual efforts, automated resolution techniques are emerging recently, which are promising but still limitedly effective. Understanding how build failures are resolved in practice can provide guidelines for both developers and researchers on build issue resolution. Therefore, this work presents a comprehensive study of fix patterns in practical build failures. Specifically, we study 1,080 build issues of three popular build systems Maven, Ant, and Gradle from Stack Overflow, construct a fine-granularity taxonomy of 50 categories regarding to the failure symptoms, and summarize the fix patterns for different failure types. Our key findings reveal that build issues stretch over a wide spectrum of symptoms; 67.96% of the build issues are fixed by modifying the build script code related to plugins and dependencies; and there are 20 symptom categories, more than half of whose build issues can be fixed by specific patterns. Furthermore, we also address the challenges in applying non-intuitive or simplistic fix patterns for developers.
DOI 原文 ·
@inproceedings{paperbot5737,
title = {Understanding build issue resolution in practice: symptoms and fix patterns},
author = {Yiling Lou and Zhenpeng Chen and Yanbin Cao and Dan Hao and Lu Zhang},
booktitle = {FSE},
year = {2020},
doi = {10.1145/3368089.3409760}
}