Improved IR-based Bug Localization with Intelligent Relevance Feedback

📄 arXiv: 2501.10542v2 📥 PDF

作者: Asif Mohammed Samir, Mohammad Masudur Rahman

分类: cs.SE, cs.AI, cs.CL

发布日期: 2025-01-17 (更新: 2025-03-27)

备注: 13 pages, 5 figures


💡 一句话要点

提出BRaIn,利用LLM智能相关性反馈改进基于IR的缺陷定位

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 缺陷定位 信息检索 大型语言模型 相关性反馈 软件工程

📋 核心要点

  1. 现有基于信息检索的缺陷定位方法难以弥合缺陷报告和代码之间需要深入上下文理解的差距。
  2. BRaIn利用大型语言模型评估缺陷报告和代码的相关性,并通过智能相关性反馈改进查询和文档排序。
  3. 实验表明,BRaIn在MAP、MRR和HIT@K指标上显著优于现有基线方法,并能定位更多因报告质量差而难以定位的缺陷。

📝 摘要(中文)

软件缺陷是开发和维护过程中的重大挑战,从业者花费近50%的时间处理缺陷。许多现有技术采用信息检索(IR)方法,利用缺陷报告和源代码之间的文本和语义相关性来定位报告的缺陷。然而,它们通常难以弥合缺陷报告和代码之间的关键差距,这需要深入的上下文理解,而不仅仅是文本或语义相关性。本文提出了一种新的缺陷定位技术——BRaIn,它通过使用大型语言模型(LLM)评估缺陷报告和代码之间的相关性来解决上下文差距。然后,它利用LLM的反馈(即智能相关性反馈)来重新制定查询并重新排序源文档,从而改进缺陷定位。我们使用基准数据集Bench4BL和三个性能指标评估BRaIn,并将其与文献中的六种基线技术进行比较。实验结果表明,BRaIn在MAP、MRR和HIT@K指标上分别优于基线87.6%、89.5%和48.8%。此外,由于相应的缺陷报告质量较差,它能够定位大约52%的基线技术无法定位的缺陷。通过解决上下文差距并引入智能相关性反馈,BRaIn不仅推进了理论,还改进了基于IR的缺陷定位。

🔬 方法详解

问题定义:现有基于信息检索(IR)的缺陷定位方法主要依赖于缺陷报告和源代码之间的文本和语义相关性。然而,这些方法忽略了两者之间存在的上下文差距,即需要更深层次的理解才能将缺陷报告与相关的代码片段联系起来。现有方法难以处理由于缺陷报告质量差或缺乏领域知识而导致的信息不足的情况。

核心思路:BRaIn的核心思路是利用大型语言模型(LLM)的强大上下文理解能力来弥补缺陷报告和代码之间的上下文差距。通过让LLM评估缺陷报告和代码之间的相关性,并利用LLM的反馈来改进查询和重新排序代码文档,从而更准确地定位缺陷。这种方法模拟了人类专家在缺陷定位过程中的推理和判断过程。

技术框架:BRaIn的整体框架包含以下几个主要阶段:1) 初始检索:使用传统的IR方法(如VSM或BM25)检索与缺陷报告相关的候选代码文档。2) LLM相关性评估:将缺陷报告和候选代码文档输入到LLM中,由LLM评估它们之间的相关性。3) 智能相关性反馈:LLM根据其评估结果提供反馈,例如识别缺陷报告中重要的关键词或建议修改查询。4) 查询重构:根据LLM的反馈,重新构建查询,以更准确地反映缺陷报告的意图。5) 文档重排序:使用重构后的查询,重新排序候选代码文档,将更相关的文档排在前面。

关键创新:BRaIn最重要的技术创新点在于引入了“智能相关性反馈”的概念,并利用LLM来实现这一反馈机制。与传统的相关性反馈方法不同,BRaIn的反馈不是基于简单的文本匹配或统计分析,而是基于LLM对缺陷报告和代码的深层语义理解。这种方法能够更有效地识别缺陷报告中的关键信息,并将其转化为更准确的查询。

关键设计:BRaIn的关键设计包括:1) LLM的选择:论文中使用了特定的LLM模型(具体模型未知),并对其进行了微调,以提高其在缺陷定位任务中的性能。2) 相关性评估的Prompt设计:设计合适的Prompt,引导LLM评估缺陷报告和代码之间的相关性,并提供有用的反馈。3) 查询重构策略:根据LLM的反馈,设计有效的查询重构策略,例如添加关键词、删除噪声词或修改查询的结构。4) 文档重排序算法:使用重构后的查询,设计高效的文档重排序算法,以提高缺陷定位的准确率。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,BRaIn在Bench4BL数据集上显著优于六种基线方法,在MAP、MRR和HIT@K指标上分别取得了87.6%、89.5%和48.8%的提升。更重要的是,BRaIn能够定位大约52%的基线技术无法定位的缺陷,这表明其在处理质量较差的缺陷报告方面具有显著优势。这些结果验证了BRaIn在改进基于IR的缺陷定位方面的有效性。

🎯 应用场景

BRaIn技术可应用于软件开发和维护的各个阶段,帮助开发人员快速定位和修复缺陷,提高软件质量和开发效率。该技术还可用于自动化缺陷报告分析、代码审查和知识库构建等领域,为软件工程提供更智能化的解决方案。未来,该技术有望与持续集成/持续交付(CI/CD)流程集成,实现缺陷的早期发现和预防。

📄 摘要(原文)

Software bugs pose a significant challenge during development and maintenance, and practitioners spend nearly 50% of their time dealing with bugs. Many existing techniques adopt Information Retrieval (IR) to localize a reported bug using textual and semantic relevance between bug reports and source code. However, they often struggle to bridge a critical gap between bug reports and code that requires in-depth contextual understanding, which goes beyond textual or semantic relevance. In this paper, we present a novel technique for bug localization - BRaIn - that addresses the contextual gaps by assessing the relevance between bug reports and code with Large Language Models (LLM). It then leverages the LLM's feedback (a.k.a., Intelligent Relevance Feedback) to reformulate queries and re-rank source documents, improving bug localization. We evaluate BRaIn using a benchmark dataset, Bench4BL, and three performance metrics and compare it against six baseline techniques from the literature. Our experimental results show that BRaIn outperforms baselines by 87.6%, 89.5%, and 48.8% margins in MAP, MRR, and HIT@K, respectively. Additionally, it can localize approximately 52% of bugs that cannot be localized by the baseline techniques due to the poor quality of corresponding bug reports. By addressing the contextual gaps and introducing Intelligent Relevance Feedback, BRaIn advances not only theory but also improves IR-based bug localization.