We'll Fix It in Post: What Do Bug Fixes in Video Game Update Notes Tell Us?
持续存在于视频游戏发布中的bug可能会对开发人员和用户产生负面影响,但游戏开发中测试的特定方面可能会导致难以有效地捕捉这些遗漏的bug。开发人员将更新应用于游戏以修复遗漏的bug已经成为一种常见的做法。这些更新通常伴随着描述更新中包含的游戏更改的注释。但是,即使在更新尝试修复它们之后,一些错误也会重新出现。在本文中,我们开发了一个分类的游戏中的错误类型,是基于以前的工作。我们检查了Steam平台上30款热门游戏的723个更新中的12,122个错误修复。我们标记这些更新中包含的错误修复,以确定这些不同错误类型的频率,错误类型在多次更新中重复出现的频率,以及哪些错误类型被视为更严重。此外,我们还调查了游戏开发人员对不同类型bug的体验,以及他们在游戏开发中与bug外观最密切相关的方面。我们发现信息错误在更新中出现的频率最高,而崩溃错误出现的频率最高,并且通常被视为比其他错误类型更严重。最后,我们发现,在测试,代码质量和错误复制的挑战有一个密切的关联与错误的持久性。这些发现应该帮助开发人员确定游戏开发的哪些方面可以从更多的关注中受益,以防止错误。研究人员可以使用我们的结果来设计工具和方法,以更好地识别和解决某些错误类型。
2021-03-06 cs.SE
Developers' Perception: Fixed Bugs Often Overlooked as Quality Contributions
本研究通过调查102名程序员,发现仅三分之一认为修复缺陷数量体现质量,揭示程序员常忽视缺陷报告的价值,强调测试与缺陷报告对软件质量的重要性。
2024-03-16 cs.SE
Katana: Dual Slicing-Based Context for Learning Bug Fixes
上下文信息在软件开发人员理解和修复错误时起着至关重要的作用。因此,基于深度学习的程序修复技术利用上下文进行错误修复。然而,现有的技术以任意的方式处理上下文,通过在封闭文件、类或方法内提取与错误语句非常接近的代码,而不进行任何分析以找到与错误的实际关系。为了减少噪音,它们对用作上下文的令牌数量使用预定义的最大限制。我们提出了一个程序切片为基础的方法,而不是任意包括作为上下文的代码,我们分析的语句有一个控制或数据依赖的错误语句。我们提出了一个新的概念,称为双切片,它利用的上下文中的错误和固定版本的代码来捕获相关的修复成分。我们提出了我们的技术和工具,称为武士刀,第一个应用基于切片的上下文程序修复任务。结果表明,Katana有效地保留了足够的信息,供模型选择上下文信息,同时降低噪声。我们比较了最近四个国家的最先进的上下文感知程序修复技术。我们的研究结果表明,Katana修复的错误是现有技术的1.5到3.7倍。
2022-12-05 cs.SE
An Empirical Study on Learning Bug-Fixing Patches in the Wild via Neural Machine Translation
代码库中有数百万个修复了许多bug的开源项目。可以利用软件开发历史的这种扩散来学习如何修复常见的编程错误。为了探索这种潜力,我们进行了一项实证研究,以评估使用神经机器翻译技术学习错误修复补丁的可行性。首先,我们从GitHub上托管的项目的更改历史中挖掘数百万个错误修复,以提取此类错误修复的有意义的示例。接着,我们抽象出错误代码和相应的固定代码,并使用它们来训练一个编码器-解码器模型,该模型能够将错误代码翻译成其固定版本。在我们的实证调查中,我们发现这样的模型能够在野外修复数千种独特的错误方法。总的来说,这个模型能够在9-50%的情况下预测开发人员生成的固定补丁,这取决于我们允许它生成的候选补丁的数量。此外,该模型能够模拟各种不同的抽象树操作,并在一瞬间生成候选补丁。
2019-05-21 cs.SE
DeepRelease: Language-agnostic Release Notes Generation from Pull Requests of Open-source Software
发布说明是开源软件的一个基本软件工件,它记录了有关更改的关键信息,例如新功能和错误修复。在发行说明的帮助下,开发人员和用户可以在不浏览源代码的情况下对最新版本有一个大致的了解。然而,对于开发人员来说,制作发行说明是一项艰巨而耗时的工作。虽然以前的研究提供了一些自动的方法,他们主要通过提取信息的代码更改生成发行说明。这将导致语言特定的,而不是通用的,足以适用。因此,帮助开发人员有效地制作发行说明仍然是一个未解决的挑战。为了解决这个问题,我们首先对900个GitHub项目的发布说明进行了手动研究,结果显示超过54%的项目通过pull request生成发布说明。在此基础上,我们提出了一种基于深度学习的方法DeepRelease(基于深度学习的发布说明生成器),用于根据拉取请求生成发布说明。DeepRelease中发布说明的生成过程包括变更条目的生成和变更类别(即,新功能或错误修复)生成,其分别被公式化为文本摘要任务和多类分类问题。由于DeepRelease完全使用来自拉取请求的文本信息来总结更改并识别更改类别,因此它与语言无关,可用于任何语言的项目。我们构建了一个包含超过46K发行说明的数据集,并在数据集上评估DeepRelease。实验结果表明,DeepRelease的性能优于四个基线,并且可以在一小部分时间内生成类似于手动编写的发布说明。
2022-01-18 cs.SE
A Quantitative Study of Security Bug Fixes of GitHub Repositories
软件容易出现错误和故障。安全漏洞是那些违反软件要求而暴露或共享特权信息和访问的漏洞。考虑到安全漏洞的严重性,存在用于跨多个产品支持和跟踪这些漏洞的集中机制,其中一种机制是通用漏洞和暴露(CVE)ID描述。当一个bug获得一个CVE时,它是通过它的CVE ID引用的。因此,我们在Github上探索了数千个自由/自由开源软件(FLOSS)项目,以确定开发人员是否在他们的代码,提交和问题中引用或讨论CVE。CVE通常会引用项目的第三方软件依赖项,因此错误不会出现在实际产品本身中。我们研究这些引用中有多少是故意的CVE引用,以及有多少是项目本身的相关错误。我们研究如何修复引用CVE的错误以及修复这些错误需要多长时间。我们对250个错误报告进行手动分类的结果显示,88个(35%)、32个(13%)和130个(52%)被分类为“版本更新”、“修复代码”和“讨论”。为了了解修复这些错误需要多长时间,我们比较了两个时间段,报告期,CVE存储库中漏洞信息的披露日期和项目中错误报告的创建日期之间的时间段,以及修复期,错误报告的创建日期和错误报告的修复日期之间的时间段。我们发现,44%的bug报告被归类为“版本更新”或“修复代码”,报告期比修复期长。这表明,那些提交CVE的人应该更直接地通知受影响的项目。
2020-12-15 cs.SE
Understanding the Role of External Pull Requests in the NPM Ecosystem
在软件应用程序中使用第三方库的风险在于,非常需要的维护工作仅由库维护人员执行。这些库可能依赖于一个核心的维护团队(他们可能是一个没有报酬和过度工作的维护者)来服务于庞大的客户端用户群。另一方面,开源的好处是接收贡献(以外部PR的形式),以帮助修复bug和添加新功能。在本文中,我们调查的作用,外部PR(贡献的核心团队以外的维护者)有助于一个库。通过初步分析,我们发现外部PR是普遍存在的,并且与维护者PR一样可能被接受。我们发现,提交的外部PR中有26.75%解决了现有问题。此外,修复也属于诸如破坏性更改、紧急和等待等标签。与内部PR不同,外部PR涵盖文档变更(384个PR中的44个),而没有那么多的重构(384个PR中的34个)。另一方面,外部PR还涵盖了新功能(384个PR中的380个)和错误(384个PR中的120个)。我们的研究结果为理解维护人员如何决定他们选择哪些外部贡献来发展他们的库以及他们在减少工作量方面扮演什么角色奠定了基础。
2022-07-08 cs.SE
Fast Fixes and Faulty Drivers: An Empirical Analysis of Regression Bug Fixing Times in the Linux Kernel
本文实证分析Linux内核回归缺陷修复时间,发现修复速度快于以往报告,设备驱动为最易受影响子系统,且代码审查与测试不能解释修复时间差异。
2024-11-04 cs.SE
Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixes
University of Oldenburg(奥尔登堡大学)
在开源仓库中找到的真正的bug修复似乎是学习本地化和修复真正bug的完美来源。然而,由于缺乏大规模的bug修复集合,过去很难在训练较大的神经模型时有效地利用真正的bug修复。相比之下,人工bug--通过改变现有源代码产生--可以很容易地以足够的规模获得,因此在现有方法的训练中通常是首选的。尽管如此,在人工错误上训练的本地化和修复模型在面对真正的错误时通常表现不佳。这就提出了一个问题,即在真实的bug修复上训练的bug定位和修复模型在定位和修复真实的bug方面是否更有效。我们通过引入RealIT来解决这个问题,这是一种预训练和微调方法,可以有效地学习从真正的错误修复中定位和修复真正的错误。RealiT首先在传统变异算子产生的大量人工bug上进行预训练,然后在较小的一组真实bug修复上进行微调。微调不需要任何修改的学习算法,因此可以很容易地采用在各种训练场景的缺陷定位或修复(即使当真正的训练数据是稀缺的)。此外,我们发现,使用Realit对真实错误修复进行训练的经验非常强大,可以将现有模型对真实错误的本地化性能提高近一倍,同时保持甚至提高修复性能。
2022-07-01 cs.LG cs.SE
Learning How to Mutate Source Code from Bug-Fixes
变异测试作为一种指导测试用例生成或评估测试集有效性的方法已被广泛接受。实证研究表明,突变体是真正的故障的代表,但他们也表明了一个明确的需要更好的,可能定制的,突变算子和策略。虽然存在从实际错误中设计特定于域或通用的变异操作符的方法,但它们容易出错,并且不能帮助测试人员决定是否以及如何变异给定的源代码元素。我们提出了一种新的方法来自动学习突变体的故障在真正的程序。首先,我们的方法使用细粒度的差异,代码抽象和变更聚类来处理错误修复变更。然后,它使用深度学习策略学习突变模型。我们已经在一组从GitHub挖掘的~ 787 k错误修复上训练和评估了我们的技术。我们的经验评估表明,我们的模型能够预测在9%到45%的情况下类似于实际修复错误的突变体,并且超过98%的自动生成的突变体在词汇和语法上是正确的。
2019-07-29 cs.SE
SWE-at-Scale: Scalable Issue Synthesis from Historical Bug Fixes
Shanghai Jiao Tong University(上海交通大学);North China Electric Power University(华北电力大学);Tsinghua University(清华大学);East China Normal University(华东师范大学);Shanghai Innovation Institute(上海创新研究所);Singapore Management University(新加坡管理大学)
研究针对现有SWE任务合成方法的不足,提出SWE-at-Scale框架,通过逆向工程历史Bug修复自动生成多样真实的SWE任务,实验显示其生成的任务更具挑战性且多样性可稳健扩展。
2026-10-16 cs.SE
Initial and Eventual Software Quality Relating to Continuous Integration in GitHub
对新功能和错误修复的持续需求迫使软件项目缩短周期并更快地交付更新,同时保持软件质量。廉价的虚拟化云计算的可用性通过支持按需持续集成(CI)帮助缩短了时间表。像GitHub这样的平台支持云中的CI。在使用CI的项目中,用户提交拉取请求会触发CI步骤。除了加速构建和测试之外,这还意外地创建了大量构建和测试成功和失败的档案。CI是一个相对较新的现象,这些档案允许对CI进行详细的研究。暴露出多少问题?它们发生在哪里?哪些因素会影响CI失败?CI确定的“初始质量”是否能预测代码中以后会出现多少bug(“最终质量”)?在本文中,我们对这些记录进行了大规模的精细分辨率研究,以更好地了解CI过程,CI失败的性质和预测因素,以及CI失败与代码最终质量的关系。我们发现:a)CI失败似乎集中在几个文件中,就像正常的bug一样; b)CI失败与最终失败的相关性不是很高; c)在pull请求中使用CI并不一定意味着该请求中的代码质量良好。
2016-06-02 cs.SE
HotBugs.jar: A Benchmark of Hot Fixes for Time-Critical Bugs
针对现有基准缺乏热修复数据的问题,提出首个真实热修复数据集HotBugs.jar,含679个验证热修复及110个可复现案例,已用作SBSE会议挑战数据集,支持快速调试与自动修复研究。
2025-10-08 cs.SE
GitBug-Java: A Reproducible Benchmark of Recent Java Bugs
针对现有漏洞修复基准数据集缺乏近期案例与可复现性的问题,研究提出包含199个2023年Java漏洞的可复现基准GitBug-Java,为APR与FL研究提供更贴合当前实践的评估基础。
2024-02-06 cs.SE
Explainable Software Bot Contributions: Case Study of Automated Bug Fixes
在软件项目中,特别是在开源项目中,贡献是对项目所做的有价值的工作:编写代码,报告错误,翻译,改进文档,创建图形等。我们现在正处于一个激动人心的时代的开始,软件机器人将做出与人类相似的贡献。没有解释的枯燥贡献经常被忽视或拒绝,因为贡献本身是不可理解的,因为它们没有放在更大的背景中,因为它们不是基于核心开发人员社区共享的习惯用法。我们已经运行了一个名为Repairnator的程序修复机器人2年,并注意到“干补丁”的问题:一个补丁没有说它修复了哪个bug,或者没有解释补丁对系统的影响。我们设想程序修复系统,产生一个“可解释的错误修复”:一个集成的包,至少1)补丁,2)它的解释在自然或控制的语言,和3)突出的行为差异与例子。在本文中,我们概括并建议软件机器人的贡献必须是可解释的,必须将它们置于全球软件开发对话的背景下。
2019-05-07 cs.SE
Adversarial Patch Generation for Automated Program Repair
提出基于GAN的NEVERMORE模型,利用历史缺陷修复数据生成类人修复方案,在500个真实缺陷上21.2%匹配人类修复,并解决多个基线未修复的缺陷。
2023-09-03 cs.SE
On the "Naturalness" of Buggy Code
真正的软件,即由kingdom开发的程序员解决现实世界问题的软件,往往是“自然的”,就像语音或自然语言一样;它往往是高度重复和可预测的。研究人员已经通过统计模型捕捉到了软件的这种自然性,并将其用于建议引擎、移植工具、编码标准检查器和习惯用法挖掘器中。这表明,对于一个好的统计语言模型来说,看起来不太可能或令人惊讶的代码在某种意义上是“不自然的”,因此可能是可疑的。在本文中,我们调查这一假设。我们考虑了一个大型的bug修复提交语料库(约。8,296),来自10个不同的Java项目,我们专注于它的语言统计,评估错误代码的自然性和相应的修复。我们发现,有bug的代码往往更具熵(即,不自然的),随着bug的修复而变得不那么自然。专注于高熵行在成本效益方面与一些众所周知的静态错误发现器(PMD,FindBugs)相似,并且使用熵度量对这些错误发现器的警告进行排序可以提高检查警告中涉及的代码的成本效益。这表明熵可能是一种有效的独立于语言的简单方法,可以补充PMD或FindBugs的有效性,并且基于搜索的错误修复方法可以从使用熵进行错误定位和搜索修复中受益。
2015-09-10 cs.SE
An Exploratory Study on Regression Vulnerabilities
背景:安全回归是在以前未受影响的软件系统中引入的漏洞。它们通常是由于源代码更改而发生的(例如,bug修复)并且可能具有严重的影响。目的:增加对安全回归的理解。这是发展安全软件工程的重要一步。方法:我们对Mozilla进行了探索性的混合方法案例研究。首先,我们分析了78个回归漏洞和72个bug报告,其中一个bug修复在Mozilla中引入了回归漏洞。我们调查了开发人员如何在这些错误报告中进行交互,他们如何执行更改,以及在什么条件下他们引入回归漏洞。其次,我们对参与可扩展性诱导bug修复的尽可能多的Mozilla开发人员进行了五次半结构化访谈。结果:漏洞修复期间未讨论软件安全性。开发人员主要关心的是当前bug的复杂性和社区修复它的压力。此外,开发人员不必担心回归漏洞,并假设工具会检测到它们。事实上,动态分析工具帮助发现了Mozilla大约30%的回归漏洞。结论:这些结果提供的证据表明,虽然工具支持有助于识别回归漏洞,但它可能不足以确保漏洞修复期间的安全性。此外,我们的研究结果需要进一步研究安全工具支持以及如何在错误修复期间集成它们。数据和材料:https://doi.org/10.5281/zenodo.6792317
2022-07-05 cs.SE
GitBug-Actions: Building Reproducible Bug-Fix Benchmarks with GitHub Actions
GitBug-Actions 利用 GitHub Actions 构建现代且完全可复现的缺陷修复基准,解决了现有基准更新滞后和可复现性不足的问题。
2024-01-21 cs.SE
MultiFixer: A Coordinator-Proposer Based Multi-Agent Framework For Fixing Multi-Hunk Bugs
Nanjing University of Science and Technology(南京理工大学);Nanjing University(南京大学);Singapore Management University(新加坡管理大学)
该研究针对现有LLM-based APR方法难以修复多块漏洞的问题,提出MultiFixer多智能体框架,经多基准测试,其在Defects4J等数据集上达到最优修复效果,能有效修复多块漏洞。
2026-07-30 cs.SE
A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair
最近,在源代码上训练深度学习模型获得了巨大的吸引力。由于这种模型是关于数字向量的推理,因此在向量化之前,需要将源代码转换为代码表示。已经提出了许多方法来表示源代码,从令牌序列到抽象语法树。然而,目前还没有系统的研究来了解代码表征对学习成绩的影响。通过一个对照实验,我们研究了在基于深度学习的程序修复中,各种代码表示对模型准确性和有用性的影响。我们训练了21种不同的生成模型,这些模型建议修复基于名称的错误,包括14种不同的同构代码表示,4种用于错误和修复代码的混合表示,以及3种不同的嵌入。我们评估模型在各种代码表示中产生的修复建议是否可自动修补,这意味着它们可以转换为有效的代码,可以应用于错误代码以修复它。我们还进行了开发人员研究,以定性评估不同代码表示中推断修复的有用性。我们的研究结果突出了代码表示的重要性及其对学习和有用性的影响。我们的发现表明:(1)虽然代码抽象有助于学习过程,但从开发人员的角度来看,它们可能会对推断修复的有用性产生不利影响;这强调了需要从从业者的角度来看待生成的补丁,这在文献中经常被忽视,(2)混合表示可以优于同构代码表示,(3)错误类型可以影响不同代码表示的有效性;尽管当前技术针对所有错误类型使用单个代码表示,但是不存在适用于所有错误类型的单个最佳代码表示。
2022-07-15 cs.SE
Learning to Generate Corrective Patches using Neural Machine Translation
Bug修复通常是一项手工密集型任务。然而,最近的工作提出了自动程序修复的想法,其目的是修复(至少是一个子集)的错误,以不同的方式,如代码突变等以下在同一行的工作自动修复错误,在本文中,我们的目标是利用过去的修复,提出修复当前/未来的错误。具体来说,我们提出了棘轮,一个纠正补丁生成系统,使用神经机器翻译。通过使用神经序列到序列模型学习过去修复中相应的预校正和后校正代码,Ratchet能够为给定的容易出错的代码查询生成修复代码。我们进行了实证研究与五个开源项目,即Ambari,骆驼,Hadoop,Jetty和Wicket,评估棘轮的有效性。我们的研究结果表明,棘轮可以生成语法有效的语句98.7%的时间,并实现F1的措施之间的0.29 - 0.83的实际修复采用的代码库。此外,我们使用20名参与者进行定性验证,看看生成的语句是否有助于纠正错误。我们的调查显示,Ratchet的输出被认为在许多情况下有助于修复错误,即使修复不是100%正确。
2019-07-04 cs.SE
BugSwarm: Mining and Continuously Growing a Dataset of Reproducible Failures and Fixes
故障检测、定位和修复方法对软件质量至关重要,但很难评估它们的通用性、适用性和当前有效性。大型,多样化,现实的数据集的持久可重现的故障和修复是至关重要的,良好的实验评估的方法,以软件质量,但他们是困难和昂贵的组装和保持最新。现代的持续集成(CI)方法,如Travis-CI,被广泛使用,完全可配置,并在定制的容器中执行,有望实现更大的缺陷数据集。如果我们能够识别并存档失败和随后通过的运行,容器将为构建和测试的持久未来可重复性提供实质性保证。然而,要使这成为现实,必须克服若干障碍。我们描述了BugSwarm,一个工具集,导航这些障碍,使创建一个可扩展的,多样化的,现实的,不断增长的一组持久可复制的失败和通过版本的真实世界,开源系统。BugSwarm工具包已经收集了3,091个失败传递对,用Java和Python编写,所有这些都打包在完全可复制的容器中。此外,该工具包可以定期运行,以检测失败-通过活动,从而不断增长的数据集。
2019-07-22 cs.SE
SelfHeal: Empirical Fix Pattern Analysis and Bug Repair in LLM Agents
Oakland University(奥克兰大学)
本文研究LLM代理中的故障修复模式,提出首个基准数据集AgentDefect,并设计SelfHeal多智能体系统,利用ReAct代理结合内部和外部知识实现高效故障修复。
2026-04-20 cs.SE
On the Use of Agentic Coding: An Empirical Study of Pull Requests on GitHub
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Queen’s University(女王大学)
本文研究了GitHub上代理编码生成的拉取请求的接受情况,发现83.8%的PR被合并,其中54.9%无需修改,剩余需人类修订。
2026-02-09 cs.SE
An Empirical Study on Real Bug Fixes from Solidity Smart Contract Projects
本文针对现有研究对Solidity智能合约真实漏洞修复情况了解不足的问题,对46个真实项目的历史修复案例开展实证研究,探究四类核心问题并提炼发现,从三方面提出改进智能合约漏洞修复方法的可行建议。
2023-06-12 cs.CR cs.SE
HaPy-Bug -- Human Annotated Python Bug Resolution Dataset
本文提出了 HaPy-Bug 数据集,包含 793 个 Python 缺陷修复提交,每行代码由三位专家标注,涵盖文件目的、行级更改和置信水平,并分析了其分布及在缺陷跟踪等领域的应用潜力。
2025-04-07 cs.SE
InferFix: End-to-End Program Repair with LLMs
软件开发的生存周期深受bug的影响:它们的引入、识别和最终的解决方案占软件成本的很大一部分。这促使软件工程研究人员和从业人员提出不同的方法来自动识别和修复软件缺陷。通过Few-Shot演示学习和指令提示,大语言模型已经适应了程序修复任务,将其视为填充任务。然而,这些模型只专注于学习从公共存储库中挖掘的未分类错误的一般错误修复模式。在本文中,我们提出了InferFix:一个基于transformer的程序修复框架与最先进的静态分析器配对,以修复关键的安全和性能错误。InferFix结合了检索器-通过对比学习目标预训练的Transformer编码器模型,其目的是搜索语义等效的错误和相应的修复;和生成器-一个大语言模型(Codex Cushman)对监督错误修复数据进行微调,并通过错误类型注释和从外部非参数存储器检索的语义相似的修复来增强提示。为了训练和评估我们的方法,我们策划了InferredBugs,这是一个新颖的、元数据丰富的bug数据集,通过对数千个Java和C#存储库的更改历史执行Infer静态分析器来提取。我们的评估表明,InferFix优于强大的LLM基线,在C#中生成修复的前1准确率为65.6%,在Java中为76.8%。我们将讨论InferFix与Infer在微软的部署,Infer提供了一个端到端的解决方案,用于检测,分类和定位错误,以及修复和验证候选补丁,集成在持续集…
2023-03-13 cs.SE
Understanding Bugs in Multi-Language Deep Learning Frameworks
Central China Normal University(华中师范大学);Wuhan University(武汉大学)
深度学习框架(DLF)在这个智能时代扮演着越来越重要的角色,因为它们是越来越广泛的基于AI的应用程序的基础设施。同时,作为多编程语言(MPL)软件系统,DLF不可避免地遭受由使用多个程序设计语言(PL)引起的错误。因此,了解错误(特别是涉及多个PL的错误,即,MPL缺陷),为DLF开发过程中缺陷的预防、检测和解决提供了依据。为此,我们手动分析了三个MPL DLF(即MXNet、PyTorch和TensorFlow)中的1497个bug。首先,我们将这些DLF中的错误分为12种类型(例如,算法设计错误和存储器错误)。其次,我们进一步探讨了不同类型的错误对DLF开发的影响,发现部署错误和内存错误在不同方面对DLF的开发产生了最大的负面影响。第三,我们发现MXNet、PyTorch和TensorFlow中分别有28.6%、31.4%和16.0%的bug是MPL bug; Python和C/C++的PL组合在修复所有DLF中超过92%的MPL bug时使用最多。最后,在所有三个DLF中,MPL错误修复的代码更改复杂性明显大于单一编程语言(SPL)错误修复,而在PyTorch中,MPL错误修复的开放时间更长,通信复杂性也比SPL错误修复更高。这些结果为DLF中的错误管理提供了见解。
2023-03-05 cs.LG cs.SE
A Comprehensive Study of Bug Fixes in Quantum Programs
随着量子编程的发展,越来越多的量子编程语言正在开发中。因此,调试和测试量子程序变得越来越重要。虽然经典程序中的错误修复已经走过了很长的路,但在量子程序中缺乏研究。为此,本文提出了一个全面的研究量子程序中的错误修复。我们收集和调查了来自四种流行的量子编程语言Qiskit,Cirq,Q#和ProjectQ的96个真实世界的错误及其修复。我们的研究表明,量子程序中的错误有很大比例是量子特定的错误(超过80%),这需要在错误修复领域进行进一步的研究。我们还总结和扩展了量子程序中的错误模式,并对最关键的部分--数学相关错误进行了细分,使其更适用于量子程序的研究。我们的研究结果总结了量子程序中缺陷的特征,为研究量子程序的测试和调试提供了基础。
2022-01-21 cs.PL cs.SE quant-ph
An Automatically Created Novel Bug Dataset and its Validation in Bug Prediction
在软件开发过程中,由于频繁的代码更改,紧迫的期限等,错误是不可避免的;因此,重要的是要有工具来发现这些错误。执行错误识别的一种方式是分析来自过去的有错误的源代码元素的特性,并且使用例如机器学习模型基于相同的特性来预测当前的源代码元素。为了支持模型构建任务,代码元素及其特征被收集在所谓的错误数据集中,作为学习的输入。我们介绍\emph{BugHunter Dataset}:一种新型的自动构建和免费可用的bug数据集,包含具有广泛代码度量和bug信息的代码元素(文件,类,方法)。其他可用的bug数据集遵循传统的方法,即仅在代码的一个或多个预先选择的发布版本中收集所有源代码元素(有bug和无bug)的特征。我们的方法,另一方面,捕获的错误和固定状态的相同的源代码元素从最短的时间内,我们可以确定一个错误的存在,无论发布版本。为了展示新数据集的有用性,我们构建并评估了错误预测模型,并实现了超过0.74的F-测量值。
2020-06-17 cs.SE
Localization of real world regression Bugs using single execution
当以前按预期工作的软件功能停止工作或不再按预期工作时,就会出现回归错误。代码更改,例如bug修复或新功能工作,可能会导致回归bug。回归bug是软件开发过程中令人烦恼和痛苦的现象,需要大量的努力来本地化,有效地阻碍了团队的进步。在本文中,我们提出了回归检测,一种方法,它有助于开发人员定位源代码段,导致给定的回归错误。与现有的一些工具不同,我们的方法不需要自动化测试套件或执行系统的过去版本。它是高度可扩展到数百万的锁定系统。开发人员对代码或bug没有先验知识,根据bug数据库中描述的步骤重现bug。我们用来自领先的开源项目(Eclipse、Tomcat、Ant)的bug评估了我们的方法。在超过90%的情况下,开发人员只需要检查10 - 20行代码就可以找到bug,而不管代码库的大小。
2015-05-06 cs.SE
Change And Cover: Last-Mile, Pull Request-Based Regression Test Augmentation
UCLA(加州大学洛杉矶分校);University of Stuttgart(斯图加特大学);CISPA Helmholtz Center for Information Security(CISPA赫尔霍兹信息安全中心)
ChaCo通过LLM生成针对PR修改的测试,提高补丁覆盖率,有效发现并修复错误。
2026-01-16 cs.SE
CrossFix: Collaborative bug fixing by recommending similar bugs
已经提出了许多自动程序修复技术来修复错误。这些技术中的一些使用了给定的错误程序和测试套件之外的信息来提高生成的补丁的质量。然而,存在阻碍这些技术的广泛采用的几个限制,包括(1)它们依赖于用于补丁生成或参考实现的固定的修复模板集合,(2)搜索合适的参考实现是具有挑战性的,(3)生成的补丁是不可解释的。与此同时,最近的一种方法表明,不同的项目中存在类似的bug,人们可以使用不同项目的GitHub问题来查找相关项目的新bug。我们提出了合作修复错误,一个novelapproach,建议错误报告,描述了一个类似的错误。我们的研究重新定义了类似的错误,这些错误共享(1)相同的库,(2)相同的功能,(3)相同的复制步骤,(4)相同的配置,(5)相同的结果,或(6)相同的错误。此外,我们的研究揭示了类似错误在帮助开发人员找到更多关于错误和修复的上下文方面的有用性。基于我们的研究,我们设计了CrossFix,这是一个基于开放的GitHub问题自动建议相关GitHub问题的工具。我们对来自Java和Android项目的249个开放问题的评估表明,CrossFix可以建议类似的错误,以帮助开发人员调试和修复。
2021-03-24 cs.SE
Writing Bug Reports for Software Repair Agents: What Information Matters Most?
USI Università della Svizzera italiana(瑞士意大利语大学);University of Sannio(萨尼奥大学)
研究软件开发中为软件修复代理编写错误报告的问题,通过对错误报告分类标注,用三个LLM主干运行mini-swe-agent,拟合回归模型,发现定位线索和建议修复等信息对代理成功更重要,传统对人类有用的信息作用较小。
2026-11-11 cs.SE
Recommending Bug-fixing Comments from Issue Tracking Discussions in Support of Bug Repair
在实践中,开发人员在面对新的bug时会搜索相关的早期bug及其相关的讨论线程。通常情况下,这些讨论线程由注释甚至bug修复注释组成,这些注释旨在捕获线索,以促进新bug报告的调查和根本原因。随着时间的推移,这些讨论可能会变得非常冗长和难以理解。不可避免的是,这些讨论线程会导致错误修复评论与不相关的评论混合在一起的情况。然而,在处理大量的错误报告时,这项任务带来了进一步的挑战。大型软件系统每天都受到数千个错误报告的困扰。因此,有效地调查这些错误报告变得非常耗时。为了解决这一差距,本文建立了一个基于排名的自动化工具,我们称之为RETRORANK。具体来说,RETRORANK建议在用户查询相关性、积极语言的使用和评论之间的语义相关性的上下文中,从问题跟踪讨论线程中修复错误的评论。通过使用向量空间模型(VSM),情感分析(SA)和TextRank模型(TR)的组合,我们展示了如何过去的固定错误和他们的相关错误修复评论相对积极的情绪可以语义连接,以调查一个新的错误的根本原因。我们通过综合研究和用户研究评估了我们的方法。结果表明,与基线VSM相比,RETRORANK显著提高了性能。
2021-05-24 cs.SE
Model See, Model Do? Exposure-Aware Evaluation of Bug-vs-Fix Preference in Code LLMs
Delft University of Technology(代尔夫特理工大学);University of California at Davis(加州大学戴维斯分校)
研究发现LLM在生成代码时更倾向于重复bug而非修复,暴露于bug的示例加剧了这一倾向,而修复暴露则仅有微小改进,揭示了LLM可能传播记忆错误的风险。
2026-01-15 cs.AI cs.SE
Understanding Agent-Reactive Bugs at the Model-Harness Boundary: An Empirical Study of LLM Agent Issue Reports
The Hong Kong University of Science and Technology(香港科技大学);Guangzhou HKUST Fok Ying Tung Research Institute(广州HKUST福氏研究院)
研究聚焦大型语言模型代理在模型-框架边界处的反应性错误,通过分析255份错误报告构建分类法,发现此类错误多为无明确测试预言的静默错误,检测和重现困难,还揭示了用户与开发者对错误归因及修复的不匹配,推动相关技术设计。
2026-07-20 cs.SE
Understanding Bug-Reproducing Tests: A First Empirical Study
UFMG(米纳斯吉拉斯联邦大学);University of Passau(帕绍大学)
本文通过分析642个真实世界Python系统中的bug重现测试,发现其在代码量、断言数量和复杂度上与常规测试无显著差异,但包含更多try/except块和弱断言,并发现95%的测试仅重现单个bug。
2026-02-03 cs.SE
Too Few Bug Reports? Exploring Data Augmentation for Improved Changeset-based Bug Localization
本文针对缺陷定位任务中训练数据不足的问题,提出作用于缺陷报告不同组成部分的数据增强算子及数据平衡策略,以生成高质量合成训练数据,从而改进基于变换器的变更集缺陷定位模型性能。
2023-06-01 cs.SE
What Happens When We Fuzz? Investigating OSS-Fuzz Bug History
本研究通过分析 OSS-Fuzz 的 44,102 个历史缺陷,发现模糊测试能将缺陷中位未解决时间缩短至 2 天,有效帮助项目在发布前快速修复问题。
2023-05-19 cs.SE
Can LLMs Fix It Without Code? Toward Automated Verification of No-Code Bug Fixes
Bilkent University(比尔肯特大学)
本研究提出基于执行的自动化流程,评估LLM在真实浏览器环境生成无代码修复的能力,发现其修复效果高度依赖执行器,多数修复需验证后交付用户。
2026-10-09 cs.AI cs.SE
Mut4All: Fuzzing Compilers via LLM-Synthesized Mutators Learned from Bug Reports
Beijing Jiaotong University(北京交通大学);Singapore Management University(新加坡管理大学);University of Alberta(阿尔伯塔大学);Tianjin University(天津大学)
Mut4All通过LLM合成变异器自动发现编译器错误,实现高效且跨语言的模糊测试
2026-10-06 cs.SE
Labelling Bug-Fixing Commits with Local Open-Weight Language Models
Faculty of Computer Science, University of Vienna(维也纳大学计算机学院);SBA Research gGmbH(SBA研究所);Christian Doppler Laboratory AsTra, University of Vienna(维也纳大学AsTra克里斯蒂安·多普勒实验室)
本文使用本地开放权重语言模型仅凭提交内容标注缺陷修复提交,在手动验证的多语言语料库上显著优于关键词基线,并发布标注流水线与银标准语料库。
2026-09-21 cs.SE
BugScope: Learn to Find Bugs Like Human
Purdue University(普渡大学);University of Southern California(南加州大学);Columbia University(哥伦比亚大学)
BugScope通过模仿人类审计员学习特定错误模式的方式,提出了一种基于三个步骤的代码审计框架,实现了87%的F1分数,优于现有工具。
2026-04-15 cs.SE
FixEval: Execution-based Evaluation of Program Fixes for Programming Problems
Virginia Tech(弗吉尼亚理工大学);University of California, Los Angeles(加利福尼亚大学洛杉矶分校)
现代软件的复杂性导致了与检测和纠正软件错误相关的时间和成本的急剧增加。作为回应,研究人员探索了各种方法来自动生成错误代码的修复程序。然而,由于任何给定错误的可能修复的组合空间很大,很少有工具和数据集可用于有效评估模型生成的修复。为了解决这个问题,我们引入了FixEval,这是一个基准测试,它包含针对竞争性编程问题提交的错误代码及其相应的修复。FixEval提供了一个广泛的单元测试集合,用于评估模型生成的程序修复的正确性,并评估有关时间、内存限制和基于判决的接受度的进一步信息。我们将两个在程序设计语言上预训练的Transformer语言模型作为我们的基线,并使用基于匹配和基于执行的评估指标对它们进行比较。我们的实验表明,基于匹配的指标不反映模型生成的程序修复准确。同时,基于执行的方法通过为该解决方案明确设计的所有案例和场景来评估程序。因此,我们相信FixEval提供了迈向真实世界的自动错误修复和模型生成的代码评估的一步。数据集和模型在https://github.com/mahimanzum/FixEval上开源。
2023-03-30 cs.LG cs.SE
An Empirical Study of Refactoring Engine Bugs
本文首次系统分析了Eclipse、IntelliJ IDEA和Netbeans三种重构引擎的缺陷,按类型、症状、原因和触发条件归纳出12项发现,并在最新版本中发现130个新缺陷,为缺陷检测与调试提供指导。
2024-09-22 cs.SE
A Comprehensive Empirical Study of Bugs in Open-Source Federated Learning Frameworks
ShanghaiTech University(上海科技大学);Institute of Software, Chinese Academy of Sciences(中国科学院软件研究所);University of Chinese Academy of Sciences(中国科学院大学);Tianjin University(天津大学);Nankai University(南开大学)
本研究针对开源联邦学习框架的bug问题,首次从17个主流框架的千余条相关议题与拉取请求中收集1119个bug,构建多维度分类体系并分析其功能分布与关联,得出9项核心发现,为优化FL框架和bug治理工具研发提供依据。
2023-10-06 cs.LG cs.SE
Bug Prediction Using Source Code Embedding Based on Doc2Vec
错误预测是一项需要大量资源的任务,很难使用静态源代码分析实现自动化。在计算机科学的许多领域,机器学习已经被证明在这样的任务中非常有用,然而,为了让它工作,我们需要一种使用源代码作为输入的方法。我们提出了一个简单的,但有意义的表示源代码的基础上,其抽象语法树和Doc 2 Vec嵌入算法。这种表示将源代码映射到一个固定长度的向量,该向量可用于各种上游任务-其中之一是错误预测。我们测量了这种方法本身的有效性,并将其有效性与仅基于代码度量的错误预测进行了比较。我们还试验了许多机器学习方法,以检查不同嵌入参数与不同机器学习模型之间的联系。我们的研究结果表明,这种表示提供了有意义的信息,因为它在大多数情况下提高了错误预测的准确性,并且总是至少与仅使用代码度量作为特征一样好。
2021-10-11 cs.SE
SZZ in the time of Pull Requests
在多提交开发模型中,程序员完成任务(例如,实现一个功能),将他们的工作组织成几个提交,并将它们打包成一个提交集。使用此模型分析来自开发人员的数据对于解决具有挑战性的开发人员需求非常有用,例如了解哪些功能引入了错误以及评估在发布中集成某些功能的风险。然而,要做到这一点,首先需要确定修复诱导提交集。对于这样的识别,SZZ算法是最自然的候选者,但其性能尚未在多提交上下文中进行评估。在这项研究中,我们进行了深入的调查的可靠性和性能的SZZ在多提交模型。为了获得可靠的基础事实,我们考虑一个已经存在的SZZ数据集,并将其适应多提交上下文。此外,我们还设计了第二个数据集,它更广泛,直接由Mozilla的开发人员和质量保证(QA)工程师创建。基于这些数据集,我们(1)在多提交模型的上下文中测试B-SZZ及其非语言特定的SZZ变体的性能,(2)调查其特定行为背后的原因,(3)分析提交集中不相关提交的影响,并在使用SZZ之前自动检测它们。
2022-09-07 cs.SE
Empirical Analysis of Pull Requests for Google Summer of Code
University of Cincinnati(辛辛那提大学)
本研究通过分析GSoC项目期间实习生提交的拉取请求,揭示了开源项目中代码与非代码任务的分布特征及评审反馈内容,为软件工程教育提供实证依据。
2025-01-14 cs.SE
Analyzing the Context of Bug-Fixing Changes in the OpenStack Cloud Computing Platform
软件工程中的许多研究领域,如突变测试、自动修复、故障定位和故障注入,都依赖于有关重复性错误修复代码更改的经验知识。这一领域以前的研究集中在由于错误修复而发生的变化,例如代码编辑操作。然而,这些研究没有考虑错误修复的变化是在哪里进行的(即,改变的上下文),但是知道上下文可能潜在地缩小许多软件工程技术的搜索空间(例如,通过仅将突变集中在软件的特定部分)。此外,大多数以前的bug修复工作都集中在C和Java项目上,但几乎没有关于Python软件的经验证据。因此,在本文中,我们对三个OpenStack项目中的错误修复更改进行了全面的实证分析,重点关注更改的内容和位置。我们观察到,所有重复出现的更改模式都不会被周围的代码遗忘,而是往往发生在特定的代码上下文中。
2019-08-29 cs.SE
Empirical evaluation of LLMs in predicting fixes of Configuration bugs in Smart Home System
该研究通过四种提示设计评估GPT-4、GPT-4o和Claude 3.5 Sonnet修复智能家居配置缺陷的能力,发现结合缺陷描述与原始脚本时策略预测准确率最高可达80%。
2025-02-16 cs.AI cs.SE
COMMITGUARD: Differential Slice Fuzzing for Commit-Induced Bug Detection
Cheriton School of Computer Science University of Waterloo(滑铁卢大学切里顿计算机科学学院);Department of Computer Science University of Calgary(卡尔加里大学计算机科学系)
COMMITGUARD是一种基于提交感知差分切片的模糊测试方法,通过对比提交前后代码切片的 sanitizer 报告,从300次开源项目提交中识别出7份候选漏洞,其中5份为真实漏洞,平均分析单提交耗时32.4分钟,修改函数覆盖率达75.36%。
2026-08-19 cs.SE