ICSE 2025
Sat 26 April - Sun 4 May 2025 Ottawa, Ontario, Canada

Society has an insatiable hunger for software. It keeps our planes in the air, our cars on the road, and even guides surgical procedures. Yet as software enriches more and more aspects of our lives, its complexity (and that of its maintenance) presents an ever-growing challenge. To manage the development process of complex software, build systems are widely adopted to perform routine checks after code submissions. The build system lies at the core of the software delivery process, responsible for transforming source code (pseudo-English machine instructions) into release-ready software that users can install or interact with. While build systems provide numerous benefits, the rapid pace of modern software development generates heavy workloads for them to process. Executing builds requires substantial computing resources and energy, and when a build fails, the consequences ripple throughout the development process. Failures not only block others from validating their work, but also necessitate repeated executions, incurring more resource consumption. In a case study of a software organization, 18% of builds failed, with an average of 56 minutes spent resolving each failure. Such inefficiencies contribute to wasted computing resources and energy and hinder productivity, emphasizing the need for more cost-effective solutions.

This proposal aims to develop automated methods for repairing build failures by addressing four key areas: (1) compilation errors, (2) dependency-induced errors, (3) test execution errors, and (4) a comprehensive solution that integrates these aspects. The approach involves parsing and analyzing build action traces to identify root causes, cataloging and exploiting patterns of reusable build fixes to enable rapid resolution, and leveraging machine learning approaches, such as the fine-tuning and prompting of large language models, to assist developers in re-implementing failed test cases. These innovations will streamline the build repair process