The increasing complexity of today's software requires the contribution of thousands of developers. This complex collaboration structure makes developers more likely to introduce defect-prone changes that lead to software faults. Determining when these defect-prone changes are introduced has proven challenging, and using traditional machine learning (ML) methods to make these determinations seems to have reached a plateau. In this work, we build contribution graphs consisting of developers and source files to capture the nuanced complexity of changes required to build software. By leveraging these contribution graphs, our research shows the potential of using graph-based ML to improve Just-In-Time (JIT) defect prediction. We hypothesize that features extracted from the contribution graphs may be better predictors of defect-prone changes than intrinsic features derived from software characteristics. We corroborate our hypothesis using graph-based ML for classifying edges that represent defect-prone changes. This new framing of the JIT defect prediction problem leads to remarkably better results. We test our approach on 14 open-source projects and show that our best model can predict whether or not a code change will lead to a defect with an F1 score as high as 86.25$\%$. This represents an increase of as much as 55.4$\%$ over the state-of-the-art in JIT defect prediction. We describe limitations, open challenges, and how this method can be used for operational JIT defect prediction.
翻译:今天软件日益复杂,需要数千名开发者作出贡献。这一复杂的协作结构使得开发者更有可能引入导致软件缺陷的易变型。我们假设,从贡献图表中提取的功能可能是预测易变型变化的更好指标,而不是从软件特点中得出的内在特征。我们用基于图表的ML方法证实我们的假设,对代表易变型的边缘进行分类。这种对 JIT 缺陷预测问题的新框架可以带来非常更好的结果。我们用这些贡献图表测试了14个开放源项目,并表明我们的最佳模型可以预测代码变化是否会导致一个缺陷,以F1比86.25美元高的J1分数计算出。我们假设从贡献图表中提取的特征可能是预测易变型变化的更好指标,而不是从软件特性中得出的内在特征。我们用基于图表的 ML 方法来证实我们的假设,将代表易变型变化的边缘进行分类。这种对 JIT 缺陷预测的新框架可以带来显著的结果。我们在14个开放源项目上测试我们的最佳模型可以预测,并显示我们的最佳模型可以预测代码变化是否会导致一个缺陷,以86.25美元为高的F1分数。我们使用的预测是55美元的预测。我们使用这种变型的方法是如何增加。