Comparing Bug Finding Tools with Reviews and Tests
缺陷发现工具可以使用自动化的静态分析来发现软件源代码中的缺陷。这种自动化可能能够减少其他测试和审查活动所花费的时间。为此,我们需要清楚地了解缺陷发现工具发现的缺陷与其他技术发现的缺陷之间的关系。本文介绍了一个案例研究,主要是从一个工业环境,用于分析的相互关系,使用几个项目。主要的发现是,错误发现工具主要发现与测试不同的缺陷,但通过评审发现的缺陷的子集。然而,可以检测到的类型进行了更彻底的分析。因此,如果可以容忍这些工具的大量误报,则最建议进行组合。
2017-11-14 cs.PL cs.SE
Design choices made by LLM-based test generators prevent them from finding bugs
University of Waterloo(滑铁卢大学)
本文批判性评估了Codium CoverAgent等基于LLM的测试生成工具,发现其测试预言被设计为通过,导致无法有效发现bug,甚至通过验证缺陷代码并拒绝揭示bug的测试而使情况恶化,对软件质量产生负面影响。
2024-12-18 cs.AI cs.SE
HyperPUT: Generating Synthetic Faulty Programs to Challenge Bug-Finding Tools
本文提出 HyperPUT,从种子缺陷出发通过增量程序变换自动生成可扩展规模的带缺陷 C 程序,用于多方面挑战现代缺陷发现工具并支持实证评估。
2024-02-02 cs.CR cs.SE
Automatic Static Bug Detection for Machine Learning Libraries: Are We There Yet?
本文在四个机器学习库的410个已知缺陷上评估五种静态缺陷检测器,发现其整体检出率极低,仅 Flawfinder 和 RATS 相对有效,并据此提出改进静态检测工具实用性的方向。
2023-07-09 cs.SE
Characterizing Tests in IoT Software: Practices, Challenges and Opportunities
McGill University(麦吉尔大学);The Hong Kong University of Science and Technology(香港科技大学)
通过首个开源物联网软件测试用例实证研究,评估测试有效性,识别与外部依赖交互的挑战,并分析模拟对象的使用潜力。
2026-06-12 cs.SE
Bug shallowness in open-source, Macintosh software
开源软件的核心力量是bug的浅薄性,即相对容易找到和修复bug。开源运动始于Unix软件,因此许多用户也是能够找到并修复源代码错误的程序员。但随着开源运动进入Macintosh平台,漏洞可能并不浅,因为Macintosh用户中很少有程序员。然而,根据开源开发人员的报告,我得出结论,开源Macintosh软件中的漏洞与任何其他开源软件中的漏洞一样浅。
2004-07-29 cs.SE
Poster: Improving Bug Localization with Report Quality Dynamics and Query Reformulation
最近的一项用户研究结果表明,如果错误报告缺乏丰富的结构化信息,如相关的程序实体名称,基于IR的错误定位技术不会表现良好。相反,bug报告中过多的结构化信息(如堆栈跟踪)可能对自动化bug定位没有帮助。在本文中,我们使用来自8个主题系统的5,500个错误报告进行了一项大型实证研究,并复制了文献中的三项现有研究。我们的研究结果(1)经验性地证明了错误报告的质量动态如何影响基于IR的错误定位的性能,以及(2)提出了潜在的方法(例如,查询重构)以克服这样的限制。
2018-07-20 cs.SE
Evaluating Manual Intervention to Address the Challenges of Bug Finding with KLEE
符号执行已经显示出其在软件中发现安全相关缺陷的能力,但面临着重大的可扩展性挑战。人们普遍认为,专家的人工干预可以帮助减轻这些限制因素。然而,很少有正式的调查这一想法。在本文中,我们提出了我们的经验,应用KLEE符号执行引擎的一个新的错误语料库,并使用人工干预,以减轻遇到的问题。我们的贡献是(1)半翅目,一个新的语料库的130多个错误,在现实世界的软件,(2)一个全面的评估KLEE符号执行引擎的半翅目与经常发生的软件模式的分类是有问题的符号执行,和(3)评估手动缓解旨在解决符号执行的根本问题。我们的经验表明,在许多情况下,手动干预可以增加代码覆盖率和bug检测。然而,这不是一个银弹,我们讨论它的局限性和遇到的挑战。
2018-05-09 cs.SE
Understanding and Finding JIT Compiler Performance Bugs
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
本文提出了一种轻量级技术,用于自动检测JIT编译器性能错误,并通过Jittery工具发现了12个新错误。
2026-03-06 cs.SE
Finding and Understanding Miscompilation Bugs in the Solidity Compiler
Ethereum Foundation(以太坊基金会)
研究旨在提高Solidity编译器质量,创建SolSmith工具。通过生成有效测试程序使编译器测试更严格,发现25个错误编译漏洞。还对这些漏洞进行定性和定量分析,揭示优化编译器的陷阱,为智能合约及用户减少潜在风险。
2026-07-09 cs.CR cs.PL cs.SE
The Power of Types: Exploring the Impact of Type Checking on Neural Bug Detection in Dynamically Typed Languages
McGill University(麦吉尔大学);Linköping University(林雪平大学)
本文探究类型检查对动态类型语言神经缺陷检测的影响,发现现有数据集含大量类型相关缺陷,集成类型检查器或移除训练集中类型相关缺陷可优化检测器性能。
2025-01-16 cs.LG cs.PL cs.SE
Finding Bug-Inducing Program Environments
本文提出覆盖率引导的系统调用拦截与环境资源变异方法,并通过 AFLChaos 在多个开源项目中自动发现资源处理相关 Bug。
2023-04-20 cs.SE
Fonte: Finding Bug Inducing Commits from Failures
Bug Inducing Commit(BIC)是将软件bug引入代码库的提交。了解给定bug的相关BIC可以为调试和bug分类提供有价值的信息。然而,现有的BIC识别技术要么太昂贵(因为它们需要针对先前版本执行失败的测试以进行二分),要么在调试时不适用(因为它们需要诸如错误报告或错误修复的事后人工制品)。我们提出了Fonte,一个高效和准确的BIC识别技术,只需要测试覆盖率。Fonte将故障定位(FL)与BIC识别相结合,并根据提交修改的代码元素的可疑性对提交进行排名。Fonte使用故障覆盖率和一个过滤器来减少BIC的搜索空间,该过滤器可以检测仅仅是样式更改的提交。我们使用130个真实世界的BIC进行的实证评估表明,Fonte的性能明显优于基于信息检索和神经代码嵌入模型的最新BIC识别技术,MRR至少高出39%。我们还报告说,Fonte产生的排名分数可用于执行加权二分法,进一步降低BIC识别的成本。最后,我们将Fonte应用于一个拥有超过1000万行代码的大型工业项目,并表明它可以将实际BIC排在前五名提交中,占所研究的真实批测试失败的87%,并平均节省32%的BIC检查成本。
2023-02-15 cs.SE
"Silent Is Not Actually Silent": An Investigation of Toxicity on Bug Report Discussion
本研究通过定性分析GitHub上的203个缺陷线程,揭示了缺陷报告讨论中毒性行为的成因及其对协作和问题解决的负面影响,并提出了缓解建议。
2025-05-01 cs.SE
Learning a Static Bug Finder from Data
Nanjing University(南京大学);Visa Research(维萨研究院)
我们提出了一种创建静态错误查找器的替代方法。我们利用深度神经网络直接从数据中训练静态分析器,而不是依赖于人类的专业知识。特别是,我们框架的问题,错误发现作为一个分类任务和训练的分类器,以区分错误的程序,使用图神经网络(GNN)。最重要的是,我们提出了一种新的基于间隔的传播机制,可以显著提高GNN的效率,准确性和可扩展性。在跨项目预测任务中,我们从NeurSA实例化的三个神经缺陷检测器有效地捕获了空指针解引用、数组索引越界和未看到代码中的类转换缺陷。我们将NeurSA与几个静态分析器(例如Facebook Infer和Pinpoint)在一组空指针解引用错误上进行比较。结果表明,NeurSA在捕获真正的错误和抑制虚假警告方面更精确。我们还将NeurSA应用于GitHub上几个流行的Java项目,发现了50个新的bug,其中9个已经修复,3个已经确认。
2020-03-27 cs.LG 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
SoK: From Finding to Deployment: Systematizing the OS Kernel Bug Lifecycle
University of Illinois Chicago(伊利诺伊大学芝加哥分校);Indiana University Bloomington(印第安纳大学布鲁明顿分校)
本SoK系统化Linux内核缺陷从发现到部署的生命周期,划分五个阶段,通过测量syzbot修复缺陷揭示崩溃到补丁差距的结构性原因,指出修复技术应把复现器等产物视为输出而非前提。
2026-09-22 cs.CR cs.OS cs.SE
Finding Compiler Bugs through Cross-Language Code Generator and Differential Testing
提出CrossLangFuzzer框架,利用通用IR和三种变异技术自动生成跨语言测试程序,通过差分测试发现多个JVM语言编译器缺陷,其中TypeChanger最有效,共发现24个已确认缺陷。
2025-07-09 cs.PL cs.SE
SyzRetrospector: A Large-Scale Retrospective Study of Syzbot
本文提出 SyzRetrospector 工具,通过大规模回顾性分析 559 个 Linux 内核缺陷,揭示 Syzbot 在能够发现缺陷前平均隐藏 331.17 天,并分析延迟原因与改进方向。
2024-01-22 cs.CR cs.OS cs.SE
Anticipating Bugs: Ticket-Level Bug Prediction and Temporal Proximity Effects
本文提出工单级缺陷预测(TLP)方法,通过72个多类特征在工单生命周期三阶段预测引入缺陷的工单,经两个Apache项目约1万工单验证,准确率随时间邻近度提升,可支撑开发上游的风险感知工单管理。
2025-06-17 cs.SE
An Annotation-based Approach for Finding Bugs in Neural Network Programs
针对神经网络程序缺乏输入约束导致自动测试易生成无效输入的问题,本文提出 aNNoTest,利用专用注解和基于属性的测试生成有效随机输入,并在19个程序中发现94个缺陷。
2023-01-24 cs.SE
Finding Model-Checkable Needles in Large Source Code Haystacks: Modular Bug-Finding via Static Analysis and Dynamic Invariant Discovery
在本文中,我们提出了一种新的婚姻的静态和动态分析。给定具有许多功能的大型代码库和成熟的测试套件,我们建议使用静态分析来找到具有断言或其他明显正确性属性的功能1)(例如,数组边界要求或指针访问),以及2)具有足够简单的控制流和数据使用,以服从基于谓词抽象或有界模型检验,而无需人工干预。由于大多数这样的功能在现实的软件系统中,实际上依赖于许多输入的前提条件,而不是指定的语言的类型系统(或以任何方式注释),我们建议使用动态发现的不变量的基础上,程序的测试套件,以表征可能的前提条件,以减少误报的问题。虽然在验证方面提供的很少,但这种方法可以为通常被认为“太大而无法进行模型检查”的程序提供额外的快速和高度可扩展的错误查找方法。“我们提出了一个简单的例子,表明该技术可以用于更典型的“模型可检查”的代码库,即使在存在设计不良的测试套件和坏的不变量。
2016-09-20 cs.LO cs.PL cs.SE
Bugsplainer: Leveraging Code Structures to Explain Software Bugs with Neural Machine Translation
针对软件缺陷自动解释研究不足的问题,提出网页端调试工具Bugsplainer,利用代码结构推理缺陷,结合微调后的CodeT5模型从缺陷修复提交语料中学习,生成自然语言缺陷解释。
2023-08-23 cs.SE
RegMiner: Towards Constructing a Large Regression Dataset from Code Evolution History
缺陷数据集是研究人员和程序员的重要人工制品,它为各种SE/PL研究(如故障定位、软件测试和程序修复)奠定了经验和实验基础。所有已知的最先进的数据集都是手工构建的,这不可避免地限制了它们的可扩展性,代表性以及对新兴数据驱动研究的支持。在这项工作中,我们提出了一种方法来自动化的过程中收获可复制的回归错误的代码进化历史。我们专注于回归错误数据集,因为它们(1)表明如何引入和修复错误(作为正常错误),(2)支持回归错误分析,以及(3)包含更强大的规范(即,原始通过版本)进行一般错误分析。在技术上,我们解决了一个信息检索问题的代码演变的历史。给定一个代码仓库,我们搜索回归,其中测试可以通过回归修复提交,失败回归诱导提交,并通过工作提交。在这项工作中,我们解决了以下挑战:(1)从代码演化历史中识别潜在的回归修复提交,(2)在历史上迁移测试及其代码依赖关系,以及(3)最大限度地减少回归搜索期间的编译开销。我们构建了我们的工具RegMiner,它在3周内收集了66个项目的537个回归数据,在最短的时间内创建了最大的可复制回归数据集。此外,我们对回归数据集的实证研究表明,流行的回归故障定位技术(例如,delta-debugging)和真正的修复之间存在差距,揭示了新的数据驱动的研究机会。
2022-07-04 cs.SE
Aligning Programming Language and Natural Language: Exploring Design Choices in Multi-Modal Transformer-Based Embedding for Bug Localization
University of Waterloo(滑铁卢大学)
该研究评估了14个嵌入模型在缺陷定位中的设计选择,发现预训练策略和模型对数据的熟悉程度显著影响嵌入质量与定位性能,且跨项目数据会导致性能大幅波动。
2024-06-25 cs.AI cs.LG cs.SE
When Fuzzing Meets LLMs: Challenges and Opportunities
School of Software, Tsinghua University(清华大学软件学院);National University of Defense Technology(国防科技大学)
本文识别了LLM辅助模糊测试面临的五大挑战,并基于顶级会议论文验证其普遍性,进而提出可操作建议并在DBMS模糊测试中初步验证了其有效性。
2024-04-25 cs.AI cs.SE
Learning how to listen: Automatically finding bug patterns in event-driven JavaScript APIs
事件驱动编程在JavaScript社区中得到了广泛的实践,在客户端处理UI事件和AJAX请求,在服务器端处理文件或网络I/O等长时间运行的操作。许多流行的基于事件的API允许将事件名称指定为自由格式的字符串而不进行任何验证,这可能导致未注册侦听器的事件丢失,以及从未发出的事件的死侦听器。在以前的工作中,Madsen等人提出了一种用于检测此类问题的精确静态分析,但他们的分析无法扩展,因为它可能需要大量的上下文,这些上下文在程序大小上是指数级的。集中在检测死侦听器的问题,我们提出了一种方法来学习如何正确使用基于事件的API,首先使用一个简单的静态分析挖掘一个大型的JavaScript代码语料库,以识别注册事件侦听器的代码片段,然后应用统计建模来识别异常模式,这往往表明不正确的API使用。通过对127,531个开源JavaScript代码库的大规模评估,我们的技术能够检测到75个异常标记注册模式,同时在我们的验证集上保持90.9%的精度和7.5%的召回率,这表明基于学习的方法来检测事件处理错误是可行的。在另一个实验中,我们调查了25个开源项目中这些模式的实例,并向项目维护人员报告了30个问题,其中7个已被确认为bug。
2022-02-11 cs.SE
Explaining Software Bugs Leveraging Code Structures in Neural Machine Translation
提出基于transformer的生成模型Bugsplainer,利用源代码结构信息和缺陷模式自动生成软件缺陷的自然语言解释,评估与开发者研究表明其优于多个基线。
2025-01-28 cs.SE
One Bug, Hundreds Behind: LLMs for Large-Scale Bug Discovery
IBM Research(IBM研究院);William & Mary(威廉与玛丽大学)
本文针对大型程序中反复出现但未解决的重复模式Bug,提出基于LLVM和LLM的BugStone系统,利用已修补实例识别错误模式,在Linux内核中发现大量新问题,并构建数据集验证其高效性。
2025-10-15 cs.AI cs.SE
CMind: An AI Agent for Localizing C Memory Bugs
University of Notre Dame(圣母大学)
CMind通过模拟人类程序员行为,利用大语言模型和引导决策方法,定位C程序中的内存错误。
2026-02-20 cs.SE
Repairing Deep Neural Networks: Fix Patterns and Challenges
对应用深度神经网络(DNN)的浓厚兴趣推动了支持使用DNN的软件工程的需求。修复使用DNN的软件是一个明确无误的SE需求,自动化工具可能是有益的;然而,我们并不完全了解修复的挑战和手动修复DNN时使用的模式。自动化修复工具应该解决哪些挑战?哪些修复模式的自动化可以帮助开发人员?在构建自动化bug修复工具时,哪些修复模式应该被赋予更高的优先级?这项工作提出了一个全面的研究错误修复模式,以解决这些问题。我们已经研究了来自Stack overflow的415个修复和来自Github的555个修复,用于五个流行的深度学习库Caffe,Keras,Tensorflow,Theano和Torch,以了解修复和错误修复模式的挑战。我们的主要发现表明,DNN错误修复模式与传统的错误修复模式相比是独特的;最常见的错误修复模式是修复数据维度和神经网络连接; DNN错误修复有可能引入对抗性漏洞; DNN错误修复经常引入新的错误; DNN bug本地化、训练模型的重用以及应对频繁发布是开发人员在修复bug时面临的主要挑战。我们还提供了667个DNN(bug,repair)实例的基准测试。
2020-05-03 cs.SE
Finding Missed Code Size Optimizations in Compilers using LLMs
Meta;FAIR at Meta(Meta FAIR研究院)
本文提出一种结合LLM与差分测试的简单方法,用于发现C/C++、Rust和Swift编译器中遗漏的代码大小优化,已报告24个已确认缺陷。
2024-12-31 cs.LG cs.PL cs.SE
Diff-Based Code Corruption using LLMs for Large-Scale Bugfix Benchmarking
Eötvös Loránd University(罗兰大学);Faculty of Informatics(信息学学院)
提出MegaBugFix,一个包含12,629个由LLM通过差异生成的有缺陷Python程序的大规模基准,用于评估模型错误修复能力,发现现有模型在此基准上表现更差。
2026-07-02 cs.AI cs.SE
DeepBugs: A Learning Approach to Name-based Bug Detection
源代码中的自然语言元素,例如,变量和函数的名称传达了有用的信息。然而,大多数现有的错误检测工具忽略了这些信息,因此错过了一些类别的错误。现有的几种基于名称的错误检测方法在语法级别上对名称进行推理,并依赖于手动设计和调优的算法来检测错误。本文介绍了DeepBugs,一种基于名称的错误检测的学习方法,它基于语义表示来推理名称,并自动学习错误检测器,而不是手动编写它们。我们制定了一个二进制分类问题的缺陷检测和训练分类器,区分正确的不正确的代码。为了解决有效学习bug检测器需要正确和不正确代码的例子的挑战,我们通过简单的代码转换从现有的代码语料库中创建可能不正确的代码例子。从我们的工作中学到的一个新的见解是,从人工播种的bug中学习可以产生bug检测器,这些bug检测器可以有效地发现真实代码中的bug。我们实现我们的想法到一个框架,学习为基础的和基于名称的错误检测。在框架之上构建的三个错误检测器检测意外交换的函数参数,不正确的二元运算符和二元运算中不正确的操作数。将该方法应用于150,000个JavaScript文件的语料库,产生具有高准确性(89%至95%之间)的错误检测器,非常有效(每个分析文件不到20毫秒),并在真实代码中揭示102个编程错误(68%的真阳性率)。
2018-04-30 cs.PL cs.SE
Snyk VulnBench JS 1.0: Can LLMs Find the Same Bugs Twice?
Snyk
通过300次重复漏洞扫描实验,评估LLM在相同JavaScript代码上安全审查的可重复性,发现引用匹配结果稳定但额外报告波动大,建议结合确定性SAST使用。
2026-06-16 cs.AI cs.CR cs.SE
LineBreaker: Finding Token-Inconsistency Bugs with Large Language Models
Indiana University Bloomington(印第安纳大学布鲁明顿分校);San Diego State University(圣地亚哥州立大学);The Hong Kong University of Science and Technology(香港科技大学);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Tsinghua University(清华大学);Nanyang Technological University(南洋理工大学)
本文提出级联TIB检测系统\ ame,利用小型高效代码语言模型过滤无关代码,结合GPT-4的语义理解能力,在154个GitHub仓库中发现123个新缺陷,显著提升了Token不一致性漏洞检测的精确度、召回率和可扩展性。
2025-10-12 cs.CR cs.SE
Characterizing and Mitigating False-Positive Bug Reports in the Linux Kernel
School of Computer Software, Tianjin University(天津大学计算机科学与技术学院);School of Artificial Intelligence, Tianjin University(天津大学人工智能学院)
本文研究Linux内核中虚假正例缺陷报告的问题,通过构建2006份报告数据集,发现虚假正例需与真实缺陷同等努力,主要出现在文件系统和驱动程序中,采用RAG策略可实现91%召回率和88%F1分数。
2026-05-08 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
Fixing 7,400 Bugs for 1$: Cheap Crash-Site Program Repair
本文提出崩溃点修复和模板引导补丁生成方法,实现低成本自动程序修复,结合CodeRover-S将令牌成本降低45.9%,修复率提升至73.5%,并支持本地模型运行。
2025-05-24 cs.CR cs.SE
Bug In the Code Stack: Can LLMs Find Bugs in Large Python Code Stacks
University of Waterloo(滑铁卢大学)
本研究提出评估LLM在大型Python代码栈中识别简单语法Bug能力的BICS基准,发现代码环境检索难度高于文本环境,不同模型性能差异大,且上下文越长性能普遍越差。
2024-06-21 cs.AI cs.SE
Bugs in Large Language Models Generated Code: An Empirical Study
Polytechnique Montréal(蒙特利尔理工学院)
本研究通过分析333个来自主流LLM的代码缺陷,识别出10种缺陷模式,并通过调查验证,为提升LLM生成代码质量提供指导。
2024-03-18 cs.AI cs.SE