LLM4SZZ:通过在大语言模型上进行基于上下文的评估来提升SZZ算法的性能
《Proceedings of the ACM on Software Engineering》:LLM4SZZ: Enhancing SZZ Algorithm with Context-Enhanced Assessment on Large Language Models
【字体:
大
中
小
】
时间:2025年11月07日
来源:Proceedings of the ACM on Software Engineering
编辑推荐:
SZZ算法作为缺陷定位的核心方法,其性能提升面临静态技术与启发式假设的局限。本文提出基于大语言模型(LLM)的LLM4SZZ框架,通过上下文增强识别和排名式识别双路径处理不同缺陷类型,在三个数据集上F1值提升6.9%-16.0%且召回率保持稳定,额外检测到7.4%-7.8%的漏检缺陷。
摘要
SZZ算法是识别导致错误的提交(bug-inducing commits)的主要技术,为许多软件工程研究(如错误预测和静态代码分析)奠定了基础,从而提高了软件质量并促进了更好的维护实践。自该算法问世以来,研究人员提出了许多改进其性能的变体。这些变体大多依赖于静态技术或启发式假设,因此实现起来较为容易,但性能提升通常有限。最近,一种基于深度学习的SZZ算法被引入以改进原始算法。然而,这种新算法需要复杂的预处理过程,并且仅适用于单一编程语言。此外,虽然它提高了精确度,但牺牲了召回率(即检测到错误的比例)。此外,大多数变体忽略了关键信息,如提交信息(commit messages)和补丁上下文(patch context),并且仅限于涉及删除代码行的错误修复提交。
大型语言模型(LLMs)的出现为解决这些问题提供了机会。在这项研究中,我们探讨了LLMs的优势和局限性,并提出了LLM4SZZ,该算法采用了两种方法(基于排序的识别和基于上下文的识别)来处理不同类型的错误修复提交。我们根据LLM理解错误的能力以及识别提交中是否存在错误的能力来选择相应的识别方法。基于上下文的识别为LLM提供了更多背景信息,使其能够在候选提交中找到导致错误的提交。在基于排序的识别方法中,我们要求LLM从错误修复提交中挑选出问题代码,并根据它们与问题根本原因的相关性进行排序。实验结果表明,LLM4SZZ在三个数据集上的表现均优于所有基线方法,F1分数提高了6.9%至16.0%,同时没有显著牺牲召回率。此外,LLM4SZZ能够识别出许多基线方法未能检测到的错误修复提交,分别占三个数据集中错误修复提交总数的7.8%、7.4%和2.5%。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号