Diagnosing Dependency-Related Build Failures by Collaborative Filtering
Date
Authors
ORCID
Journal Title
Journal ISSN
Volume Title
Publisher
item.page.doi
Abstract
Manually repairing code is quite time-consuming for programmers and costly for companies. We observe that the repairs for dependency-related build failures are typically hand-worked and highly rule-based. Fixing dependency-related build failures can be divided into 3 steps, the first step is to find which dependencies may be influenced during dependency updates, second is to determine the influenced dependencies’ version number, third is to find which lines of code need to change. Here we focus on finding which dependencies task. We propose a novel approach that learns history dependency graph patterns for automatically recommending possible “bug” dependencies and fixing dependency-related build failure. Instead of an expensive search in a large number of candidate dependencies, our technique can use simple yet effective graph ranking techniques to recommend the most possible candidate “bug” dependencies and largely reduce developers’ search space. To investigate the efficiency and limitations of our approach, we experimented on 75 opensource projects from GitHub, which includes more than 15,000 dependency-related commits and around 500 dependencies. Each time we used these tens of thousands of commits to construct the history dependency co-update graph. We extracted 24 build failures caused by dependency for our approach evaluation. According to our experiment results, our approach performs well in 22 out of them in dependency update and dependency add task. Furthermore, our results also indicate more findings for future advanced dependency-related build failure fixing.