An Approach to Detecting Bugs in Pattern-Based Bug Detectors
静态bug查找器已被开发人员广泛采用,以查找真实世界软件项目中的bug。它们利用预定义的启发式静态分析规则来扫描软件项目的源代码或二进制代码,并将违反这些规则的情况报告为要验证的警告。然而,静态错误查找器的优点是掩盖了这样的问题,如发现明显的错误,误报等,以改善这些工具,已经提出了许多技术来过滤误报报告或设计新的静态分析规则。尽管如此,bug查找器的性能不佳也可能是由静态bug查找器中包含的当前规则的不正确引起的,这还没有被探索。在这项工作中,我们提出了一种差分测试方法来检测四个广泛使用的静态错误发现器,即,为了在不同的静态bug查找工具中检索成对的规则以进行差异测试,本文设计了一种基于统计学的规则映射方法,该方法结合了规则描述的相似性和工具报告的警告信息的重叠性。在2,728个开源项目上的实验中,静态bug发现器发现了46个bug,其中24个已经修复或确认,剩下的有待确认。我们还总结了13个错误模式的静态分析规则的基础上,他们的上下文和根本原因,这可以作为设计和实现其他规则和/或在其他工具的检查表。这项研究表明,常用的静态错误查找器并不像他们想象的那样可靠。它不仅证明了我们的方法的有效性,而且还强调了需要继续提高静态bug查找器的可靠性。
2021-12-22 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
Validating Static Warnings via Testing Code Fragments
静态分析是发现软件缺陷和漏洞的重要方法。然而,检查和确认静态警告是具有挑战性和耗时的。在本文中,我们提出了一种新的解决方案,自动生成测试用例的基础上,静态警告,以验证真和假阳性。我们设计了一个语法修补算法,可以从静态警告中生成语法有效、语义保持的可执行代码片段。我们开发了一个构建和测试系统,使用模糊器,KLEE和Valgrind自动测试代码片段。我们使用12个真实的C项目和1955个来自两个商业静态分析工具的警告来评估我们的技术。我们成功构建了68.5%的代码片段并生成了1003个测试用例。通过自动测试,我们确定了48个真阳性和27个假阳性,以及205个可能的假阳性。我们使用Helium匹配了4个CVE和真实世界的bug,它们只由我们的工具触发,而不是其他基线工具。我们发现,测试代码片段是可伸缩的和有用的;它可以触发测试整个程序或测试过程未能触发的错误。
2021-06-28 cs.SE
Comparing Bug Finding Tools with Reviews and Tests
缺陷发现工具可以使用自动化的静态分析来发现软件源代码中的缺陷。这种自动化可能能够减少其他测试和审查活动所花费的时间。为此,我们需要清楚地了解缺陷发现工具发现的缺陷与其他技术发现的缺陷之间的关系。本文介绍了一个案例研究,主要是从一个工业环境,用于分析的相互关系,使用几个项目。主要的发现是,错误发现工具主要发现与测试不同的缺陷,但通过评审发现的缺陷的子集。然而,可以检测到的类型进行了更彻底的分析。因此,如果可以容忍这些工具的大量误报,则最建议进行组合。
2017-11-14 cs.PL cs.SE
Better Security Bug Report Classification via Hyperparameter Optimization
当发现安全漏洞时,应(a)~由安全软件工程师私下讨论;(b)~在安全补丁可用之前不向公众提及。软件工程师通常会向缺陷跟踪系统报告缺陷,并将其标记为安全缺陷报告(SBR)或非安全缺陷报告(NSBRs),而安全缺陷报告比非安全缺陷报告具有更高的被修复优先级。然而,可疑的安全漏洞报告经常被公开披露,因为错误标签问题(即,错误地将安全错误报告标记为非安全错误报告)。本文的目标是帮助软件开发人员更好地分类错误报告,识别安全漏洞作为安全错误报告,通过学习器和数据预处理器的参数调整。以前的工作已经应用了文本分析和机器学习学习器来分类哪些报告的错误与安全相关。我们对这一工作进行了改进,正如我们对五个开源项目的分析所示。我们将超参数优化应用于(a)学习器的控制参数;以及(b)处理目标类是所有数据的一小部分的情况的数据预处理方法。我们表明,优化的预处理器是更有用的比优化的学习者。我们还表明,从我们的方法获得的改进可以是非常大的。例如,使用与我们的基线方法最近分析的相同的数据集,我们表明,调整数据预处理可以使分类召回率提高35%至65%(中位数至最大值),并适度增加假阳性率。
2019-05-16 cs.SE
Bug Severity Prediction in Software Projects Using Supervised Machine Learning Models
Daffodil International University(达福迪尔国际大学)
本研究利用监督机器学习模型,通过Eclipse Bugzilla的历史数据预测缺陷严重性,发现集成树方法和DistilBERT在准确性上表现最佳,线性模型在召回率上更优,为自动化缺陷分拣提供了有效方法。
2026-01-09 cs.LG cs.SE
Understanding Static Code Warnings: an Incremental AI Approach
基于知识的系统对一些知识库进行推理。因此,这样的系统的一个重要问题是如何获得他们的推理所需的知识。本文评估了获取“静态代码警告”知识的主动学习方法。静态代码分析是一种广泛使用的检测软件系统中的错误和安全漏洞的方法。随着软件变得越来越复杂,分析工具也会报告开发人员每天需要解决的越来越复杂的警告列表。这样的静态代码分析工具通常过于谨慎;也就是说,它们经常提供许多关于虚假问题的警告。以前的研究工作表明,SA工具报告的错误中约有35%到91%的警告实际上是不可操作的(即,开发人员不会采取行动的警告,因为它们被错误地建议为bug)。有经验的开发人员知道哪些错误是重要的,哪些可以安全地忽略。我们如何捕捉这种体验?本文报告了一个增量AI工具,它可以观察人类阅读误报报告。使用增量支持向量机机制,这个AI工具可以快速学习区分虚假的假警报和值得进一步关注的更严重的问题。在这项工作中,九个开源项目被用来评估我们提出的模型对以前的研究人员提取的特征,并确定我们的算法给出的优先级顺序的可操作的警告。我们观察到,当我们的方法告诉人类忽略70%到80%的警告时,我们的模型可以识别超过90%的可操作警告。
2020-10-22 cs.SE
Are Sparse Autoencoders Useful for Java Function Bug Detection?
本文探讨了稀疏自编码器在Java函数Bug检测中的有效性,通过GPT-2 Small和Gemma 2B的表示进行评估,发现SAE衍生特征在无需微调的情况下可达到89%的F1分数,优于传统基线模型。
2026-04-08 cs.AI cs.LG cs.SE
How good does a Defect Predictor need to be to guide Search-Based Software Testing?
缺陷预测器、静态缺陷检测器和检查代码的人员可以在通过测试发现程序中有缺陷的部分之前找到它们。诸如基于搜索的软件测试(SBST)技术之类的自动测试生成器可以使用该信息来将它们对测试用例的搜索引导到可能存在错误的代码,从而加速检测现有错误的过程。然而,这些工具或人类给出的预测往往是不精确的,这可能会误导SBST技术,并可能降低其性能。在本文中,我们研究了缺陷预测的不精确性对SBST缺陷检测有效性的影响。我们的研究发现,召回的缺陷预测,即,正确识别错误代码的概率对SBST的错误检测有效性有显著影响,且效应量较大。另一方面,精确度的影响,一个衡量假警报,是没有实际意义的一个非常小的效果大小所示。特别是,SBST技术发现7.5个错误平均减少每5%的召回(420个错误)。在结合缺陷预测和SBST的背景下,我们的建议是在牺牲精度的情况下增加缺陷预测器的召回率,同时保持至少75%的精度。考虑到缺陷预测器的不精确性,特别是低召回值,SBST技术应该被设计为搜索测试用例,这些测试用例也覆盖了程序中预测的非错误部分,同时优先考虑被预测为错误的部分。
2021-10-06 cs.SE
Automatic Issue Classifier: A Transfer Learning Framework for Classifying Issue Reports
North Dakota State University(北达科他州立大学)
问题跟踪系统在软件行业中用于促进维护活动,使软件保持健壮并与不断变化的行业需求保持同步。通常,用户报告的问题可以分为不同的标签,如错误报告,增强请求和与软件相关的问题。大多数问题跟踪系统使这些问题报告的标签对于问题子目录是可选的,这导致大量未标记的问题报告。在本文中,我们提出了一个国家的最先进的方法来分类的问题报告到各自的类别,即错误,增强和问题。这是一项具有挑战性的任务,因为问题报告中普遍使用非正式语言。现有的研究使用传统的自然语言处理方法,采用基于关键词的特征,这不能纳入词之间的上下文关系,因此导致高误报率和误报率。此外,以前的作品利用单标签的方法来分类的问题报告,但在现实中,一个问题的主题可以标记一个问题报告与多个标签的时间。本文介绍了我们的方法来分类的问题报告在多标签设置。我们使用一个现成的神经网络,称为RoberTa和微调它分类的问题报告。我们在GitHub上的许多工业项目的问题报告中验证了我们的方法。对于bug报告、增强和问题,我们分别获得了81%、74%和80%的F-1分数。我们还开发了一个名为自动问题分类器(AIC)的行业工具,它可以自动为GitHub存储库上新报告的问题分配高准确性的标签。
2022-02-12 cs.LG cs.SE
D2A: A Dataset Built for AI-Based Vulnerability Detection Methods Using Differential Analysis
IBM Research(IBM研究院)
静态分析工具被广泛用于漏洞检测,因为它们理解具有复杂行为和数百万行代码的程序。尽管静态分析工具很受欢迎,但已知它们会产生过多的误报。最近机器学习模型理解程序设计语言的能力在应用于静态分析时开辟了新的可能性。然而,现有的数据集训练模型的弱点识别遭受多重限制,如有限的错误上下文,有限的大小,合成和不切实际的源代码。我们提出了D2A,一个基于差异分析的方法来标记由静态分析工具报告的问题。D2A数据集是通过分析来自多个开源项目的版本对构建的。从每个项目中,我们选择bug修复提交,并对提交前后的版本运行静态分析。如果在提交前版本中检测到的一些问题在相应的提交后版本中消失了,那么它们很可能是真正的bug,并通过提交得到了修复。我们使用D2A生成一个大的标记数据集来训练模型进行漏洞识别。我们表明,该数据集可用于构建分类器,以识别静态分析报告的问题中可能的误报,从而帮助开发人员优先考虑和调查潜在的真阳性。
2021-02-16 cs.AI cs.LG cs.SE
Integrated Reasoning Engine for Pointer-related Code Clone Detection
检测相似的代码片段(通常称为代码克隆)是一项重要的任务。特别是,代码克隆检测可以在漏洞发现、重构和剽窃检测的上下文中具有重要用途。但是,误报是不可避免的,并且始终需要手动审查。在本文中,我们提出了Twin-Twin+,一种新的闭环方法,用于指针相关的代码克隆检测,集成了机器学习和符号执行技术,以实现精度。Twin-Tools+引入了一种形式化验证机制,以自动执行此类手动评审过程。我们的实验结果表明,Twin-Twin+可以消除平均91.69%的假阳性。我们进一步使用真实世界的应用程序,链接版本2.14和libreOffice-6.0.0.1进行内存安全性分析。Twin-Build+在Links 2.14版本中发现了6个未报告的bug,在libreOffice-6.0.0.1中发现了一个公开修补的bug。
2021-02-24 cs.SE
Reflective Unit Test Generation for Precise Type Error Detection with Large Language Models
针对Python类型错误检测误报率高、测试生成难揭示缺陷的问题,提出结合类型约束分析与反思验证的RTED技术,在基准测试上优于现有方法,还发现了真实项目中的未知类型错误。
2025-10-02 cs.SE
Deploying Static Analysis
静态源代码分析是一个强大的工具,可以在正确部署的情况下发现和修复bug;然而,很容易以一种表面上看起来很好的方式部署它,但它会遗漏重要的缺陷,显示出许多误报,并使该工具声名狼借。本文是在大型组织中部署静态分析工具的过程指南,同时避免最糟糕的组织和技术陷阱。我的主要观点是专注于修复bug的主要目标的重要性,而不是在这个过程中出现的所有竞争性较小的目标。
2022-02-24 cs.SE
DeepFWI: Identifying Bug-Sensitive Warnings with Multi-Modal Code-Warning Semantics
Nankai University(南开大学);Beihang University(北京航空航天大学);Nanyang Technological University(南洋理工大学);Shanghai Jiaotong University(上海交通大学);Singapore Institute of Technology(新加坡科技工程研究学院);East China Normal University(华东师范大学);Xidian University(西安电子科技大学)
本文提出 DeepFWI,通过多模态语义学习识别细粒度的 bug 敏感警告,采用 LSTM 模型捕捉代码与警告的关联,实验表明其在 F1-score 上优于基线方法。
2026-04-21 cs.SE
LLM-Guided Issue Generation from Uncovered Code Segments
Concordia University(康考迪亚大学)
本文提出IssueSpecter工具,通过结合代码覆盖分析与大语言模型缺陷识别,生成优先级高的问题报告,验证其在Python项目中有效检测多种类型漏洞,且比传统方法在准确率和召回率上表现更优。
2026-04-28 cs.SE
ACWRecommender: A Tool for Validating Actionable Warnings with Weak Supervision
本文针对静态分析工具高误报问题,挖掘GitHub C仓库回退数据构建弱标签数据集,提出两阶段框架ACWRecommender,利用UniXcoder和弱监督学习识别并推荐高概率真实缺陷的可操作警告,实验证明其在检测和推荐上均优于基线。
2023-09-18 cs.SE
Actionable Warning Is Not Enough: Recommending Valid Actionable Warnings with Weak Supervision
The State Key Laboratory of Blockchain and Data Security, Zhejiang University(浙江大学区块链与数据安全国家重点实验室);Shanghai Institute for Advanced Study, Zhejiang University(浙江大学上海高等研究院);Huawei(华为)
针对静态分析工具可操作警告存在大量无效项的问题,通过构建大型数据集并提出两阶段框架ACWRecommender,实现对真实漏洞可操作警告的精准推荐,实验与实际应用验证了其有效性。
2025-11-15 cs.SE
Twin-Finder: Integrated Reasoning Engine for Pointer-related Code Clone Detection
The George Washington University(乔治·华盛顿大学)
检测代码克隆在各种软件工程任务中至关重要。特别地,代码克隆检测在分析和修复大规模应用程序中的错误的上下文中可以具有重要用途。然而,先前的工作,例如基于机器学习的克隆检测,可能导致相当数量的误报。在本文中,我们提出了双循环,一种新的,闭环的指针相关的代码克隆检测方法,集成了机器学习和符号执行技术,以达到精度。Twin-Twin引入了克隆验证机制来形式化验证两个克隆样本是否确实是克隆,并引入了反馈循环来自动生成形式化规则,以调整机器学习算法并进一步减少误报。我们的实验结果表明,双胞胎可以快速识别高达9倍以上的代码克隆相比,基于树的克隆检测器,Deckard和消除平均91.69%的误报。
2020-09-21 cs.LG cs.PL cs.SE
PR-SZZ: How pull requests can support the tracing of defects in software repositories
SZZ算法代表了一种标准的方法来识别bug修复提交以及诱导对应提交。它构成了许多实证研究中使用的数据集的基础。自创建以来,已提出多个扩展以提高其性能。由于历史原因,相关的工作依赖于提交消息来将错误票据映射到可能相关的代码,而没有额外的数据用于跟踪这些修复引起的提交。因此,我们提出了一个更新版本的SZZ利用拉请求,这是广泛采用的今天。我们评估我们的方法相比,现有的SZZ变种进行实验和分析使用的拉请求,内部提交,合并策略。我们的结果基于6个开源项目,超过50k提交和35k拉取请求。关于bug修复提交,平均18%的bug票据可以额外映射到修复提交,导致整体F分数为0.75,提高了40个百分点。通过选择诱导提交,我们设法减少了误报,并与现有方法相比平均提高了16个百分点的精度。
2022-06-20 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
Just-in-Time Catching Test Generation at Meta
Meta Platforms(Meta平台)
元宇宙设计即时捕捉测试生成技术,通过代码变更感知方法提高测试效率,减少假阳性,防止严重故障进入生产。
2026-01-30 cs.AI cs.SE
The Hitchhiker's Guide to Program Analysis, Part III: Mostly Harmless LLMs
University of California, Riverside(加州大学河滨分校);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Indiana University Bloomington(印第安纳大学布鲁明顿分校)
提出Evident系统,将LLM用于构建分析框架,后端形式化验证错误状态不可达,在151个真实警告中正确分类,未漏报任何确认漏洞。
2026-10-22 cs.SE
Using LLMs to Adjudicate Static-Analysis Alerts with Error Reduction Techniques
Carnegie Mellon Univ.(卡内基梅隆大学)
研究用大语言模型判定静态分析警报,采用一致性检查和LLM推理评估两种方法,在三个测试套件上评估多个LLMs,中级推理LLMs经错误缓解后召回率和特异性高,还探讨了相关问题及合成程序作为证据的结果。
2026-07-14 cs.SE
DIRT: Database-Integrated Random Testing
University of Maryland, College Park(马里兰大学帕克分校);University of Buffalo(布法罗大学)
DIRT是一种针对数据库开发阶段设计的测试方法,通过将测试框架集成到DBMS中,实现测试过程与系统同步发展,减少误报,提升测试效果。
2026-03-23 cs.DB cs.SE
SmellBench: Evaluating LLM Agents on Architectural Code Smell Repair
University of Craiova(克劳索瓦大学);NVIDIA(NVIDIA公司);University Politehnica of Bucharest(布加勒斯特理工大学)
本文提出SmellBench框架,用于评估LLM代理在修复建筑代码异味方面的性能,通过专家验证发现最佳代理修复率为47.7%,但修复 aggressiveness 与代码库质量呈负相关。
2026-05-12 cs.CL cs.SE
A Zero-Positive Learning Approach for Diagnosing Software Performance Regressions
机器编程(MP)领域,软件开发的自动化,正在取得显着的研究进展。这在一定程度上是由于机器学习中出现了各种各样的新技术。本文将MP应用于软件性能回归测试的自动化。性能退化是由代码更改引起的软件性能下降。我们提出了AutoPerf -一种自动化回归测试的新方法,它利用了三种核心技术:(i)零正学习,(ii)自动编码器和(iii)硬件遥测。我们证明了AutoPerf的通用性和有效性,对3种类型的性能回归在7个基准测试和开放源程序的10个真正的性能错误。平均而言,AutoPerf表现出4%的性能分析开销,并准确诊断出比现有最先进的方法更多的性能错误。到目前为止,AutoPerf没有产生假阴性。
2020-01-01 cs.NE cs.PF cs.SE
FalseCrashReducer: Mitigating False Positive Crashes in OSS-Fuzz-Gen Using Agentic AI
针对自动生成的模糊测试驱动程序易引发误报崩溃的问题,本文提出基于约束的驱动生成和基于上下文的崩溃验证两种AI策略,在OSS-Fuzz基准上显著减少误报,验证了大语言模型作为程序分析智能体的可行性。
2025-10-02 cs.CR cs.MA cs.SE
SNIPTEST: Fuzzing Multi-Level Code Slices for Validating Vulnerabilities
University of Calgary(卡尔加里大学);David R. Cheriton School of Computer Science, University of Waterloo(滑铁卢大学大卫·R·切里顿计算机科学学院)
SNIPTEST是一种基于执行的警告分类框架,通过分层切片策略生成并模糊测试代码切片,在97个真实漏洞和97个误报的基准中取得良好效果,还识别出CVE-2025-11964。
2026-08-19 cs.SE
KNighter: Transforming Static Analysis with LLM-Synthesized Checkers
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Zhejiang University(浙江大学);Shanghai Jiao Tong University(上海交通大学)
针对静态分析工具开发难、LLM直接扫描大型系统不现实的问题,提出KNighter方法,利用LLM基于历史漏洞模式合成专用静态检查器,经多阶段验证优化,在Linux内核中发现大量长期潜伏的关键漏洞,建立了可扩展的LLM静态分析新范式。
2025-09-03 cs.AI cs.CR cs.OS
FuzzSlice: Pruning False Positives in Static Analysis Warnings Through Function-Level Fuzzing
FuzzSlice通过函数级代码切片与模糊测试,自动剪除静态分析警告中的误报,在Juliet数据集和开源项目中分别减少100%和62.26%的误报。
2024-02-02 cs.CR cs.SE
A Static Analysis Platform for Investigating Security Trends in Repositories
提出一个集成多种静态分析工具的分析平台,支持基于Git的代码仓库跨版本历史持续监控警告,并通过仪表板展示安全趋势与热点,同时可生成适用于机器学习的大规模安全警报数据库。
2023-04-04 cs.SE
A Study of Static Warning Cascading Tools (Experience Paper)
针对静态分析跨版本告警冗余问题,研究扩展三类程序差异工具实现自动告警级联,通过基准程序与开源项目评估,总结各方法优劣并公开工具数据。
2023-05-04 cs.SE
Are automated static analysis tools worth it? An investigation into relative warning density and external software quality
自动化静态分析工具(ASAT)是软件开发最佳实践的一部分。ASAT能够警告开发人员代码中的潜在问题。一方面,反卫星技术是基于最佳做法,因此对软件质量应该有明显的影响。另一方面,ASAT遭受误报警告,开发人员必须检查这些警告,然后忽略或标记为无效。在本文中,我们使用PMD for Java的例子来询问ASAT是否对外部软件质量有可测量的影响。我们调查了PMD对每个更改和每个文件的缺陷发出的ASAT警告之间的关系。我们的案例研究包括每个文件的历史数据以及更改的文件与包含它们的项目之间的差异。我们调查导致缺陷的文件是否比项目的其余部分具有更多的静态分析警告。此外,我们调查的影响,两套不同的反卫星武器规则。我们发现,在那个时间点,bug诱导文件包含的静态分析警告比项目的其他文件少。然而,这可以用整体警报密度下降来解释。当与所有其他的变化相比,我们发现一个统计上显着的差异,在一个指标的所有规则和两个指标的一个子集的规则。然而,在所有情况下,效果大小都可以忽略不计,这表明bug诱导更改和其他更改之间的警告密度的实际差异充其量也很小。
2021-11-18 cs.SE
Less, but Stronger: On the Value of Strong Heuristics in Semi-supervised Learning for Software Analytics
North Carolina State University(北卡罗来纳州立大学)
在许多领域中,有许多示例,而这些示例的标签却少得多;例如,我们可以访问数百万行源代码,但只能访问有关该代码的少数警告。在这些领域中,半监督学习器(SSL)可以将标签从少量示例外推到其余数据。标准SSL算法使用“弱”知识(即那些不基于特定SE知识的知识),例如(例如)共同训练两个学习器,并使用一个学习器的良好标签来训练另一个学习器。SSL在软件分析中的另一种方法是潜在地使用使用SE知识的“强”知识。例如,SE中经常使用的启发式方法是,异常大的工件包含不期望的属性(例如,更多的bug)。本文认为,这样的“强”算法比那些标准的,较弱的,SSL算法的性能更好。我们通过从使用弱SSL或我们的“更强”FRUGAL算法生成的标签中学习模型来证明这一点。在四个领域(区分与安全相关的错误报告;减轻决策中的偏见;预测问题关闭时间;以及(减少静态代码警告中的错误警报),FRUGAL只需要标记2.5%的数据,但性能优于依赖于(例如)的标准半监督学习器。一些独立于领域的图论概念。因此,对于未来的工作,我们强烈建议使用强大的算法来进行SE应用程序的半监督学习。为了更好地支持其他研究人员,我们的脚本和数据在https://github.com/HuyTu7/FRUGAL上在线。
2023-02-03 cs.AI cs.SE
Static Code Analysis in the AI Era: An In-depth Exploration of the Concept, Function, and Potential of Intelligent Code Analysis Agents
针对软件质量保证中传统方法处理复杂逻辑的不足,本文提出结合大语言模型的智能代码分析智能体(ICAA),显著降低误报率至66%并提升召回率,展现变革潜力。
2023-10-13 cs.SE
CASCADE: Detecting Inconsistencies between Code and Documentation with Automatic Test Generation
Humboldt-Universität zu Berlin(柏林洪堡大学);XBOW
CASCADE利用大语言模型生成单元测试,通过代码与文档生成的测试结果对比,检测代码与文档不一致问题,验证其在真实代码库中的有效性与精度。
2026-04-21 cs.SE
GPTScan: Detecting Logic Vulnerabilities in Smart Contracts by Combining GPT with Program Analysis
Nanyang Technological University(南洋理工大学);MetaTrust Labs(MetaTrust实验室);East China Normal University(华东师范大学);Xi’an Jiaotong University(西安交通大学);Singapore Management University(新加坡管理大学)
本文提出GPTScan,将GPT作为代码理解工具与静态分析结合,通过场景-属性匹配和静态确认检测智能合约逻辑漏洞,在保持高精确率和召回率的同时实现快速低成本的审计。
2024-05-06 cs.AI cs.CR cs.SE