Understanding build issue resolution in practice: symptoms and fix patterns

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.

[1]  Michael R. Lyu,et al.  An Empirical Study of Common Challenges in Developing Deep Learning Applications , 2019, 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE).

[2]  Philipp Leitner,et al.  An Empirical Analysis of Build Failures in the Continuous Integration Workflows of Java-Based Open-Source Software , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[3]  Taher Ahmed Ghaleb,et al.  An empirical study of the long duration of continuous integration builds , 2019, Empirical Software Engineering.

[4]  Graham Neubig,et al.  Retrieval-Based Neural Code Generation , 2018, EMNLP.

[5]  Luke S. Zettlemoyer,et al.  Online Learning of Relaxed CCG Grammars for Parsing to Logical Form , 2007, EMNLP.

[6]  Emad Shihab,et al.  What are mobile developers asking about? A large scale study using stack overflow , 2016, Empirical Software Engineering.

[7]  Mirella Lapata,et al.  Language to Logical Form with Neural Attention , 2016, ACL.

[8]  Harald C. Gall,et al.  Un-break My Build: Assisting Developers with Build Repair Hints , 2018, 2018 IEEE/ACM 26th International Conference on Program Comprehension (ICPC).

[9]  Foyzul Hassan,et al.  Automatic Building of Java Projects in Software Repositories: A Study on Feasibility and Challenges , 2017, 2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[10]  Gabriele Bavota,et al.  There and back again: Can you compile that snapshot? , 2017, J. Softw. Evol. Process..

[11]  Robert W. Bowdidge,et al.  Programmers' build errors: a case study (at google) , 2014, ICSE.

[12]  Gabriele Bavota,et al.  Software Documentation Issues Unveiled , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).

[13]  Hitesh Sapkota,et al.  Why is Developing Machine Learning Applications Challenging? A Study on Stack Overflow Posts , 2019, 2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[14]  Lingming Zhang,et al.  History-driven build failure fixing: how far are we? , 2019, ISSTA.

[15]  Yann-Gaël Guéhéneuc,et al.  A study of build inflation in 30 million CPAN builds on 13 Perl versions and 10 operating systems , 2019, Empirical Software Engineering.

[16]  Shane McIntosh,et al.  The evolution of Java build systems , 2012, Empirical Software Engineering.

[17]  Xin Peng,et al.  A large-scale empirical study of compiler errors in continuous integration , 2019, ESEC/SIGSOFT FSE.

[18]  Tao Xie,et al.  A comprehensive study on challenges in deploying deep learning based software , 2020, ESEC/SIGSOFT FSE.

[19]  Foutse Khomh,et al.  Why Do Automated Builds Break? An Empirical Study , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[20]  Georgios Gousios,et al.  Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[21]  Andy Zaidman,et al.  A Tale of CI Build Failures: An Open Source and a Financial Organization Perspective , 2017, ICSME.

[22]  Wenhao Yu,et al.  Supplementary material , 2015 .

[23]  Mehdi Bagherzadeh,et al.  What do concurrency developers ask about?: a large-scale study using stack overflow , 2018, ESEM.

[24]  Carolyn B. Seaman,et al.  Qualitative Methods in Empirical Studies of Software Engineering , 1999, IEEE Trans. Software Eng..

[25]  Shane McIntosh,et al.  Automatically repairing dependency-related build breakage , 2018, 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[26]  Foyzul Hassan,et al.  HireBuild: An Automatic Approach to History-Driven Repair of Build Scripts , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[27]  Raffi Khatchadourian,et al.  Going big: a large-scale study on what big data developers ask , 2019, ESEC/SIGSOFT FSE.

[28]  Gabriele Bavota,et al.  Taxonomy of Real Faults in Deep Learning Systems , 2019, 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE).

[29]  Paul Ralph,et al.  Toward Methodological Guidelines for Process Theories and Taxonomies in Software Engineering , 2019, IEEE Transactions on Software Engineering.

[30]  Xinli Yang,et al.  What Security Questions Do Developers Ask? A Large-Scale Study of Stack Overflow Posts , 2016, Journal of Computer Science and Technology.

[31]  Hung Viet Nguyen,et al.  Fault localization for build code errors in makefiles , 2014, ICSE Companion.

[32]  Matús Sulír,et al.  A quantitative study of Java software buildability , 2016, PLATEAU@SPLASH.