大型代码语言模型对故障定位的影响
软件工程
2024-08-20 v1
摘要
定位错误位置在软件调试中至关重要。传统的故障定位(FL)技术依赖于执行程序,并结合代码覆盖矩阵和测试结果来计算每个函数或行的可疑度评分。最近,基于学习的 FL 技术利用机器学习模型从代码覆盖矩阵中提取有意义的特征以提升 FL 性能。然而,这些技术需要可编译的源代码、现有测试用例以及用于生成每种编程语言代码覆盖矩阵的专用工具。在本文中,我们首次提出了一种简单而有效的序列生成方法,用于微调大型代码语言模型(LLMC)以完成 FL 任务。LLMC 最近因各种软件工程问题而受到广泛关注。与之一致,我们利用 LLMC 通过在大型代码语料库上预训练而获得的代码固有理解。具体而言,我们对 13 个代表性的编码器、编码器-解码器和基于解码器的 LLMC 进行了 FL 任务的微调。与先前方法不同,LLMC 即使在存在语法错误的情况下也能分析代码序列,因为它们不依赖编译后的输入。然而,它们在输入数据长度上仍存在限制。因此,为了与现有 FL 技术进行公平比较,我们从项目级基准 Defects4J 中提取包含错误的方法,并在行级别进行分析。实验结果表明,通过我们的方法微调的 LLMC 在 Defects4J 的 1291 个方法中成功定位了错误位置,Top-1/3/5 预测分别达到 50.6%、64.2% 和 72.3%,分别优于最佳基于学习的最先进技术 1.35、1.12 和 1.08 倍。我们的发现表明了使用 LLMC 进行 FL 和自动程序修复任务的有前景的研究方向。
引用
@article{arxiv.2408.09657,
title = {Impact of Large Language Models of Code on Fault Localization},
author = {Suhwan Ji and Sanghwa Lee and Changsup Lee and Hyeonseung Im and Yo-Sub Han},
journal= {arXiv preprint arXiv:2408.09657},
year = {2024}
}