持续学习缺陷定位
软件工程
2024-12-17 v1
摘要
自动定位与缺陷报告相关的缺陷变更集在软件开发过程中至关重要。基于深度学习 (DL) 的技术通过利用代码的结构信息并学习变更集与缺陷报告之间的关联,展现出了良好的效果。然而,由于与变更集相关的源代码不断演化,此类模型的性能往往会因概念漂移而随时间下降。为应对这一挑战,本文评估了在多子任务设置下(每个子任务在平稳或非平稳数据上运行)使用持续学习 (CL) 技术进行缺陷定位的潜力,并将其与利用 BERT 模型的缺陷定位技术、利用 A2C 算法的深度强化学习技术以及用于语义缺陷定位的基于 DL 的函数级交互模型进行了比较。此外,我们通过使用逻辑回归来识别并整合最显著的缺陷诱发因素,从而增强了 CL 技术。我们在七个广泛使用的软件项目上的实证评估表明,在非平稳设置下,CL 技术在性能上优于基于 DL 的技术,其平均倒数排名 (MRR) 提升高达 61%,平均精度均值 (MAP) 提升 44%,top@1 提升 83%,top@5 提升 56%,top@10 指标提升 66%。此外,我们表明,所研究的 CL 技术能够有效定位与缺陷报告相关的变更集,同时能够缓解所研究任务中的灾难性遗忘,并且在训练期间所需的计算量最多可减少 5 倍。我们的发现证明了在非平稳设置下采用 CL 进行缺陷定位的潜力,并希望这有助于利用 CL 技术改进软件工程中的缺陷定位活动。
引用
@article{arxiv.2412.11289,
title = {Continuously Learning Bug Locations},
author = {Paulina Stevia Nouwou Mindom and Leuson Da Silva and Amin Nikanjam and Foutse Khomh},
journal= {arXiv preprint arXiv:2412.11289},
year = {2024}
}