一错再错学习的实证研究
Learning Off-By-One Mistakes: An Empirical Study
摘要:
二进制条件中的错误是许多软件系统中的错误来源。它们发生在开发人员使用,例如,< or >而不是<=或>=。这些边界错误很难发现,并为软件开发人员带来了手动的劳动密集型工作。虽然以前的研究已经提出了解决方案,以确定边界条件中的错误,这个问题仍然悬而未决。在本文中,我们探讨了深度学习模型在学习和预测边界条件错误方面的有效性。我们在大约160万个具有不同边界条件的故障的示例上训练不同的模型。我们在平衡数据集上实现了85%的精确度和84%的召回率,但在不平衡数据集上的数字较低。我们还对从GitHub上发现的41个真实边界条件错误进行了测试,其中模型仅显示出适度的性能。最后,我们测试了一个大规模的Java代码库Adyen,我们的工业合作伙伴的模型。该模型报告了36个错误的方法,但没有一个得到开发人员的证实。
英文摘要:
Mistakes in binary conditions are a source of error in many software systems. They happen when developers use, e.g., < or > instead of <= or >=. These boundary mistakes are hard to find and impose manual, labor-intensive work for software developers. While previous research has been proposing solutions to identify errors in boundary conditions, the problem remains open. In this paper, we explore the effectiveness of deep learning models in learning and predicting mistakes in boundary conditions. We train different models on approximately 1.6M examples with faults in different boundary conditions. We achieve a precision of 85% and a recall of 84% on a balanced dataset, but lower numbers in an imbalanced dataset. We also perform tests on 41 real-world boundary condition bugs found from GitHub, where the model shows only a modest performance. Finally, we test the model on a large-scale Java code base from Adyen, our industrial partner. The model reported 36 buggy methods, but none of them were confirmed by developers.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。