Using Multiple Code Representations to Prioritize Static Analysis Warnings
为了保证软件的质量和防止黑客对关键系统的攻击,经常使用静态分析工具来检测早期开发阶段的漏洞。然而,这些工具通常会报告大量的警告,误报率很高,这给开发人员带来了许多困难。在本文中,我们介绍VulRG,一种新的方法来解决这个问题。具体来说,VulRG根据警告成为真正正面的可能性进行预测和排名。为了预测这种可能性,VulRG结合了两个深度学习模型CNN和BiGRU,以捕获每个警告的程序语法,控制流和程序依赖性的上下文。我们在6,620个警告的真实数据集上的实验结果显示,VulRG的前50%召回率为90.9%。这意味着使用VulRG,90%的漏洞可以通过检查50%的警告来发现。此外,在Top-5%,VulRG可以在精度和召回率方面将最先进的方法提高+30%。
2022-09-27 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
A Longitudinal Study of Static Analysis Warning Evolution and the Effects of PMD on Software Quality in Apache Open Source Projects
自动化静态分析工具(ASAT)已经成为软件开发工作流程的主要部分。根据生成的警告,即,更改警告中指示的代码,最迟应该是代码评审阶段的一部分。尽管这是软件开发中的最佳做法,但仍缺乏关于反卫星武器在野外使用的实证研究。在这项工作中,我们希望通过PMD作为ASAT及其在开源项目中的使用的例子来研究软件中的ASAT警告趋势。我们分析了54个项目的提交历史(总共112,266次提交),考虑了193个PMD规则和61个PMD版本。我们调查的趋势,反卫星武器警告超过17年的选定的研究对象有关的变化,警告类型,反卫星武器的使用的短期和长期的影响,并在警告的严重程度的变化。我们发现,ASAT警告的大规模全球变化主要是由于大括号和命名约定的编码风格变化。我们还发现,令人惊讶的是,项目构建过程中PMD的存在对每行代码中警告数量的警告删除趋势的影响很小,并且在统计上不显着。无论如何,如果我们考虑缺陷密度作为外部质量的代表,如果PMD存在于我们研究对象的构建配置中,我们会看到积极的影响。
2020-08-27 cs.SE
Quieting the Static: A Study of Static Analysis Alert Suppressions
本研究通过分析1,425个Java项目,揭示了静态分析警告抑制的使用模式,发现误报占比小但技术债务显著,强调需改进工具沟通与教育以提升静态分析有效性。
2023-11-13 cs.SE
How to Find Actionable Static Analysis Warnings: A Case Study with FindBugs
North Carolina State University(北卡罗来纳州立大学);Singapore Management University(新加坡管理大学);Meta Platforms, Inc.(Meta平台公司)
自动生成的静态代码警告遭受大量的错误警报。因此,开发人员只对这些警告中的一小部分采取行动。为了更好地预测哪些静态代码警告不应该被忽略,我们建议分析师需要更深入地研究他们的算法,以找到更好地改善特定问题细节的选择。具体来说,我们在这里表明,有效的预测,这样的警告,可以创建本地调整的决策边界(之间的可操作的警告和其他)的方法。这些方法为识别可操作的静态代码警告提供了一个新的高水印。对于八个开源Java项目(cassandra,jmeter,commons,lucene-solr,maven,ant,tomcat,derby),我们在4/8个数据集上获得了完美的测试结果,总体而言,AUC(真阴性,真阳性曲线下面积)的中位数为92%。
2022-12-23 cs.LG cs.SE
Assessing Validity of Static Analysis Warnings using Ensemble Learning
Cisco Systems(思科系统公司)
静态分析(SA)工具用于识别代码中的潜在弱点,并在代码开发过程中提前修复这些弱点。在具有高复杂性的遗留代码库中,这些基于规则的静态分析工具通常会在报告实际警告的同时报告大量错误警告。尽管SA工具发现了许多隐藏的错误,但它们被大量的虚假警告所掩盖。开发人员花费大量的时间和精力来识别真正的警告。除了影响开发人员的生产力外,由于这一挑战,真正的bug也会被遗漏。为了解决这个问题,我们提出了一个基于机器学习(ML)的学习过程,该过程使用源代码、历史提交数据和分类器集成来优先考虑给定警告列表中的True警告。该工具集成到开发工作流中,以过滤掉错误警告并优先考虑实际错误。我们评估了我们的方法对网络C代码,从一个大的数据池的静态分析警告报告的工具。开发人员会不时地处理这些警告,将其标记为真实的bug或假警报。ML模型在对代码功能进行全面监督的情况下进行训练。我们的研究结果证实,在传统的静态分析报告中应用深度学习是一种可以大幅降低误报率的可靠方法。
2021-04-21 cs.LG cs.SE
CodeCureAgent: Automatic Classification and Repair of Static Analysis Warnings
CISPA Helmholtz Center for Information Security(CISPA赫尔姆霍兹信息安全中心)
本文提出CodeCureAgent,利用大语言模型代理自动分析、分类和修复静态分析警告,通过三步启发式方法生成合理修复方案,有效提升代码质量。
2026-04-13 cs.MA cs.SE
Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?
自动静态分析工具(ASAT),如Findbugs,具有很高的误报率。产生的大量假警报对采用构成了障碍。研究人员已经提出使用机器学习来修剪错误警报,并仅向开发人员提供可操作的警告。这项最先进的研究已经确定了一组“黄金特性”,这些特性是基于对文件、代码和警告的特征和历史记录计算的度量标准。最近的研究表明,使用这些特征的机器学习非常有效,并且它们几乎达到了完美的性能。我们进行了详细的分析,以更好地了解“黄金特性”的强劲表现。我们发现,有几项研究使用了一种实验程序,导致数据泄漏和数据重复,这是具有重大意义的微妙问题。首先,地面事实标签已经泄露到测量给定上下文中可操作警告比例的功能中。其次,测试数据集中的许多警告出现在训练数据集中。接下来,我们展示了确定地面实况标签的警告预言中的局限性,这是一种将给定版本中的警告与未来的参考版本进行比较的启发式方法。我们发现,参考修订的选择影响的警告分布。此外,启发式产生的标签与人类的预言不一致。因此,以前看到的这些技术的强大性能是过于乐观的,如果在实践中采用它们的真实性能。我们的研究结果传达了几个教训,并提供评估虚警检测器的指导方针。
2022-02-12 cs.SE
A Large-Scale Collection Of (Non-)Actionable Static Code Analysis Reports
University of Szeged(塞格德大学);FrontEndART Ltd.(FrontEndART有限公司)
针对静态代码分析警报疲劳问题,本文提出可执行/不可执行SCA警告收集分类方法,构建了超百万条Java警告的大规模数据集NASCAR并公开,支撑相关研究。
2025-11-13 cs.SE
Automated Static Warning Identification via Path-based Semantic Representation
针对静态分析告警误报率高的问题,本文提出利用控制流图路径和微调预训练语言模型捕获代码语义,实现自动化警告识别,并在八个开源项目上验证有效性。
2023-06-27 cs.SE
At Ease with Your Warnings: The Principles of the Salutogenesis Model Applied to Automatic Static Analysis
自动运行静态分析的结果可能会让人不知所措,尤其是对于初学者。信息的泛滥以及由此产生的需要做出许多决定的情况会使人精神疲惫,并可能导致压力症状。在医疗保健领域,有几种模式旨在对抗压力。其中之一是Aaron Antonovsky创建的salutogenesis模型。在本文中,我们将提出一个想法,如何将此模型转换为一个分流和推荐模型的静态分析工具,并给出了一个例子,这可以实现在FindBugs,一个静态分析工具的Java。
2016-11-23 cs.PL 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
FuzzSlice: Pruning False Positives in Static Analysis Warnings Through Function-Level Fuzzing
FuzzSlice通过函数级代码切片与模糊测试,自动剪除静态分析警告中的误报,在Juliet数据集和开源项目中分别减少100%和62.26%的误报。
2024-02-02 cs.CR 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
What really changes when developers intend to improve their source code: a commit-level study of static metric value and static analysis warning changes
许多软件度量被设计用来度量那些被认为与软件质量相关的方面。静态软件度量,例如,规模、复杂性和耦合性被用于缺陷预测研究以及软件质量模型来评估软件质量。虽然这表明了质量和软件度量之间的关系,但它的程度还没有得到很好的理解。此外,最近的研究发现,复杂性度量可能是源代码可理解性的不可靠指标。为了探索这种关系,我们利用开发人员的意图,即什么构成了他们自己代码库的质量改进。我们通过检查提交消息,将来自54个Java开源项目的2,533个提交的随机样本手动分类为质量改进,这取决于开发人员的意图。我们通过预定义的指导方针区分完美和纠正性维护,并将这些数据用作基础事实,用于微调自然语言处理的最先进的深度学习模型。我们使用该模型将数据集增加到125,482次提交。基于由此产生的数据集,我们调查的差异大小和14静态源代码指标之间的变化,提高质量,由开发人员表示,和其他变化。我们发现,质量改善提交比其他提交更小。完美的更改对静态源代码指标有积极的影响,而纠正性更改则倾向于增加复杂性。此外,我们发现,文件的目标是完善的维护已经有一个较低的中位数比其他文件的复杂性。我们的研究结果提供了经验证据,静态源代码度量捕获质量改进从开发人员的角度来看。这对程序理解以及代码气味检测和推荐系统都有影响。
2022-05-30 cs.SE
A Critical Comparison on Six Static Analysis Tools: Detection, Agreement, and Precision
背景开发人员使用自动化静态分析工具(ASAT)来控制源代码中的潜在质量问题,包括缺陷和技术债务。工具供应商已经设计了相当多的工具,这使得从业者更难选择最适合他们需要的工具。为了更好地支持开发人员,研究人员一直在对ASAT进行一些研究,以帮助了解其实际能力。目的。尽管到目前为止已经做了很多工作,但仍然缺乏以下方面的知识:(1)哪些源质量问题实际上可以通过静态分析工具警告检测到,(2)它们的一致性如何,以及(3)它们的建议的精度如何。我们的目标是弥合这一差距,提出了一个大规模的比较六个流行的静态分析工具的Java项目:更好的代码中心,检查风格,覆盖扫描,Findbugs,PMD和SonarQube。法我们分析了47个Java项目,并得出了6个国家的实践ASAT提出的警告分类。为了评估他们的一致性,我们通过手动分析(在生产线层面)来比较他们是否发现了相同的问题。最后,我们手动评估工具的精度。结果主要结果报告了反卫星武器警告的全面分类,显示工具之间几乎没有一致性,精确度很低。结论.我们提供了一个分类法,可以是有用的研究人员,从业者和工具供应商映射的工具的当前功能。此外,我们的研究提供了不同工具之间的协议的第一个概述,以及其精度的广泛分析。
2021-01-21 cs.SE
Prioritizing Software Inspection Results using Static Profiling
静态软件检查工具作为一个附加的自动化软件检查步骤非常有用,可以很容易地集成到开发周期中,并有助于创建安全,可靠和高质量的代码。然而,这些工具的一个经常被引用的缺点是,它们生成过多的警告,包括由于近似分析技术而导致的许多误报。这种信息过载实际上限制了它们的有用性。在本文中,我们提出了ELAN,一种技术,可以帮助用户优先级的软件检查工具所产生的信息,基于需求驱动的计算的可能性,执行到达的警告报告的位置。该分析与文献中已知的其他优先级排序技术正交,例如严重程度和统计分析,以减少假阳性。我们评估我们的技术的可行性,使用一些案例研究,并评估我们的预测质量进行比较,通过动态分析获得的实际值。
2006-07-12 cs.SE
A Static Analysis of Popular C Packages in Linux
University of Southern Denmark(南丹麦大学)
本文通过GCC静态分析器对Linux中流行的C包进行实证研究,发现未初始化变量和空指针解引用问题最为常见,同时揭示了警告分布的长尾特性及跨领域一致性。
2025-12-04 cs.CR cs.SE
Enhancing Code Quality with Generative AI: Boosting Developer Warning Compliance
Electrical and Computer Engineering Department(电气与计算机工程系);United States Naval Academy(美国海军学院)
针对开发者因静态分析警告冗长、困惑且可能误报而忽视修复的问题,提出利用大型语言模型简化警告、说明严重性并建议修复方案,以提升警告修复遵从度和代码质量。
2025-05-16 cs.LG cs.SE
On the correlation between Architectural Smells and Static Analysis Warnings
针对103个Java项目的实证研究分析了785种SAW与4种AS的相关性,并提出依据SAW严重程度和AS易发度排序修复优先级的方法。
2025-09-01 cs.DC cs.SE
ACWRecommender: A Tool for Validating Actionable Warnings with Weak Supervision
本文针对静态分析工具高误报问题,挖掘GitHub C仓库回退数据构建弱标签数据集,提出两阶段框架ACWRecommender,利用UniXcoder和弱监督学习识别并推荐高概率真实缺陷的可操作警告,实验证明其在检测和推荐上均优于基线。
2023-09-18 cs.SE
An Empirical Study of Static Analysis Tools for Secure Code Review
本研究通过真实漏洞数据集实证评估C/C++静态分析工具在安全代码审查中的有效性,发现其能提升审查精度与召回率,但存在大量无关警告和漏检问题。
2024-07-17 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
SkipAnalyzer: A Tool for Static Code Analysis with Large Language Models
本研究提出由LLM驱动的静态代码分析工具SkipAnalyzer,包含缺陷检测、误报过滤、补丁生成三个模块,在空指针解引用和资源泄漏两类缺陷的相关任务中性能优于现有工具。
2023-12-18 cs.SE
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
Pre-trained Model-based Actionable Warning Identification: A Feasibility Study
本文首次系统评估多种预训练模型用于可执行警告识别的可行性,验证其显著优于现有机器学习方法,并分析工作流影响与不足,提出改进指南。
2024-03-05 cs.SE
Taking a Closer Look at Warnings Generated by PMD and SonarQube, their Rules and Compliance to Established Coding Standards
本文通过分析Stack Overflow和Apache Tomcat的代码,探讨PMD和SonarQube生成的警告规则及其对编码标准的合规性,发现部分规则存在假阳性问题,并建议进一步研究以改进SCA工具的准确性。
2026-02-28 cs.SE
Utilizing Precise and Complete Code Context to Guide LLM in Automatic False Positive Mitigation
提出LLM4FPM框架,通过eCPG-Slicer提取精确行级代码上下文和FARF算法线性识别相关文件,指导轻量级LLM实现高效低成本的自动误报缓解,在Juliet和D2A数据集上表现优异。
2025-05-31 cs.SE
Learning to Reduce False Positives in Analytic Bug Detectors
Microsoft(微软)
由于软件设计的日益复杂和快速迭代开发,代码缺陷和安全漏洞在现代软件中普遍存在。作为回应,程序员依靠静态分析工具定期扫描他们的代码库并发现潜在的错误。然而,为了最大化覆盖范围,这些工具通常倾向于报告大量的误报,需要开发人员手动验证每个警告。为了解决这个问题,我们提出了一种基于transformer的学习方法来识别误报错误警告。结果表明,该模型可以使静态分析的精度提高17.5%.此外,我们还验证了这种方法在两种主要错误类型上的通用性:空解引用和资源泄漏。
2022-03-08 cs.LG 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
SO{U}RCERER: Developer-Driven Security Testing Framework for Android Apps
对于应用程序开发人员来说,经常建议的安全开发建议在实践中往往不足。工具驱动(例如,使用静态分析工具)方法缺乏被测试的应用程序的上下文和特定于域的要求。应用程序开发人员很难从静态分析工具报告的一系列安全警告中找到一个可操作的优先级漏洞列表。流程驱动(例如,应用威胁建模方法)方法需要大量资源(例如,安全测试团队,预算)和安全专业知识,这是中小型应用程序开发团队几乎负担不起的。为了帮助应用程序开发人员保护他们的应用程序,我们提出了SO{U}RCERER,这是一个针对Android应用程序开发人员的安全测试指导框架。SO{U} RCEER指导开发人员识别应用程序的特定于域的资产,检测漏洞并对其进行优先级排序,并根据安全开发指南缓解这些漏洞。我们通过分析和测试36个Android移动货币应用程序的案例研究来评估SO{U}RCERER。我们发现,通过遵循SO{U} RCEER指导的活动,应用程序开发人员可以获得一个简洁且可操作的漏洞列表(SO{U} RCEER产生的安全警告比独立的静态分析器少24-61%),直接影响移动货币应用程序的关键资产,并制定缓解计划。我们的初步研究结果表明,Android应用程序安全测试的可行方法对应用程序开发人员来说并不复杂。
2021-11-03 cs.SE
Sorald: Automatic Patch Suggestions for SonarQube Static Analysis Violations
以前的工作表明,早期解决静态代码分析器检测到的问题可以防止以后的重大成本。首先,应该解释许多问题,以确定它们是否对应于程序中的实际缺陷。其次,静态分析师通常不会以可操作的方式呈现问题。为了解决这些问题,我们提出了Sorald:一个新的系统,设计元编程模板转换的抽象语法树的程序,并建议修复静态分析警告。因此,开发人员的负担减轻了,从解释和修复静态问题,到检查和批准完整的解决方案。Sorald修复了SonarJava的10条规则,SonarJava是Java最广泛使用的静态分析器之一。我们在Github上的161个流行仓库的数据集上评估了Sorald。我们的分析显示了Sorald的有效性,因为它修复了65%(852/1,307)满足修复先决条件的违规行为。总的来说,我们的实验表明,可以自动修复由最先进的静态分析器SonarJava产生的静态分析规则的明显违规。
2022-01-11 cs.SE
Static Analysis as a Feedback Loop: Enhancing LLM-Generated Code Beyond Correctness
针对LLM生成代码仅关注功能正确性而忽视多维度质量的问题,提出静态分析驱动的迭代提示算法,结合Bandit和Pylint工具,经GPT-4o实验验证,多维度代码质量问题显著降低,证明静态分析反馈可有效提升LLM生成代码的综合质量。
2025-08-20 cs.SE
Leveraging Static Analysis for Bug Repair
本文结合 sequence-to-sequence 模型与静态分析工具 Infer,在 IR 与源代码空间协同修复资源泄漏缺陷,并通过解码策略与结果过滤实现约 97% 精确率和 66% 召回率。
2023-04-21 cs.SE
Towards Better Static Code Analysis Reports: Sentence Transformer-based Filtering of Non-Actionable Alerts
University of Szeged(塞格德大学);FrontEndART Ltd.(FrontEndART有限公司)
本文提出STAF方法,利用句子变换器架构过滤静态代码分析中的非可操作警报,通过减少无效警报数量并提高可操作问题识别准确率,使静态分析工具的实用性提升至89%。
2026-04-20 cs.SE
A Static Analysis Platform for Investigating Security Trends in Repositories
提出一个集成多种静态分析工具的分析平台,支持基于Git的代码仓库跨版本历史持续监控警告,并通过仪表板展示安全趋势与热点,同时可生成适用于机器学习的大规模安全警报数据库。
2023-04-04 cs.SE
Ammonia: An Approach for Deriving Project-specific Bug Patterns
查找和修复错误代码是一项重要且成本高昂的维护任务,而静态分析(SA)是开发人员用来执行该任务的方法之一。SA工具通过扫描开发人员的源代码以查找常见的错误模式来警告开发人员潜在的错误,从而使这些开发人员有机会在发布软件之前修复警告(潜在的错误)。通常,SA工具扫描任何软件项目常见的一般错误模式(如空指针取消引用),而不是项目特定的模式。然而,过去的研究指出,这种缺乏可定制性的严重限制问题SA。因此,在本文中,我们提出了一种称为氨的方法,它是基于静态分析整个项目的开发历史的变化,作为一种手段来识别特定于项目的错误模式。此外,我们的工具识别的错误模式不仅仅与一个开发人员或一个特定的提交有关,它们反映了整个项目,并补充了其他SA工具识别一般错误模式的警告。在这里,我们报告的应用程序,我们实现的工具和方法的四个Java项目:蚂蚁,骆驼,POI和Wicket。结果表明,我们的工具可以在这四个项目中检测到19个项目特定的错误模式。接下来,通过手动分析,我们确定这些更改模式中有六个是实际的bug,并根据这些bug模式提交了pull请求。结果,合并了五个拉取请求。
2020-03-14 cs.SE
A Core Calculus for Static Latency Tracking with Placement Types
开发高效的地理分布式应用程序是一项挑战,因为程序员可以很容易地引入需要高延迟通信的计算。我们提出了一种语言设计,使延迟明确和提取类型级别的界限计算的运行时延迟。我们提出了我们的初始步骤与核心演算,使提取可证明正确的延迟界限和概述未来的工作。
2020-07-30 cs.LO cs.PL cs.SE
Static Code Analyzer Recommendation via Preference Mining
针对静态代码分析器误报漏报导致性能差异且全量调用成本过高的问题,首次提出基于偏好挖掘的SCA推荐方法,通过评估SCA有效性与挖掘项目特征构建推荐模型,其性能显著优于4个典型基线2至11倍。
2024-12-24 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
On the "Naturalness" of Buggy Code
真正的软件,即由kingdom开发的程序员解决现实世界问题的软件,往往是“自然的”,就像语音或自然语言一样;它往往是高度重复和可预测的。研究人员已经通过统计模型捕捉到了软件的这种自然性,并将其用于建议引擎、移植工具、编码标准检查器和习惯用法挖掘器中。这表明,对于一个好的统计语言模型来说,看起来不太可能或令人惊讶的代码在某种意义上是“不自然的”,因此可能是可疑的。在本文中,我们调查这一假设。我们考虑了一个大型的bug修复提交语料库(约。8,296),来自10个不同的Java项目,我们专注于它的语言统计,评估错误代码的自然性和相应的修复。我们发现,有bug的代码往往更具熵(即,不自然的),随着bug的修复而变得不那么自然。专注于高熵行在成本效益方面与一些众所周知的静态错误发现器(PMD,FindBugs)相似,并且使用熵度量对这些错误发现器的警告进行排序可以提高检查警告中涉及的代码的成本效益。这表明熵可能是一种有效的独立于语言的简单方法,可以补充PMD或FindBugs的有效性,并且基于搜索的错误修复方法可以从使用熵进行错误定位和搜索修复中受益。
2015-09-10 cs.SE
Static Deadlock Detection in Low-Level C Code
我们提出了一种新的可扩展的死锁分析器L2 D2能够处理C代码与低层次的非结构化锁操作。L2 D2沿着程序的调用树运行,从叶子开始,对每个函数只分析一次,而不知道调用上下文。L2 D2构建函数摘要,记录关于假定或已知在函数的入口、内部和出口处被锁定或解锁的锁的信息,以及锁依赖性,并在检测到锁依赖性中的周期时报告关于可能的死锁的警告。我们实现了L2 D2作为Facebook/Meta Infer框架的插件,并报告了大量C和C++代码的实验结果,说明了L2 D2的有效性和效率。
2022-07-05 cs.DC cs.PL cs.SE
Code2LoRA: Hypernetwork-Generated Adapters for Code Language Models under Software Evolution
University of Waterloo(滑铁卢大学)
提出Code2LoRA超网络框架,通过生成仓库特定的LoRA适配器注入仓库知识,无需推理时令牌开销,支持静态和演化两种场景,在RepoPeftBench上达到与逐仓库LoRA相当或更优的性能。
2026-10-30 cs.AI cs.CL cs.SE