Automatically repairing dependency-related build breakage

Authors: Christian Macho Shane McIntosh Martin Pinzger

Venue: SANER   2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER) , pp. 106-117, 2018

Year: 2018

Abstract: Build systems are widely used in today's software projects to automate integration and build processes. Similar to source code, build specifications need to be maintained to avoid outdated specifications, and build breakage as a consequence. Recent work indicates that neglected build maintenance is one of the most frequently occurring reasons why open source and proprietary builds break. In this paper, we propose BuildMedic, an approach to automatically repair Maven builds that break due to dependency-related issues. Based on a manual investigation of 37 broken Maven builds in 23 open source Java projects, we derive three repair strategies to automatically repair the build, namely Version Update, Delete Dependency, and Add Repository. We evaluate the three strategies on 84 additional broken builds from the 23 studied projects in order to demonstrate the applicability of our approach. The evaluation shows that BuildMedic can automatically repair 45 of these broken builds (54%). Furthermore, in 36% of the successfully repaired build breakages, BuildMedic outputs at least one repair candidate that is considered a correct repair. Moreover, 76% of them could be repaired with only a single dependency correction.

BibTeX:

@inproceedings{christianmacho2018ardbb,
    author = "Christian Macho and Shane McIntosh and Martin Pinzger",
    title = "Automatically repairing dependency-related build breakage",
    year = "2018",
    pages = "106-117",
    booktitle = "Proceedings of 2018 IEEE 25th International Conference on Software Analysis, Evolution and
            Reengineering (SANER)
        "
}

Plain Text:

Christian Macho, Shane McIntosh, and Martin Pinzger, "Automatically repairing dependency-related build breakage," 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)
        , pp. 106-117