我们能否从开发者错误中学习?从真实缺陷修复中学习定位与修复真实缺陷
软件工程
2022-07-04 v1 机器学习
摘要
开源仓库中的真实缺陷修复看似是学习定位与修复真实缺陷的完美数据源。然而,大规模缺陷修复集合的缺失使得过去难以在较大神经模型的训练中有效利用真实缺陷修复。相比之下,人工缺陷——通过对现有源代码变异产生——可轻易以足够规模获取,因而常受现有方法训练偏爱。但训练于人工缺陷的定位与修复模型在面对真实缺陷时通常表现不佳。这引出一个问题:训练于真实缺陷修复的缺陷定位与修复模型是否在定位与修复真实缺陷上更有效。我们通过提出 RealiT 来解答此问,这是一种预训练-微调方法,用于从真实缺陷修复中有效学习定位与修复真实缺陷。RealiT 先在传统变异算子产生的大量人工缺陷上预训练,再于较小的真实缺陷修复集上微调。微调无需对学习算法作任何修改,因此可轻松用于缺陷定位或修复的多种训练场景(即便真实训练数据稀少)。此外,我们发现以 RealiT 训练于真实缺陷修复在经验上功效显著:将某现有模型在真实缺陷上的定位性能提升近一倍,同时保持甚至改善了修复性能。
引用
@article{arxiv.2207.00301,
title = {Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixes},
author = {Cedric Richter and Heike Wehrheim},
journal= {arXiv preprint arXiv:2207.00301},
year = {2022}
}