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 77.55$\%$. This represents an increase of as much as 46.72$\%$ 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方法证实我们的假设,用基于图的ML对代表易变的边缘进行分类。这种对JIT缺陷预测问题的新框架可以带来非常更好的结果。我们通过利用这些贡献图表来测试我们的方法。我们的研究显示,使用基于图表的 ML 来改进对JIT(JIT)缺陷的预测。我们假设,从贡献图表中提取的特征可能比从软件特性中得出的内在特征更好地预测易变缺陷变化的指数。我们用基于图表的ML来证实我们的假设,将代表易变缺陷变化的边缘进行分类。这种对JIT缺陷预测的新框架可以带来非常更好的结果。我们在14个开放源项目上测试我们的最佳模型可以预测代码变化是否会导致F1的缺陷,以77.55.72美元作为高的预测值。我们使用这种预测的精确度如何提高。