BLAZE: Cross-Language and Cross-Project Bug Localization via Dynamic Chunking and Hard Example Learning

2024年07月24日
  • 简介
    软件缺陷需要开发人员付出大量的努力来识别和解决,通常消耗他们三分之一的时间。缺陷定位是指确定需要修改的确切源代码文件的过程,对于减少这种努力非常重要。现有的缺陷定位工具通常依赖于深度学习技术,但在跨项目适用性和多语言环境下的有效性方面存在限制。最近,大型语言模型(LLMs)的进展为缺陷定位提供了详细的表示。然而,它们在有限的上下文窗口和映射精度方面遇到了挑战。为了解决这些问题,我们提出了BLAZE,一种采用动态分块和困难示例学习的方法。首先,BLAZE动态分割源代码以最小化连续性损失。然后,BLAZE使用具有挑战性的缺陷案例对基于GPT的模型进行微调,以增强跨项目和跨语言的缺陷定位能力。为了支持BLAZE的能力,我们创建了BEETLEBOX数据集,其中包括来自5种不同编程语言(Java、C++、Python、Go和JavaScript)的29个大型和繁荣的开源项目中的26,321个缺陷。我们对BLAZE在三个基准数据集BEETLEBOX、SWE-Bench和Ye等人的评估表明,与六种最先进的基线相比,有了显著的改进。具体而言,BLAZE在Top 1准确率、平均精度(MAP)和平均倒数排名(MRR)方面分别实现了高达120%、144%和100%的增长。广泛的消融研究证实了我们管道组件对整体性能提升的贡献。
  • 作者讲解
  • 图表
  • 解决问题
    BLAZE论文试图解决的问题是软件开发中的bug定位问题,尤其是在跨项目和多语言环境下的定位问题。
  • 关键思路
    BLAZE采用动态分块和难例学习的方法,通过动态分块减少连续性损失,通过使用具有挑战性的bug案例对GPT模型进行微调,从而提高跨项目和跨语言的bug定位能力。
  • 其它亮点
    BEETLEBOX数据集包含了来自29个大型开源项目的26,321个bug,覆盖了Java、C++、Python、Go和JavaScript等5种不同的编程语言。BLAZE在BEETLEBOX、SWE-Bench和Ye等人的三个基准数据集上进行了评估,并与六种最先进的基线进行了比较,取得了显著的改进。实验结果表明,BLAZE在Top 1准确率、平均精度(MAP)和平均倒数排名(MRR)等指标上均取得了100%以上的提高。
  • 相关研究
    最近在这个领域中,还有一些相关研究,如DeepTune、DeepBugs、和R2Fix等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问