Common Bugs in Scratch Programs
Scratch程序中的错误可能会破坏学习的乐趣并抑制学习的成功。许多常见的bug都是重复出现的坏代码模式的结果。在本文中,我们提出了一个常见的代码模式,通常暗示在Scratch程序中的错误,和LitterBox工具,可以自动检测到它们。我们根据经验评估这些模式发生的频率以及其后果通常有多严重。虽然修复错误不可避免地是学习的一部分,但自动识别错误的可能性提供了支持学习者的潜力
2021-12-01 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
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
Harvesting Fix Hints in the History of Bugs
在软件开发中,修复错误是一项耗时且成本敏感的重要任务。虽然已经提出了许多方法来自动检测和修补软件代码,但这些策略仅限于一组经过深入研究以定义其属性的已识别错误。因此,它们设法覆盖了一小部分故障,如无限循环。我们建立在错误和相关用户错误报告是重复的假设之上,并提出了一种基于错误历史及其相关修复的修复建议新方法。在我们的方法中,一旦报告了一个错误,它会自动使用信息检索技术和机器学习分类与所有以前修复的错误进行比较。基于此比较,我们推荐从过去的修复示例中识别的顶级{ \em k}修复操作,这些操作可能适合作为软件开发人员解决新错误的提示。
2015-07-21 cs.SE
Explaining Software Bugs Leveraging Code Structures in Neural Machine Translation
提出基于transformer的生成模型Bugsplainer,利用源代码结构信息和缺陷模式自动生成软件缺陷的自然语言解释,评估与开发者研究表明其优于多个基线。
2025-01-28 cs.SE
Revisiting reopened bugs in open source software systems
重新打开的bug会降低软件系统的整体质量,因为它们需要开发人员进行不必要的返工。此外,重新打开的错误也会导致最终用户对软件质量的信任丧失。因此,预测可能重新打开的错误对于软件开发人员避免返工非常有帮助。先前关于重新开放的错误预测的研究只关注三个开源项目(即,Apache、Eclipse和OpenOffice)来生成见解。我们注意到,三个项目中有一个(即,Apache)有一个数据泄漏问题--重新打开的错误状态被包括在训练数据中,以预测重新打开的错误。此外,先前的研究使用过时的预测模型管道(即,利用构建预测模型的旧技术)来预测重新打开的错误。因此,我们重新开放的错误研究的一个大规模的数据集,包括47个项目跟踪JIRA使用现代技术,如SMOTE,排列重要性与7个不同的机器学习模型。我们使用混合方法(即,定量和定性研究)。我们发现:1)在使用更新后重新开放的bug预测模型管道后,只有34%的项目给出了AUC >= 0.7的可接受性能。2)有四个主要原因导致bug被重新打开,即技术原因(即,补丁/集成问题),文档,人(即,由于错误评估),以及错误报告中未显示的原因。3)在具有可接受AUC的项目中,94%的重新打开的bug是由于补丁问题(即,使用了不正确的补丁)。我们的研究重新开放的错误,并提供了新的见解开发人员的错误重开活动。
2022-02-17 cs.SE
Characterizing and Detecting WebAssembly Runtime Bugs
WebAssembly(缩写为WASM)已经成为一种很有前途的Web语言,也被广泛用于移动应用程序和桌面应用程序等软件应用程序。这些应用程序称为WASM应用程序,通常在WASM运行时中运行。开发人员经常报告WASM运行时中的错误,并导致WASM应用程序崩溃。然而,这些bug还没有得到很好的研究。为了填补知识空白,我们提出了一个系统的研究,以表征和检测WASM运行时的错误。我们首先从GitHub上的数百个相关帖子中收集了311个真实世界的bug。基于收集到的高质量的bug报告,我们提取了WASM运行时的31个bug类别,并总结了它们的常见修复策略。此外,我们开发了一个基于模式的错误检测框架,自动检测WASM运行时中的错误。我们将检测框架应用于五个流行的WASM运行时,并成功发现了53个以前从未报道过的错误,其中14个已被确认,6个已被运行时开发人员修复。
2023-01-28 cs.SE
Developers' Perception: Fixed Bugs Often Overlooked as Quality Contributions
本研究通过调查102名程序员,发现仅三分之一认为修复缺陷数量体现质量,揭示程序员常忽视缺陷报告的价值,强调测试与缺陷报告对软件质量的重要性。
2024-03-16 cs.SE
SysPro: Reproducing System-level Concurrency Bugs from Bug Reports
University of Maryland Baltimore County(马里兰大学巴尔的摩县分校);Zhejiang Provincial Financial Holdings Co,ltd(浙江省金融控股有限公司);The University of Melbourne(墨尔本大学);Queensland University of Technology (QUT)(昆士兰科技大学);Zhejiang University(浙江大学);University of Connecticut(康涅狄格大学)
SysPro通过自动提取系统调用信息和生成输入数据,有效重现系统级并发bug。
2026-01-14 cs.SE
Predicting Bugs' Components via Mining Bug Reports
复杂软件中的bug报告数量急剧增加。现在bug是手动分类的,bug分类或分配是一项劳动密集型和耗时的任务。在不了解软件结构的情况下,测试人员经常错误地指定新bug的组件。同时,故障诊断人员很难仅通过描述来确定故障的组成部分。我们在Eclipse Bug项目中挖掘出28,829个Bug的组件被错误指定并至少修改过一次。这导致这些错误必须重新分配,并延迟了错误修复的过程。错误指定的bug的平均修复时间比正确指定的bug的平均修复时间长。为了自动解决这个问题,我们使用历史的固定的错误报告作为训练语料库,并建立基于支持向量机和朴素贝叶斯分类器来预测一个新的错误的组件。在Eclipse项目的验证语料上,最佳预测准确率达到81.21%。平均而言,我们的预测模型可以为Triagers和开发人员节省大约54.3天的时间来修复bug。关键词:错误报告;错误分类;文本分类;预测模型
2011-04-14 cs.SE
Why are Some Bugs Non-Reproducible? An Empirical Investigation using Data Fusion
软件开发人员试图复制软件错误,以了解他们的错误行为并修复它们。不幸的是,他们经常无法复制(或修复)它们,这导致了错误的,不可靠的软件系统。然而,到目前为止,只有很少的研究已经完成,以更好地了解是什么使软件错误不可重现。在本文中,我们进行了多模态研究,以更好地了解软件错误的不可再现性。首先,我们使用来自两个流行的软件系统(Firefox,Eclipse)的576个不可再现的错误报告进行实证研究,并确定11个关键因素,可能导致报告的错误不可再现。其次,我们进行了一项用户研究,涉及13名专业开发人员,我们调查了开发人员如何应对不可重现的错误。我们发现他们要么关闭这些bug,要么请求进一步的信息,这涉及到长时间的审议和适得其反的手动搜索。第三,我们提供了一些关于如何避免不可再现性的可操作见解(例如,假阳性错误报告检测器)并提高所报告的错误的再现性(例如,用于错误复制的沙箱)通过结合我们来自多个研究的分析(例如,经验研究、开发人员研究)。
2021-08-11 cs.SE
Buggin: Automatic intrinsic bugs classification model using NLP and ML
本文提出Buggin方法,利用NLP技术(seBERT和TF-IDF)结合机器学习算法自动识别缺陷报告中的内在缺陷,实验表明TF-IDF与决策树结合在缺陷标题上取得78%的F1最高分。
2025-04-02 cs.SE
Which bugs are missed in code reviews: An empirical study on SmartSHARK dataset
在拉式开发系统中,代码审查和拉请求注释在提高代码质量方面起着重要作用。在这样的系统中,审阅者试图通过不同的单元测试仔细检查一段代码。不幸的是,有时他们在审查拉取请求时会遗漏错误,这会导致系统质量下降。换句话说,当合并pull请求后发现bug时,就会发生灾难性的后果。由于对这些bug缺乏具体的了解,我们不得不对它们进行调查和分类。在本研究中,我们尝试识别SmartSHARK数据集项目拉取请求中遗漏的错误。我们的贡献是双重的。首先,我们假设合并后的pull request有代码审查,代码审查评论或合并后的pull request评论,可能在代码审查后遗漏了bug。我们将这些合并的pull请求视为遗漏bug的候选pull请求。根据我们的假设,我们从77个开源GitHub项目中获得了3,261个候选拉取请求。经过两轮严格的人工分析,我们发现在173个pull请求中遗漏了187个bug。在第一步中,我们发现了224个错误的pull请求,其中包含合并pull请求后遗漏的bug。其次,我们定义并最终确定了一个适合我们发现的bug的分类法,然后在再次分析这些pull request之后找到了bug类别的分布。拉取请求中遗漏的bug及其分布的类别是:语义(51.34%),构建(15.5%),分析检查(9.09%),兼容性(7.49%),并发性(4.28%),配置(4.28%),GUI(2.14%),…
2022-05-19 cs.SE
Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs
Android应用程序是基于GUI的事件驱动软件,近年来变得无处不在。显然,功能正确性对于应用程序的成功至关重要。然而,除了崩溃错误之外,非崩溃功能错误(在本工作中简称为“非崩溃错误”),如无意的功能故障,无声的用户数据丢失和不正确的显示信息也很普遍,即使在流行的,经过良好测试的应用程序中也是如此。这些非崩溃功能错误通常由程序逻辑错误引起,并在图形用户界面(GUI)上表现出来。在实践中,这些错误在有效检测它们方面构成了重大挑战,因为(1)当前的实践严重依赖于昂贵的小规模手动验证(缺乏自动化);(2)现代全自动测试仅限于崩溃错误(缺乏测试预言机)。本文通过引入独立视图模糊来填补这一空白,这是一种用于检测Android应用程序中非崩溃功能错误的新颖的全自动方法。受变形测试的启发,我们的主要见解是利用Android应用程序的普遍独立视图属性,从一组验证某些应用程序属性的种子测试中制造属性保留突变测试。变异的测试有助于在额外的不利条件下测试测试应用程序。任何属性冲突都表明可能存在功能错误,需要进一步手动确认。我们已经实现了我们的方法作为一个自动化的,端到端的功能模糊工具,精灵。给定一个应用程序,(1)Genie自动检测非崩溃错误,而不需要人类提供的测试和预言(因此完全自动化);(2)检测到的非崩溃错误是多种多样的(因此是通用的,不限于特定的功能属性),这使Genie与以前的工作不同。
2021-10-05 cs.SE
Detecting Critical Bugs in SMT Solvers Using Blackbox Mutational Fuzzing
形式化方法广泛地使用SMT求解器来确定公式的可满足性,例如,在软件验证、系统测试生成和程序合成中。然而,由于其复杂的实现,求解器可能包含导致不合理结果的关键错误。鉴于求解器在软件可靠性方面的广泛适用性,依赖这种不合理的结果可能会产生有害的后果。在本文中,我们提出了风暴,一种新的黑盒突变模糊技术,用于检测SMT求解器中的关键错误。我们在7个成熟的求解器上运行模糊器,发现了29个以前未知的关键错误。STORM已经被用于在部署之前测试流行求解器的新功能。
2020-04-13 cs.SE
Bug Characteristics in Quantum Software Ecosystem
随着近年来量子计算的发展,量子软件对于探索量子计算系统的全部潜力至关重要。量子编程不同于经典编程,例如,量子程序的状态本质上是概率性的,并且由于量子机制的不稳定性,量子计算机容易出错。因此,量子软件项目中的bug的特征可能与经典软件项目中的bug有很大不同。这项工作旨在了解量子软件项目中错误的特征,以便提供见解,帮助设计有效的测试和调试机制。为了实现这一目标,我们对125个量子软件项目的错误报告进行了实证研究。我们观察到量子软件项目比经典软件项目更容易出错,并且量子项目的错误比经典项目的错误修复成本更高。我们还确定了错误的类型和它们发生的量子编程组件。我们的研究表明,错误分布在不同的组件中,但量子特定的错误特别出现在编译器,门操作和状态准备组件中。最常见的三种错误类型是程序异常错误、配置错误和数据类型和结构错误。我们的研究强调了量子软件开发中一些特别具有挑战性的领域,例如缺乏科学的量子计算库来实现量子计算的综合数学函数。量子开发人员还寻求专门的量子软件工程数据操作库,如量子计算的Numpy。我们的研究结果还为未来的工作提供了见解,以推进量子软件的量子程序开发,测试和调试,例如为调试低级电路提供工具支持。
2022-04-25 cs.SE
Leveraging Data Characteristics for Bug Localization in Deep Learning Programs
针对深度学习程序结构性缺陷难定位的问题,提出Theia,结合训练数据集特征在训练初期检测Keras/PyTorch程序缺陷并给出位置与修复建议,在40个真实程序上定位57/75个缺陷,显著优于NeuraLint的17/75。
2024-12-08 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
Characterizing Real-World Bugs in Tile Programs for Automated Bug Detection
University of Texas at Dallas(达拉斯大学);Institute of Systems for Advanced Computing, Fudan University(复旦大学高级计算系统研究所);Beijing Tongming Lake Information Technology Application Innovation Center(北京通明湖信息技术应用创新中心);Shanghai Institute of Systems for Open Computing(上海开放计算系统研究所);Key Lab of HCST (PKU), MOE(北京大学计算机辅助设计与图形学教育部重点实验室;计算机科学系,北京大学);SCS, Peking University
本文首次系统研究了Tile程序代码生成中的Bug,通过收集401个GitHubbug报告,识别出301个Tile程序代码生成Bug,分析其根本原因、症状、输入模式、触发测试或acles以及修复策略,为构建针对Tile编译器基础设施的调试、测试和修复工具提供基础见解。
2026-07-30 cs.SE
Understanding and Finding JIT Compiler Performance Bugs
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
本文提出了一种轻量级技术,用于自动检测JIT编译器性能错误,并通过Jittery工具发现了12个新错误。
2026-03-06 cs.SE
Towards Understanding the Challenges of Bug Localization in Deep Learning Systems
本文通过大规模实证研究,利用2,365个深度学习缺陷和2,913个传统软件缺陷,系统分析了现有技术在深度学习系统缺陷定位中表现不佳的原因,揭示了缺陷类型和外在特性对定位效果的影响。
2025-07-22 cs.SE
Characterizing Bugs and Quality Attributes in Quantum Software: A Large-Scale Empirical Study
NIT Srinagar(印度国立技术学院斯利那加分校)
本研究通过大规模分析量子软件缺陷,揭示了全栈库和编译器的高缺陷率及自动化测试对减少缺陷的重要性。
2026-01-02 cs.SE
Navigate, Understand, Communicate: How Developers Locate Performance Bugs
背景:性能缺陷可能导致计算效率、功耗和用户体验方面的严重问题。定位这些bug是一项困难的任务,因为开发人员必须判断每个昂贵的操作是否需要或不需要消耗运行时。目的:我们想研究开发人员在定位性能错误时如何浏览代码,理解程序并传达检测到的问题。方法:我们进行了一项定性的用户研究,观察12名开发人员试图修复两个开源项目中记录的性能错误。开发人员使用一个概要分析和分析工具,该工具以列表表示形式直观地描述运行时信息,并嵌入到源代码视图中。结果如下:我们确定了开发人员用于查明bug的典型导航策略,例如,基于运行时消耗的方法调用。可视化和代码的集成帮助开发人员理解错误。可视化数据结构和算法的草图被证明是有价值的外部化和沟通的复杂错误的理解过程。结论:修复性能bug是一个代码理解和导航问题。基于已执行方法的灵活导航特性以及源代码和性能信息的紧密集成支持该过程。
2017-06-30 cs.SE
On Reporting Performance and Accuracy Bugs for Deep Learning Frameworks: An Exploratory Study from GitHub
深度学习(DL)的巨大成功大大增加了GitHub上托管的开源DL框架的数量。其中,性能和准确性错误是影响这些DL框架声誉的关键因素,因此了解发现和调查DL的实践非常重要。在本文中,我们进行了探索性研究的性质报告性能和准确性错误错误的DL框架,旨在提高我们的知识在这个话题上。我们的研究涵盖了GitHub上10个最流行的开源DL框架(例如,TensorFlow,Keras和PyTorch),基于此,我们从22,522个总人口中抽取了664个代表性的性能和准确性错误报告。通过对这些样本的系统分析,我们的主要发现是:(1)低速度是提交与性能错误相关的报告的主要原因,但我们没有看到与准确性相关的报告的一致模式;(2)大多数报告都是关于训练阶段遇到的问题;(3)只有一小部分报告提供的信息不足以进行调查;(4)大多数性能和准确性错误报告(69%至100%)与实际错误无关或被视为未分类;(5)大约50%的性能和准确性错误报告确实揭示了错误,但没有通过直接补丁解决。从上述推导,我们讨论了一组可操作的影响,研究人员,维护人员,并在这个问题上的报告提交者。为了促进开放科学,已标记的数据集已在https://tinyurl.com/4x3tap9w上公开提供。
2022-04-17 cs.SE
Bug Tracking and Reporting System
这是信息的世界。不断增长的领域信息技术有其许多先进的显着特点,使它成为今天的样子。在这个世界上,信息必须经过处理,明确分布,并且必须有效地到达最终用户。否则,我们知道它会导致灾难性的情况。同一阶段的另一个硬币是绝对有必要知道最终用户面临的任何错误。Bug跟踪和报告系统项目旨在提供解决方案。Bug Tracker可以由任何两种类型组成。第一个是系统侧,另一个是服务侧。我们的项目涉及第二个。这篇论文完全致力于跟踪出现在这里的错误。管理员维护关于错误ID、错误类型、错误描述、错误严重性、错误状态、用户详细信息的主详细信息。管理员也有权更新严重性级别、状态级别等文件模块的主详细信息。管理员添加用户并分配他们完成论文的责任。最后,在分析分配给特定用户的论文时,管理员可以跟踪错误,并按照严重性和状态的顺序自动添加到包含错误的表中。管理员可以随时以报告的形式了解分配给各个用户的各种文件中的信息,他们的错误跟踪状态,他们的描述等。
2013-09-05 cs.SE
Human Attention During Localization of Memory Bugs in C Programs
University of Notre Dame(圣母大学);Vanderbilt University(范德堡大学)
研究人类在 C 程序中定位内存错误时的视觉注意力,招募 21 名程序员在三个程序中定位内存错误,收集 31 小时观察数据,分析成功率等任务结果、总体视觉注意力模式及成败案例中视觉注意力模式差异。
2026-07-20 cs.SE
Mining Bug Repositories for Multi-Fault Programs
针对 Defects4J 与 BugsInPy 多为单缺陷条目的局限,本文利用测试用例移植和故障位置转换构建保留原数据集特性的真实多故障程序数据集。
2024-04-10 cs.SE
Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
在过去的十年中,基于测试套件的自动程序修复的研究有了显着增长。每年,新的方法和实现都会出现在主要的软件工程场所。然而,大多数这些方法都是在单一的bug基准上进行评估的,其他研究人员也很少复制这些bug。在本文中,我们提出了一个大规模的实验,使用11个Java测试套件为基础的修复工具和5个基准的错误。我们的目标是更好地了解自动程序修复工具在大量基准测试中的现状。我们的调查是指导的假设,修复工具的可修复性可能不会在不同的基准程序错误的一般化。我们发现,这11个工具1)能够为5个基准测试中21%的bug生成补丁,2)与其他基准测试相比,在Defects 4J上具有更好的性能,通过为Defects 4J中47%的bug生成补丁,而其他基准测试中的bug只有10-30%。我们的实验总共包括23,551次修复尝试,我们用来找到非补丁生成的原因。本文对这些原因进行了分析,有助于维修工具设计人员改进技术和工具。
2019-05-28 cs.SE
Towards Automated Performance Bug Identification in Python
内容:软件性能是一个关键的非功能性需求,出现在许多领域,如关键任务应用程序,金融和实时的系统。在这项工作中,我们专注于早期检测的性能错误,我们的软件在研究中是一个实时的系统中使用的广告/营销领域。目标:找到一个简单且易于实现的解决方案,预测性能错误。方法:我们使用四种机器学习方法构建了几个模型,通常用于缺陷预测:C4.5决策树,朴素贝叶斯,贝叶斯网络和逻辑回归。结果如下:我们的实证结果表明,C4.5模型,使用行的代码更改,文件的年龄和大小作为解释变量,可以用来预测性能错误(召回=0.73,准确率=0.85,精度=0.96)。我们表明,减少提交时交付的更改数量,可以降低性能错误注入的机会。结论:我们相信我们的方法可以帮助从业者在开发周期的早期消除性能错误。我们的研究结果也感兴趣的理论家,建立一个功能性错误和(非功能性)性能错误之间的联系,并明确表明,用于预测的功能性错误的属性可以用于预测的性能错误。
2016-07-28 cs.SE
Automatically Detecting Heterogeneous Bugs in High-Performance Computing Scientific Software
针对HPC科学应用中跨平台数据移动引发的异构Bug难检测问题,提出结合NLP、脱靶测试等技术的HeteroBugDetect自动化方法,在LAMMPS上验证可检测多类异构Bug,提升跨HPC环境可靠性。
2025-01-16 cs.SE
GitBug-Java: A Reproducible Benchmark of Recent Java Bugs
针对现有漏洞修复基准数据集缺乏近期案例与可复现性的问题,研究提出包含199个2023年Java漏洞的可复现基准GitBug-Java,为APR与FL研究提供更贴合当前实践的评估基础。
2024-02-06 cs.SE
Yuga: Automatically Detecting Lifetime Annotation Bugs in the Rust Language
针对Rust中不正确的生命周期标注导致的内存安全漏洞,提出静态分析工具Yuga,采用多阶段分析(模式匹配与别名分析)自动检测此类缺陷,并公开数据集验证其高精度。
2025-01-24 cs.SE
Toward Understanding Deep Learning Framework Bugs
本研究通过对四个主流DL框架的1000个缺陷进行大规模分析,揭示了缺陷特征,提出了改进检测与调试的指南,并开发了有效工具TenFuzz,发现3个新缺陷。
2024-08-21 cs.SE
Can LLMs Demystify Bug Reports?
本研究针对现有工具难以自动处理自然语言Bug报告的问题,用Defects4J基准测试ChatGPT,发现其能复现50%的报告Bug,展现了人机协同处理Bug的应用潜力。
2023-10-10 cs.SE
Automatic Static Bug Detection for Machine Learning Libraries: Are We There Yet?
本文在四个机器学习库的410个已知缺陷上评估五种静态缺陷检测器,发现其整体检出率极低,仅 Flawfinder 和 RATS 相对有效,并据此提出改进静态检测工具实用性的方向。
2023-07-09 cs.SE
SkipAnalyzer: A Tool for Static Code Analysis with Large Language Models
本研究提出由LLM驱动的静态代码分析工具SkipAnalyzer,包含缺陷检测、误报过滤、补丁生成三个模块,在空指针解引用和资源泄漏两类缺陷的相关任务中性能优于现有工具。
2023-12-18 cs.SE
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
How Effective are Smart Contract Analysis Tools? Evaluating Smart Contract Static Analysis Tools Using Bug Injection
针对智能合约的安全攻击一直在上升,这导致了财务损失和信任的侵蚀。因此,让开发人员在部署之前发现智能合约中的安全漏洞非常重要。已经开发了许多静态分析工具来查找智能合约中的安全漏洞。然而,尽管有许多错误发现工具,但没有系统的方法来评估所提出的工具并衡量其有效性。本文提出了SolidiFI,这是一种用于评估智能合约静态分析工具的自动化和系统化方法。SolidiFI基于注入错误(即,代码缺陷)到智能合约中的所有潜在位置,以引入有针对性的安全漏洞。然后,SolidiFI使用静态分析工具检查生成的错误合约,并识别工具无法检测到的错误(假阴性)以及报告为假阳性的错误。SolidiFI被用来评估六个广泛使用的静态分析工具,即Oyente,Securify,Mythril,SmartCheck,Manticore和Slither,使用一组由9369个不同的错误注入的50个合同。它发现了几个被评估的工具没有检测到的bug实例,尽管它们声称能够检测到这样的bug,并且所有的工具都报告了许多误报
2020-05-23 cs.SE
Is My RPC Response Reliable? Detecting RPC Bugs in Ethereum Blockchain Client under Context
Sun Yat-sen University(中山大学);Zhejiang University(浙江大学)
EthCRAFT通过生成上下文感知的RPC调用,发现更多以太坊客户端中的RPC错误,并推动了三个漏洞赏金的发放。
2026-01-29 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
PanicFI: An Infrastructure for Fixing Panic Bugs in Real-World Rust Programs
针对Rust程序panic缺陷修复难的问题,提出PanicFI基础设施,构建含102个真实缺陷的Panic4R数据集,挖掘Rust特有修复模式,开发首款自动化修复工具PanicKiller,已修复28个开源缺陷,验证了模式有效性。
2024-11-04 cs.SE
Attention Please: Consider Mockito when Evaluating Newly Proposed Automated Program Repair Techniques
自动程序修复(Automated program repair,APR)技术近年来引起了广泛的关注。与此同时,许多基准测试已经建立了评估APR技术的性能,其中Defects 4J是使用最广泛的基准测试之一。然而,在Mockito,一个项目中的缺陷增强后的版本的Defects 4J,没有得到太多的关注,最近的研究。在本文中,我们的目的是调查评估APR技术时考虑Mockito错误的必要性。我们的研究结果表明:1)与其他项目的bug相比,Mockito bug的修复并不复杂; 2)与修复Mockito bug所需的模式相比,最先进的工具修复的bug共享相同的修复模式;但是,在此情况下,3)最先进的工具在Mockito错误上表现不佳(Nopol只能正确修复一个bug,而SimFix和CapGen无法修复Mockito中的任何bug,即使所有bug位置都已暴露)。从这些结果中,我们得出结论,现有的APR技术可能是过拟合的评估科目,我们应该考虑Mockito,甚至更多的错误,从其他项目,当评估新提出的APR技术。我们进一步找出了一个独特的修复行动所需的修复Mockito错误命名为外部包添加。从与源代码相关联的测试代码中恢复外部包对于扩大搜索空间是可行的,并且该动作可以用现有的修复动作来增强以推进现有技术。
2019-01-08 cs.SE
An End-to-End Approach for Fixing Concurrency Bugs via SHB-Based Context Extractor
本文提出ConFixAgent,一种基于LLM的端到端并发bug修复工具,通过静态发生前图识别相关代码段,提升修复准确性。
2026-04-07 cs.SE
MicroRacer: Detecting Concurrency Bugs for Cloud Service Systems
Sun Yat-sen University(中山大学)
MicroRacer是一种非侵入性的自动化框架,用于检测云服务系统中的并发错误,通过动态仪器化库收集数据并分析资源访问模式以识别可疑操作。
2025-12-05 cs.SE
Getafix: Learning to Fix Bugs Automatically
静态分析器通过对反复出现的bug类别发出警告来帮助早期发现bug。虽然修复这些bug在实践中仍然是一项主要的手动任务,但我们观察到,对特定bug类别的修复通常是重复的。本文讨论了通过从过去的修复中学习来自动修复常见错误的问题。我们提出Getafix,一种方法,产生类似人类的修复,同时足够快,建议修复的时间成比例的时间,需要获得静态分析结果摆在首位。Getafix是基于一种新的层次聚类算法,总结修复模式到一个层次结构,从一般到特定的模式。Getafix使用一种简单而有效的排名技术,使用代码更改的上下文来为给定的错误选择最合适的修复,而不是对潜在的大空间候选修复进行计算上昂贵的探索。我们的评估将Getafix应用于流行的Java静态分析器报告的六个错误类别的1,268个错误修复,包括空引用,不正确的API调用和特定语言结构的误用。该方法准确地预测了人类编写的修复程序在12%到91%的时间内是最重要的建议,这取决于bug类别。排名前5位的建议包含1,268个错误中的526个。此外,我们还报告了在Facebook内部部署该方法的情况,该方法有助于提高数十亿人使用的软件的可靠性。据我们所知,Getafix是第一个工业部署的自动化错误修复工具,它从过去的人类编写的修复程序中学习修复模式,以产生类似人类的修复程序。
2019-11-20 cs.SE
Demystifying Regular Expression Bugs: A comprehensive study on regular expression bug causes, fixes, and testing
正则表达式会导致与字符串相关的错误和DOS攻击的开放安全漏洞。然而,除了ReDoS(正则表达式拒绝服务)之外,人们对正则表达式问题影响软件开发的程度以及如何在实践中解决这些问题知之甚少。我们对来自Apache,Mozilla,Facebook和Google GitHub存储库的356个合并regex相关的pull request bug进行了实证研究。我们识别正则表达式问题的性质、修复以及测试代码中的相关更改并对其进行分类。本文最重要的发现如下:1)不正确的正则表达式行为是正则表达式错误的主要根源(165/356,46.3%)。其余的根本原因是不正确的API使用(9.3%)和其他需要在修复中更改正则表达式的代码问题(29.5%),2)修复正则表达式错误并不简单,因为与一般的拉取请求相比,修复正则表达式错误需要更多的时间和更多的代码行,3)大多数(51%)与正则表达式相关的拉取请求不包含测试代码更改。某些正则表达式错误类型(例如,编译错误,性能问题,正则表达式表示)不太可能包括测试代码更改,4)在正则表达式相关的拉取请求中,测试代码更改的主要类型是测试用例添加(75%)。本研究的结果有助于更广泛地理解开发人员在使用、修复和测试正则表达式时所面临的实际问题。
2021-04-19 cs.SE
An Exploratory Characterization of Bugs in COVID-19 Software Projects
背景:COVID-19大流行的可怕后果影响了COVID-19软件的开发,即,用于分析和缓解COVID-19的软件。COVID-19软件中的漏洞可能是后果性的,因为COVID-19软件项目可能影响公共卫生政策和用户数据隐私。目的:本文的目标是通过对与COVID-19相关的开源软件项目的实证研究,帮助从业者和研究人员提高COVID-19软件的质量。方法:我们使用GitHub上托管的129个开源COVID-19软件项目进行实证研究。接下来,我们对收集到的项目中的550个错误报告进行定性分析,以确定错误类别。结果:我们确定了8个错误类别,其中包括数据错误,即,在COVID-19数据的挖掘和存储过程中发生的错误。已识别的漏洞类别出现在7类软件项目中,包括(i)使用统计建模执行与COVID-19相关的预测的项目,以及(ii)用于设计和实施医疗设备(如呼吸机)的医疗设备软件。结论:根据我们的研究结果,我们倡导通过数据科学从业者和公共卫生专家之间更好的协同作用来构建强大的统计模型。用户跟踪软件中存在安全漏洞,需要开发工具来检测数据隐私侵犯和安全漏洞。
2020-05-31 cs.SE
Bug Priority Change: An Empirical Study on Apache Projects
本研究针对Apache开源项目中bug优先级变更的现象展开定量实证分析,揭示了变更比例、时间、规律及影响因素,为优化bug修复流程提供了数据支撑。
2024-03-08 cs.SE
On Relating Technical, Social Factors, and the Introduction of Bugs
随着协作编码环境使软件项目更容易做出贡献,参与这些项目的开发人员数量不断增加。这种增加使得代码审查者更难处理有bug的贡献。像GitHub这样的协作环境提供了关于开发人员贡献的丰富数据源。这样的数据可以用于提取关于开发者的关于技术的信息(例如,他们的经验)和社会(例如,的相互作用)因素。最近的研究分析了这些因素对软件开发的不同活动的影响。然而,在这些因素与错误引入之间的关系方面仍有改进的余地。我们提出了一个更广泛的研究,包括来自不同领域的8个项目和6,537个错误报告,涉及五个技术因素,三个社会因素和错误的介绍。结果表明,技术和社会因素可以区分错误和干净的承诺。但是,技术因素比社会因素更具决定性。特别是,开发人员不遵守技术贡献规范的习惯和开发人员的提交缺陷与提交缺陷的增加有关。另一方面,项目的建立、开发者提交的所有权级别和社会影响力与引入错误的机会较低有关。
2020-04-07 cs.SE
XRFix: Exploring Performance Bug Repair of Extended Reality Applications with Large Language Models
Hong Kong Baptist University(香港浸会大学);Sun Yat-sen University(中山大学);The Hong Kong Polytechnic University(香港理工大学)
该研究针对XR应用性能缺陷修复的技术挑战,提出基于大语言模型的XRFix框架,构建缺陷数据集与定制检测工具,经实验验证其修复性能优于SOTA APR方法。
2026-08-25 cs.SE
Towards Understanding the Bugs in Solidity Compiler
本文首次系统性研究了533个Solidity编译器缺陷,分析其特征与触发用例,得出七条结论,并通过基准评估三个模糊测试工具,揭示其因忽视缺陷诱导特征、编译选项和测试预言而检测效率低下的问题。
2024-08-09 cs.SE
Bug shallowness in open-source, Macintosh software
开源软件的核心力量是bug的浅薄性,即相对容易找到和修复bug。开源运动始于Unix软件,因此许多用户也是能够找到并修复源代码错误的程序员。但随着开源运动进入Macintosh平台,漏洞可能并不浅,因为Macintosh用户中很少有程序员。然而,根据开源开发人员的报告,我得出结论,开源Macintosh软件中的漏洞与任何其他开源软件中的漏洞一样浅。
2004-07-29 cs.SE
CMind: An AI Agent for Localizing C Memory Bugs
University of Notre Dame(圣母大学)
CMind通过模拟人类程序员行为,利用大语言模型和引导决策方法,定位C程序中的内存错误。
2026-02-20 cs.SE
Rise From The Ashes: LLM-based Static Analysis for Deep Learning Framework Bugs
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学软件新技术国家重点实验室);School of Artificial Intelligence and Computer Science, Nantong University(南通大学人工智能与计算机学院);College of Computer Science and Technology/College of Software, Nanjing University of Aeronautics and Astronautics(南京航空航天大学计算机科学与技术学院/软件学院);Beijing Academy of Artificial Intelligence(北京智源人工智能研究院)
提出首个基于LLM的静态分析技术Phoenix,通过结构化语义桥接中间表示建模跨语言张量流,结合多智能体工作流检测深度学习框架缺陷,已在PyTorch中发现31个新bug。
2026-07-02 cs.SE