Understanding the Implications of Changes to Build Systems
The maintenance of build systems imposes a considerable overhead in software development. Since automated quality assurance methods are rarely applied to build specifications, peer code review plays an even more crucial role in the maintenance of build systems. Yet prior work shows that the review process for build systems suffers from a lack of build experts and effective tooling.
To support the understanding of changes to build specifications (a key stage in the review process), we propose BCIA-an approach to summarize the impact of changes to build specifications across the build configuration space. BCIA traverses the paths through which data and control flow in the prior and updated versions of the build system to generate an Impact Knowledge Graph (IKG), which describes the impact of the change across the build configuration space. We develop BuiScout-a prototype implementation of BCIA for CMake-based build systems. We use BuiScout to evaluate our approach through an empirical study of 10,000 change sets that we mine from 10 large open-source projects that span a total of 28 development years. Our findings indicate that BuiScout can detect an impact that propagates to unmodified parts of the build system in 77.37% of the studied change sets. These changes impact a median of 14 unmodified commands, with a median of 95.5% of the impacted commands per impact set appearing in unmodified files. Our study suggests that dedicated approaches, such as BCIA, have the potential to alleviate the challenges developers may face in understanding the full impact of changes to build systems.