综述:用于软件调试任务的自然语言处理技术:涵盖缺陷报告分析、缺陷复现与定位的系统文献综述

《Science of Computer Programming》:NLP Techniques for software debugging tasks: A systematic literature review covering bug report analysis, bug reproduction, and localization

【字体: 大 中 小 】 时间:2026年09月06日 来源:Science of Computer Programming 1.6

编辑推荐:

   - 现有的系统文献综述(SLR)已涵盖了调试的特定方面,但在提供基于自然语言处理(NLP)方法跨多种调试任务的综合视图方面存在空白。 - 我们系统地分类了调试中利用NLP技术的现有研究领域,为其在各种调试任务中的应用提供了结构化的概述。 - 我们分析了调试相关任务中使用的NL

  

- 现有的系统文献综述(SLR)已涵盖了调试的特定方面,但在提供基于自然语言处理(NLP)方法跨多种调试任务的综合视图方面存在空白。
- 我们系统地分类了调试中利用NLP技术的现有研究领域,为其在各种调试任务中的应用提供了结构化的概述。
- 我们分析了调试相关任务中使用的NLP技术,突出了它们的方法、优势和局限性。
- 我们提出了NLP技术在改进调试流程方面的有效性和效率分析,揭示了它们在现实软件开发场景中的实际影响。
- 我们确定了将NLP技术集成到调试工作流程中的潜在挑战,并强调了未来的研究方向,以解决这些挑战并推动该领域的发展。

**引言**

调试是软件维护中的基本任务,对于确保软件系统的可靠性和功能性至关重要。它涉及识别和解决源代码中的错误,通常称为bug。这些bug可能导致严重的问题,包括系统故障、输出不准确、安全漏洞和数据丢失。当怀疑或识别出此类bug时,它们通常由测试工程师或用户以bug报告或问题报告的形式上报,通常使用bug跟踪系统(如Bugzilla、Jira)[1]。为了促进调试,开发人员通常依赖除bug报告外的其他资源,如各种类型的日志,包括控制台日志[2]、系统调用日志[3]、[4]和网络监控日志[5]。然而,这些资源并不总是可用于诊断或解决错误,这使得bug报告成为调试的主要资源[6]。

用户或测试人员通常在bug报告中记录错误,为开发人员提供复现、诊断和解决问题的关键信息,以提高软件质量和可靠性[6]、[7]。收到bug报告后,开发或维护团队会分析该文档。此分析涉及多项任务,例如识别重复的bug报告、验证文档以及将bug分配给适当的个人进行解决[1]。一旦bug被分配,负责人会尝试复现它。

在bug复现阶段,开发人员通常面临挑战,因为bug报告中信息不完整、模糊、不精确或缺失,需要进一步分析和完善[6]。复现bug是在调试过程中解决任何bug的重要第一步[8]。如果复现成功,开发人员会识别出导致bug的源代码确切位置,这一过程称为bug定位。一旦定位,开发人员实施必要的修正以解决bug,称为bug修复。

现代软件系统日益增加复杂性和动态性,使调试成为一个耗时和成本敏感的过程[9]。为了应对这些挑战,人们越来越重视自动化调试过程,以减少人工努力、降低调试成本并提高效率[10]。已经提出了多种自动和半自动调试方法来减轻开发人员的负担[1]、[3]、[4]、[6]、[11]、[12]。这些技术旨在简化调试工作流程,同时保持软件质量和可靠性[13],加快bug的识别和解决。

自动化调试过程需要对bug报告进行有效分析,而bug报告通常以非结构化的自然语言撰写。调试方法的最新进展利用了信息检索(IR)[14]、人工智能(AI)[15]、机器学习(ML)[16]、深度学习(DL)[17]、自然语言处理(NLP)[18]和大型语言模型(LLM)[19]、[20]的技术。其中,NLP因其处理人类撰写的bug报告并从中提取见解的能力而成为突出的研究方向[6]、[18]、[21],解决了非结构化、模糊且大量bug报告带来的挑战[18]、[22]。NLP技术简化了bug分类、重复报告检测、严重性预测和优先级排序等调试任务[22],使开发人员能够更有效地管理大规模调试任务。尽管取得了这些进展,基于NLP的方法在可扩展性、准确性和对多样化且不断演变的软件环境的适应性方面仍面临重大挑战[23]。

全面了解NLP在软件调试中的应用,对于最大化其潜力并解决当前方法的局限性至关重要。随着利用NLP进行软件调试的兴趣不断增长,近年来相关研究显著扩展。然而,现有研究往往关注特定领域,如bug定位或bug修复,而没有提供更广泛的NLP在各种调试任务中应用的概述。本文提出了一篇关于用于自动化调试任务的最新NLP技术的系统文献综述(SLR)。通过考察最新进展,本综述识别了当前趋势、挑战和研究空白,为NLP驱动的调试方法提供了整体视角。

现有的SLR和评论[1]、[12]、[15]、[24]、[25]已涵盖了调试的特定方面,但在提供基于NLP方法跨多种调试任务的综合视图方面存在空白。例如,Wang等人(2023)[12]分析了bug复现和定位研究,旨在理解和解决不可复现bug的问题。类似地,Wong等人(2016)[24]和Li等人(2021)[25]对bug定位技术和模型进行了调查,识别了研究空白和挑战。此外,Nagwani等人(2023)[15]探讨了AI技术在bug分类(triaging)中的应用。一些研究关注bug报告的多个方面以改进调试任务,例如[26]对bug优先级排序进行了调查,[1]对bug报告分析进行了调查,Soltani等人[27]对bug报告元素进行了调查,[11]则专注于bug修复问题。我们集体关注所有使用NLP技术解决研究问题的bug报告分析任务,如bug分类、重复bug报告识别、bug严重性预测和优先级排序。因此,我们研究的目标是:"提供关于用于各种调试任务(即bug复现、bug定位)的NLP驱动解决方案的现有文献的综合概述,并对这些工作的局限性、性能和潜在的未来进步进行批判性分析。" 尽管自动程序修复(APR)或自动bug修复是软件调试的相关任务,但它不在本文的范围内。APR已在先前研究中进行了综述[11]、[28],而修复前的阶段,特别是bug理解、定位和复现,缺乏统一的综述,尤其是在近期NLP和基于LLM的进展背景下。为实现这一目标,我们利用系统文献综述方法,关注现有调试文献中的四个关键维度:问题领域、解决方案、性能和局限性。这形成了四个研究问题:RQ1:调试中使用NLP技术解决哪些研究问题?RQ2:调试中使用哪些类型的NLP技术?RQ3:NLP技术对调试是否高效有效?RQ4:现有调试文献中持续存在的研究空白和挑战是什么?我们的SLR包括2011年至2025年的87篇论文,涵盖了利用NLP技术的调试的各个领域。

本SLR的主要贡献如下:

- 我们系统地分类了调试中利用NLP技术的现有研究领域,为其在各种调试任务中的应用提供了结构化的概述。
- 我们分析了调试相关任务中使用的NLP技术,突出了它们的方法、优势和局限性。
- 我们提出了NLP技术在改进调试流程方面的有效性和效率分析,揭示了它们在现实软件开发场景中的实际影响。
- 我们确定了将NLP技术集成到调试工作流程中的潜在挑战,并得出7个关键发现,基于这些发现提供未来方向以推动该领域的发展。

本文其余部分组织如下。第2节提供调试的背景和相关工作。第3节概述了我们SLR的研究方法。第4–7节展示了研究问题的发现。第8节讨论了研究发现和未来研究方向,第9节讨论有效性威胁,最后,第10节总结综述。

**章节摘要**

**相关工作与背景**

本节总结了关于调试各个方面的现有文献综述,如表1所示。随后,我们描述现有NLP技术的详细信息,因为我们的SLR旨在关注用于多种调试活动的NLP技术。此外,由于bug报告被视为调试的主要来源,我们简要概述了bug报告。

**研究方法**

我们通过遵循Kitchenham[57]概述的指南来进行此SLR。作为循证软件工程的关键方法,SLR提供了一种有效的方法来表示特定研究领域内的现有文献。在本研究中,我们遵循Kitchenham等人[57]提出的软件工程系统文献综述指南,重点关注NLP技术在解决各种调试相关活动中的应用。每个研究问题的细节如下:

**RQ1:使用NLP在调试文献中解决的研究问题**

本节展示RQ1的发现,重点关注调试文献中使用NLP技术解决的研究问题。研究问题被分为调试过程的三个关键方面——Bug复现、Bug定位、Bug报告分析;这些是在我们的数据提取阶段揭示的。所审查论文的映射如表8、表9、表9、表10所示,分别代表bug复现、定位和bug报告分析。

**RQ2:用于调试的NLP技术**

本节展示RQ2的发现,重点关注用于调试的NLP技术和工具。NLP技术被用于各种调试相关任务,包括bug报告分析、复现和定位[157]。这些技术对于预处理bug报告中的文本数据、通过词嵌入等方法生成特征向量以及创建模型来执行特定调试任务至关重要。研究人员可以评估这些技术的适用性和有效性。

**RQ3:用于调试的NLP技术的效率和有效性**

本节报告RQ3的发现。已采用多种性能度量指标来评估用于调试的NLP技术的效率和有效性。最常用性能指标及其对应值如表11、表12、表13的第三列所示,分别代表bug复现、bug定位和bug报告分析。本节详细讨论了模型的性能。

**RQ4:使用NLP进行软件调试的研究空白和持续挑战**

基于NLP的软件调试在完全自动化所有三个类别的调试过程方面面临多项挑战。每项研究的局限性在表8、表9、表9、表10的第3列中概述,分别对应bug复现、bug定位和bug报告分析。在以下小节中,我们详细讨论了这些挑战或局限性以及潜在的解决方案。

**讨论与未来方向**

我们的研究旨在识别使用NLP技术解决各种调试任务的近期趋势和挑战。为实现这一目标,我们分析了87篇论文,涵盖三个类别,检查每项研究的研究重点、所用技术、性能和遇到的挑战。我们的分析,详见第4–7节,揭示了bug报告已成为调试任务的重要资源。由于bug报告以自然语言撰写,NLP技术提供了一种有力的手段来……

**有效性威胁**

根据先前的工作[57],应评估以下类型的有效性。

**结论**

软件调试是软件维护中至关重要但往往劳动密集的方面。自动化调试过程对于克服当前挑战、简化维护工作流程和减轻开发人员负担至关重要。鉴于bug报告是调试中的关键组成部分,且通常以自然语言撰写,NLP技术为自动化提供了有前景的途径。为提供关于将NLP应用于软件调试的最新趋势和挑战的全面视图……

**CRediT作者贡献声明**

Lutfun Nahar Lota:撰写——审稿与编辑,撰写——初稿,可视化,验证,调查,正式分析,数据整理,概念化。

Tarannum Shaila Zaman:撰写——审稿与编辑,可视化,验证,监督,项目管理,方法学,调查,资金获取,正式分析,数据整理,概念化。

Mirza Mohammad Azwad:撰写——初稿,调查,数据整理。

Labiba Farah:撰写——初稿。

**利益冲突声明**

作者声明以下可能被视为潜在利益冲突的财务利益/个人关系:

Tarannum Shaila Zaman报告由国家科学基金会提供资金支持。如果有其他作者,他们声明没有已知的竞争性财务利益或个人关系可能影响本文报告的工作。

作者列表:Lutfun Nahar Lota | Tarannum Shaila Zaman | Mirza Mohammad Azwad | Labiba Farah | Abrar Chowdhury | Zaarin Anjum | Chadni Islam | Abu Raihan Mostofa Kamal
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号