Comparison of Static Analysis Architecture Recovery Tools for Microservice Applications
本研究针对微服务架构监管难、缺乏工具有效性实证综述的问题,计划通过多源文献梳理静态分析架构恢复工具,在通用数据集上实测并比较其有效性,为CI/CD集成提供参考。
2024-03-11 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
A Study of Static Warning Cascading Tools (Experience Paper)
针对静态分析跨版本告警冗余问题,研究扩展三类程序差异工具实现自动告警级联,通过基准程序与开源项目评估,总结各方法优劣并公开工具数据。
2023-05-04 cs.SE
Efficacy of static analysis tools for software defect detection on open-source projects
本研究针对Java、C++、Python三种语言的多个数据集,对比SonarQube等四款主流静态分析工具的缺陷检测性能,发现SonarQube表现最优,为工具选择提供参考并指明未来改进方向。
2024-05-20 cs.SE
EFACT: an External Function Auto-Completion Tool to Strengthen Static Binary Lifting
针对现有静态二进制提升工具外部函数补全能力不足的问题,提出轻量级插件EFACT,优化名称修饰外部函数原型恢复,跨ISA二进制翻译准确率显著提升。
2024-05-15 cs.SE
Ranking Warnings of Static Analysis Tools Using Representation Learning
静态分析工具经常用于检测软件系统中的潜在漏洞。然而,这些工具的一个不可避免的问题是它们具有高误报率的大量警告,这消耗了调查的时间和精力。在本文中,我们提出了DeFP,一种新的方法排名静态分析警告。基于直觉,具有相似上下文的警告往往具有相似的标签(真阳性或假阳性),DeFP使用两个BiLSTM模型构建,以捕获与标记警告的上下文相关的模式。之后,对于一组新的警告,DeFP可以根据它们成为真阳性的可能性(即,实际漏洞)。我们在10个真实项目的数据集上的实验结果表明,使用DeFP,只需调查60%的警告,开发人员就可以找到+90%的实际漏洞。此外,DeFP在精度和召回率方面都将最先进的方法提高了30%。
2021-10-07 cs.SE
Deploying Static Analysis
静态源代码分析是一个强大的工具,可以在正确部署的情况下发现和修复bug;然而,很容易以一种表面上看起来很好的方式部署它,但它会遗漏重要的缺陷,显示出许多误报,并使该工具声名狼借。本文是在大型组织中部署静态分析工具的过程指南,同时避免最糟糕的组织和技术陷阱。我的主要观点是专注于修复bug的主要目标的重要性,而不是在这个过程中出现的所有竞争性较小的目标。
2022-02-24 cs.SE
A Static Analysis Platform for Investigating Security Trends in Repositories
提出一个集成多种静态分析工具的分析平台,支持基于Git的代码仓库跨版本历史持续监控警告,并通过仪表板展示安全趋势与热点,同时可生成适用于机器学习的大规模安全警报数据库。
2023-04-04 cs.SE
Comparison of Static Analysis Architecture Recovery Tools for Microservice Applications
本研究通过多源文献综述识别出13款面向微服务应用的静态架构恢复工具,对其中9款的检测能力进行对比,发现最优工具F1值为0.86,进一步组合4款工具可将F1值提升至0.91。
2024-12-11 cs.SE
Quieting the Static: A Study of Static Analysis Alert Suppressions
本研究通过分析1,425个Java项目,揭示了静态分析警告抑制的使用模式,发现误报占比小但技术债务显著,强调需改进工具沟通与教育以提升静态分析有效性。
2023-11-13 cs.SE
Tracking the Evolution of Static Code Warnings: the State-of-the-Art and a Better Approach
本文针对静态代码警告在开发流程中的持续追踪问题,梳理现有方法并提出更精确的警告演化追踪方案,以支持代码审查、持续集成、自动修复和警告优先级排序。
2024-01-23 cs.SE
Automatic Static Bug Detection for Machine Learning Libraries: Are We There Yet?
本文在四个机器学习库的410个已知缺陷上评估五种静态缺陷检测器,发现其整体检出率极低,仅 Flawfinder 和 RATS 相对有效,并据此提出改进静态检测工具实用性的方向。
2023-07-09 cs.SE
On the combination of static analysis for software security assessment -- a case study of an open-source e-government project
静态应用程序安全测试(SAST)是软件工程中一种流行的质量保证技术。然而,将SAST工具集成到行业级产品开发和安全评估中带来了各种技术和管理挑战。在这项工作中,我们报告了一个纵向的案例研究,采用SAST作为一个开源的电子政务项目的人驱动的安全评估的一部分。我们描述了SAST如何被选择,评估,并结合成一个新的方法进行软件安全评估。该方法进行了初步评估,使用半结构化访谈。我们的研究结果表明,(1)虽然一些SAST工具优于其他工具,它是可能的,以实现更好的性能,通过组合一个以上的SAST工具和(2)SAST工具应使用到一个实用的性能,并在现实世界的项目中结合三角形的方法,人为驱动的脆弱性评估。
2021-03-23 cs.SE
Practical Challenges with Spreadsheet Auditing Tools
就像其他软件一样,电子表格可能包含重大错误。静态分析在软件工程中是一种公认的和成熟的技术,以其发现错误的能力而闻名。近年来,越来越多的工具供应商开始提供工具,允许临时最终用户对电子表格运行各种静态分析。我们指导了一项研究,其中三名软件工程本科生检查了14种电子表格审计工具,试图为行业合作伙伴提供具体的建议。反思研究结果,我们发现这些工具中的大多数确实在电子表格中发现问题时提供了有用的帮助,但我们也发现了工具存在重大问题的几个领域。如果电子表格审计工具供应商能够为传统的软件开发提供一些静态分析工具的想法,并采用他们的一些解决方案,那么这些问题中的一些就可以得到解决。
2014-01-28 cs.SE
Automated Software Testing Starting from Static Analysis: Current State of the Art
复杂软件的大规模生产使得人工测试其安全漏洞变得不可能。自动化安全测试工具有各种各样的风格,在软件开发的各个阶段发挥作用,并针对不同类别的软件漏洞。我们有大量的自动化工具可供选择,这很好,但问题是它们的采用和认可并不突出。本研究的目的是探索现有技术的可能性,同时也通过探索安全测试工具和相关技术的未来来拓宽视野。
2023-01-15 cs.SE
An Empirical Study of Rule-Based and Learning-Based Approaches for Static Application Security Testing
背景:静态应用程序安全测试(SAST)工具旨在帮助开发人员检测源代码中的安全问题。这些工具通常使用基于规则的方法来扫描源代码中的安全漏洞。然而,由于这些工具的显著缺点(即,误报率高),基于学习的软件漏洞预测(SVP)方法正在成为一种流行的方法。目标:尽管这两种方法的目标相似,但它们的比较价值尚未探讨。我们提供了一个实证分析SAST工具和SVP模型,以确定其相对能力的源代码安全分析。方法:我们评估了几种常见的SAST工具和SVP模型在各种漏洞数据集上的检测和评估性能。我们进一步评估的可行性和潜在的好处相结合的两种方法。结果如下:SAST工具和SVP模型提供类似的检测功能,但SVP模型在检测和评估方面表现出更好的整体性能。由于缺乏协同作用,这两种方法很难统一。结论:我们的研究产生了12个主要发现,这些发现提供了对这两种方法的能力和协同作用的见解。通过这些观察,我们提供了使用和改进的建议。
2021-07-16 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
Static Code Analysis with CodeChecker
本文介绍开源项目 CodeChecker,它将 Clang Static Analyzer、Clang-Tidy 等静态分析工具集成进 C++ 构建、CI 与开发流程,并提供问题管理系统,原为 2018 年 3COWS 会议讲座材料。
2024-08-05 cs.SE
Discovering Flaws in Security-Focused Static Analysis Tools for Android using Systematic Mutation
移动应用安全是近十年来安全研究的主要领域之一。已经提出了许多应用程序分析工具来响应恶意,好奇或易受攻击的应用程序。然而,现有的工具,特别是静态分析工具,用分析的可靠性换取精确度和性能,因此是可靠的。不幸的是,这些工具设计中的具体错误选择或缺陷通常不为人知或没有很好的记录,导致研究人员,开发人员和用户之间的错误信心。本文提出了基于突变的可靠性评估($μ$ SE)框架,该框架利用突变分析的良好实践,系统地评估Android静态分析工具,以发现、记录和修复缺陷。我们将$μ$ SE实现为一个半自动化框架,并将其应用于一组突出的Android静态分析工具,这些工具可以检测应用程序中的私有数据泄漏。作为对主要工具之一的深入分析的结果,我们发现了13个未记录的缺陷。更重要的是,我们发现所有13个缺陷都传播到继承有缺陷工具的工具。我们与工具开发人员合作成功修复了其中一个缺陷。我们的研究结果激发了对系统发现和记录可靠工具中不可靠选择的迫切需求,并展示了利用突变测试实现这一目标的机会。
2018-06-27 cs.CR 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
Understanding Static Code Warnings: an Incremental AI Approach
基于知识的系统对一些知识库进行推理。因此,这样的系统的一个重要问题是如何获得他们的推理所需的知识。本文评估了获取“静态代码警告”知识的主动学习方法。静态代码分析是一种广泛使用的检测软件系统中的错误和安全漏洞的方法。随着软件变得越来越复杂,分析工具也会报告开发人员每天需要解决的越来越复杂的警告列表。这样的静态代码分析工具通常过于谨慎;也就是说,它们经常提供许多关于虚假问题的警告。以前的研究工作表明,SA工具报告的错误中约有35%到91%的警告实际上是不可操作的(即,开发人员不会采取行动的警告,因为它们被错误地建议为bug)。有经验的开发人员知道哪些错误是重要的,哪些可以安全地忽略。我们如何捕捉这种体验?本文报告了一个增量AI工具,它可以观察人类阅读误报报告。使用增量支持向量机机制,这个AI工具可以快速学习区分虚假的假警报和值得进一步关注的更严重的问题。在这项工作中,九个开源项目被用来评估我们提出的模型对以前的研究人员提取的特征,并确定我们的算法给出的优先级顺序的可操作的警告。我们观察到,当我们的方法告诉人类忽略70%到80%的警告时,我们的模型可以识别超过90%的可操作警告。
2020-10-22 cs.SE
How far are German companies in improving security through static program analysis tools?
随着安全性对许多公司变得越来越重要,静态程序分析(SPA)工具的流行程度也在不断提高。在本文中,我们的目标是在德国的公司之间使用SPA工具,重点是安全性。我们给出了对当前问题的见解,以及开发人员配置工具以克服这些问题的意愿。与以前的研究相比,我们的研究考虑了公司的文化和使用SPA工具的过程。我们进行了一项在线调查,有256份回复,并对来自多家公司的17名产品负责人和高管进行了半结构化访谈。我们的研究结果显示了工具使用的多样性。只有一半的受访者使用SPA工具。免费工具在软件开发人员中更受欢迎。在大多数公司,软件开发人员被鼓励使用免费工具,而商业工具可以要求。然而,在我们的采访中,产品所有者和执行官报告说,他们的开发人员不要求新的工具。我们还发现,很少在每个版本上使用工具进行自动安全检查。
2022-08-12 cs.CR cs.SE
Integration of the Static Analysis Results Interchange Format in CogniCrypt
背景-软件公司越来越依赖于静态分析工具来检测其软件产品中的潜在错误和安全漏洞。在过去的十年中,越来越多的商业和开源静态分析工具被开发和维护。每种工具都有自己的报告格式,这就妨碍了在单个界面中轻松集成多个分析工具,例如静态分析服务器协议(SASP)。2017年,包括微软和GrammaTech在内的行业合作提出了静态分析结果交换格式(SARIF)来解决这个问题。SARIF是一种标准化格式,可以对静态分析警告进行编码,以允许在不同工具之间导入和导出分析报告。目的-本文通过示例解释了SARIF格式,并提供了连接器的概念证明,该连接器允许静态分析工具CogniCrypt以SARIF格式生成和导出其结果。设计/方法-在详细介绍连接器的实现之前,我们对SARIF格式和CogniCrypt的输出格式进行了横截面研究。该研究旨在找到SARIF导出模块可以完成的CogniCrypt中感兴趣的组件。独创性/价值-本文所述的集成到CogniCrypt的SARIF可以重复使用到其他静态分析工具集成SARIF。结论-在详细介绍了SARIF格式之后,我们提出了一个将SARIF集成到CogniCrypt的初步实现。在利用SARIF提供的所有功能后,CogniCrypt将能够支持SASP。
2019-07-04 cs.PL cs.SE
Call Graph Soundness in Android Static Analysis
本研究针对Android静态分析中调用图不可靠的问题,对1000个应用测试13款静态工具与动态分析,首次量化遗漏情况,发现框架依赖、高精度追求等多因素导致可靠性不足,现有方法均难有效改善。
2024-07-10 cs.SE
spotFuzzer: Static Instrument and Fuzzing Windows COTs
Windows系统的安全性研究在学术界还没有引起足够的重视。这些新方法大多是针对Linux系统设计的,很难移植到Windows系统。Fuzzing for Windows程序总是遭受其封闭源代码。因此,我们需要找到一种合适的方法来实现Windows程序的反馈。据我们所知,目前还没有针对Windows的稳定且可扩展的静态插装工具,而DynamoRIO等动态工具的性能一直受到批评。更糟糕的是,动态插装工具的使用场景非常有限,对于许多系统服务或大型商业软件来说是无能为力的。在本文中,我们提出了spotInstr,一种新的静态工具,用于检测Windows二进制文件。它是轻量级的,可以在很短的时间内检测大多数Windows PE程序。同时,spotInstr提供了一组过滤器,可用于选择检测点或限制目标区域。基于这些过滤器,我们提出了一种新的内存敏感的仪器方法,可以加快仪器和模糊。在此基础上,我们设计了一个系统spotFuzzer,它利用spotInstr的功能,可以模糊大多数Windows二进制文件。我们对spotInstr和spotFuzzer进行了多方面的测试,以展示其卓越的性能和稳定性。
2022-01-20 cs.SE
Many Tools, Few Exploitable Vulnerabilities: A Survey of 246 Static Code Analyzers for Security
Ruhr-University Bochum(鲁尔大学波鸿分校);Chalmers | University of Gothenburg(查尔姆斯理工大学|哥德堡大学)
本文调查了246个静态代码分析器,发现其主要关注有限的漏洞集,且检测的漏洞难以利用,评估方法存在不足。
2026-02-20 cs.CR cs.SE
Prioritizing Software Inspection Results using Static Profiling
静态软件检查工具作为一个附加的自动化软件检查步骤非常有用,可以很容易地集成到开发周期中,并有助于创建安全,可靠和高质量的代码。然而,这些工具的一个经常被引用的缺点是,它们生成过多的警告,包括由于近似分析技术而导致的许多误报。这种信息过载实际上限制了它们的有用性。在本文中,我们提出了ELAN,一种技术,可以帮助用户优先级的软件检查工具所产生的信息,基于需求驱动的计算的可能性,执行到达的警告报告的位置。该分析与文献中已知的其他优先级排序技术正交,例如严重程度和统计分析,以减少假阳性。我们评估我们的技术的可行性,使用一些案例研究,并评估我们的预测质量进行比较,通过动态分析获得的实际值。
2006-07-12 cs.SE
Static Code Analysis of Multilanguage Software Systems
使用静态代码分析来识别多语言软件系统的依赖调用图是具有挑战性的。开发当今系统所使用的不同语言通常具有不同的词法、语法和语义规则,这使得彻底的分析变得困难。此外,它们在组件内部和组件之间提供不同的模块化和依赖机制。最后,它们促进和--或要求各种框架提供不同的服务集,这些服务集引入了隐藏的依赖关系,这些依赖关系是当前静态代码分析方法所看不到的。在本文中,我们确定了五个重要的挑战,静态代码分析必须克服多语言系统,我们提出了要求,以处理它们。然后,我们提出了这些需求的解决方案来处理JEE应用程序,它将服务器端Java源代码与许多客户端Web方言(例如,JSP,JSF),同时依赖于框架(例如,Web和EJB容器)创建隐藏的依赖关系。最后,我们通过开发一套工具来分析JEE应用程序,构建依赖调用图,并将这些工具应用于两个示例JEE应用程序,来评估我们的解决方案的实现。我们的评估表明,我们的工具可以解决所确定的挑战,并提高召回识别多语言的依赖关系相比,标准的JEE静态代码分析,因此,间接提出的要求是有用的,以建立多语言的静态代码分析。
2019-06-03 cs.SE
A Comprehensive Study on Static Application Security Testing (SAST) Tools for Android
本文提出统一平台 VulsTotal,整合 11 个开源 Android SAST 工具、67 类漏洞、标准化报告及新建 CVE 基准,从覆盖率、有效性和性能等方面系统比较工具表现。
2024-10-28 cs.SE
Análise Estática de Código-Fonte
本文从理论上总结了静态分析的源代码、定义、用途和应用、如何进行静态分析、它们的中间表示格式、模型和最常用的分析技术,最后介绍了一套免费下载的静态分析工具,这是科学家在研究工作中开发的学术软件工具(本文用巴西葡萄牙语撰写)。
2019-06-29 cs.SE
DroidDissector: A Static and Dynamic Analysis Tool for Android Malware Detection
DroidDissector 集成静态与动态分析,从单一位置提取权限、API调用图、操作码、系统调用、网络流量和日志等特征,为Android恶意软件检测提供全面支持。
2023-11-30 cs.CR cs.SE
EnergyAnalyzer: Using Static WCET Analysis Techniques to Estimate the Energy Consumption of Embedded Applications
本文提出EnergyAnalyzer,一种基于静态WCET分析技术和定制能耗模型的代码级嵌入式软件能耗估算工具,在ARM Cortex-M0和Gaisler LEON3架构上验证,估算结果与经验模型差异不到1%。
2023-05-25 cs.SE
Automated Vulnerability Injection in Solidity Smart Contracts: A Mutation-Based Approach for Benchmark Development
本研究提出基于突变注入的MuSe工具,自动向Solidity智能合约注入六种漏洞以生成基准,并用Slither验证,发现注入率因漏洞而异且静态分析工具检测不全,凸显了改进检测评估的需求。
2025-04-22 cs.SE
Static Application Security Testing (SAST) Tools for Smart Contracts: How Far Are We?
本文提出包含45种漏洞类型的细粒度智能合约漏洞分类体系,并构建覆盖40种类型、含788个文件和10,394个漏洞的基准,评估8种SAST工具后发现其漏报约50%、精确率不足10%,同时揭示多工具组合可降低漏报但增加误报,为工具改进与选择提供指导。
2024-06-29 cs.SE
Large Language Models Versus Static Code Analysis Tools: A Systematic Benchmark for Vulnerability Detection
本研究通过系统基准比较三种静态分析工具与三种大型语言模型在漏洞检测上的性能,发现LLMs在召回率上优势明显,但误报和定位不准,推荐混合流水线使用。
2025-08-06 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
Static Analysis Deployment Pitfalls
在软件开发组织中部署静态源代码分析工具时的组织、政治和配置错误可能会导致该工具的大部分价值丢失,即使在明显满足管理目标的情况下也是如此。作为一名静态分析顾问,本文列出了遇到的陷阱,并讨论了避免或减轻这些陷阱的技术。这是正在进行的工作的一部分,暂命名为“静态分析部署手册”。"
2022-02-26 cs.LO 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
Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?
自动静态分析工具(ASAT),如Findbugs,具有很高的误报率。产生的大量假警报对采用构成了障碍。研究人员已经提出使用机器学习来修剪错误警报,并仅向开发人员提供可操作的警告。这项最先进的研究已经确定了一组“黄金特性”,这些特性是基于对文件、代码和警告的特征和历史记录计算的度量标准。最近的研究表明,使用这些特征的机器学习非常有效,并且它们几乎达到了完美的性能。我们进行了详细的分析,以更好地了解“黄金特性”的强劲表现。我们发现,有几项研究使用了一种实验程序,导致数据泄漏和数据重复,这是具有重大意义的微妙问题。首先,地面事实标签已经泄露到测量给定上下文中可操作警告比例的功能中。其次,测试数据集中的许多警告出现在训练数据集中。接下来,我们展示了确定地面实况标签的警告预言中的局限性,这是一种将给定版本中的警告与未来的参考版本进行比较的启发式方法。我们发现,参考修订的选择影响的警告分布。此外,启发式产生的标签与人类的预言不一致。因此,以前看到的这些技术的强大性能是过于乐观的,如果在实践中采用它们的真实性能。我们的研究结果传达了几个教训,并提供评估虚警检测器的指导方针。
2022-02-12 cs.SE
Detecting Semantic Conflicts using Static Analysis
本文提出一种基于静态分析的技术,用于检测版本控制合并中未被发现的动态语义冲突,在99个实验单元上评估,其F1分数和召回率优于动态分析方法,精确度与静态分析或定理证明方法相当。
2023-10-06 cs.SE
Path-sensitive Type Analysis with Backward Analysis for Quality Assurance of Dynamic Typed Language Code
对动态类型语言进行精确而快速的静态类型分析是非常困难的。这主要是因为缺少静态类型信息使得很难近似变量的所有可能值。实际上,现有的静态类型分析方法是不精确的或缓慢的。本文提出了一种提高Python代码静态类型分析精度的新方法,该方法通过向后分析来获得路径敏感性。通过这样做,我们的方法旨在获得更精确的静态类型信息,这有助于全面提高静态分析。为了证明我们的方法的有效性,我们进行了初步的实验,比较我们的方法实现和现有的分析工具的精度和时间效率。实验结果表明,与现有的静态类型分析工具相比,该方法可以提供更精确的类型分析,误报率更低。同时也表明我们提出的方法虽然增加了分析时间,但仍然在实际使用的范围内。
2023-02-15 cs.SE
Microvision: Static analysis-based approach to visualizing microservices in augmented reality
微服务正在支持数字化转型;然而,缺少基本的工具和系统视角来更好地观察、理解和管理这些系统、它们的属性和依赖关系。微服务架构倾向于去中心化,这给系统运营带来了很多优势,但也给其发展带来了挑战。微服务缺乏以系统为中心的视角,无法更好地应对系统演进和质量评估。在这项工作中,我们将探索基于静态分析的微服务特定架构重构。这样的重建通常导致系统模型以可视化所选择的以系统为中心的视角。当服务基数较高时,传统模型的实用性受到限制。我们考虑一种替代的数据可视化使用三维空间,使用增强现实。为了开始测试从微服务系统中获得这些视角的可行性,我们开发并实现了用于软件架构重建和比较视角可视化的原型工具。
2022-07-23 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
LitterBox+: An Extensible Framework for LLM-enhanced Scratch Static Code Analysis
University of Passau(帕绍大学)
LitterBox+通过将Scratch块式代码转换为文本形式,利用LLM生成能力提升静态代码分析,提供API和界面扩展,支持代码查询与修复,提升学习者编程体验。
2025-10-02 cs.SE
Customizing Static Analysis using Codesearch
本文提出StarLang语言,一种Datalog变体,旨在简化自定义静态分析工具的构建,同时为专家提供熟悉框架,并通过低时间复杂度确保快速运行。
2024-04-19 cs.LO cs.PL 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
Interactive Static Software Performance Analysis in the IDE
在开发过程中检测由于次优代码导致的性能问题可能是一项艰巨的任务,特别是在部署后注意到性能下降后进行本地化时。静态分析有可能为开发人员提供有关性能问题的早期反馈,而不必运行具有昂贵(且通常不可用)性能测试的分析器。我们开发了一个VSCode工具,它通过代码注释和装饰(在上下文中显示复杂性分析结果)以及显示细节和概述的侧面板视图(使结果具有可解释性)集成了来自Infer的静态性能分析结果。此外,我们设计的系统具有交互性,以便在发生代码更改时能够更好地响应。我们通过测量静态性能分析集成在开发工作流中引入的开销来评估我们的工具的有效性。此外,我们报告了一个案例研究,说明了我们的系统如何在ElasticSearch开源项目中的一个真实性能错误的背景下用于推理软件性能。演示视频:https://www.youtube.com/watch? v=-GqPb_YZMOs存储库:https://github.com/ipa-lab/vscode-infer-performance
2021-05-04 cs.SE
Beyond Static Endpoints: Tool Programs as an Interface for Flexible Agentic Web Services
School of Computer Science, Peking University, Beijing, China;School of Software \& Microelectronics, Peking University, Beijing, China;Institute for Artificial Intelligence, Peking University, Beijing, China
提出ToolPro,将工具意图表示为可执行程序,通过约束引导构建、效应感知重放和策略决策,在MCP服务上实现最高53.4%的延迟降低和96.1%的流量减少。
2026-06-19 cs.AI cs.CL cs.SE
Cross-Language Code Search using Static and Dynamic Analyses
随着代码搜索渗透到软件开发中的大多数活动中,代码到代码搜索已经出现,以支持使用代码作为查询并在搜索结果中检索相似的代码。应用程序包括用于重构的重复代码检测、用于程序修复的补丁识别和语言翻译。现有的代码到代码搜索工具依赖于静态相似性方法,例如比较标记和抽象语法树(AST)来近似动态行为,导致精度低。大多数工具不支持跨语言代码到代码搜索,而那些支持的工具依赖于需要标记训练数据的机器学习模型。我们提出了跨语言的代码到代码搜索(COSAL),一种跨语言技术,使用静态和动态分析来识别相似的代码,不需要机器学习模型。基于代码标记相似性、结构相似性和行为相似性,使用非支配排序对代码片段进行排名。我们在43,146个Java和Python文件和55,499个Java文件的两个数据集上对COSAL进行了经验评估,发现1)与单一或加权度量相比,基于静态和动态相似性度量的非支配排名的代码搜索更有效; 2)与最先进的语言内和跨语言代码到代码搜索工具相比,COSAL具有更好的精确度和召回率。我们探讨了在大型开源存储库上使用COSAL的潜力,并讨论了更多语言和相似性度量的可扩展性,为实用的多语言代码到代码搜索提供了一个网关。
2021-06-16 cs.SE
On the Use of Static Analysis to Engage Students with Software Quality Improvement: An Experience with PMD
本文通过3个学期、65份提交作业的课堂实验,评估使用PMD静态分析工具开展教学对提升学生软件质量意识的效果,发现其能助力学生认知编码问题,为教育者优化代码评审教学提供参考。
2023-07-13 cs.SE
Combining Static Analysis Techniques for Program Comprehension Using Slicito
该研究推出新版SLICITO工具,支持开发者在Visual Studio中交互式缩小C#代码分析范围,结合过程间数据流分析与符号执行提升分析精度,还提供可构建专用程序理解工具的分析可视化模块。
2025-03-19 cs.SE
Evaluating and Improving Static Application Security Testing Tools for Rust
University of Hong Kong(香港大学);Nanjing University(南京大学);Hong Kong Polytechnic University(香港理工大学);Concordia University(康考迪亚大学)
本文评估主流Rust SAST工具的有效性与弱点,提出LLM辅助的TRUST框架,发现6种SAST工具的46个故障,为改进Rust SAST工具提供指导。
2026-10-16 cs.CR cs.SE
DevReplay: Automatic Repair with Editable Fix Pattern
静态分析工具或链接器检测源代码约定的违反,以保持项目的可读性。这些工具在开发人员编辑源代码时自动修复特定的违规。然而,现有的工具是针对程序设计语言的一般约定而设计的。这些工具不检查项目/API特定的约定。我们提出了一种新的静态分析工具DevReplay,它通过挖掘代码更改历史来生成代码更改模式,并使用匹配的模式推荐更改。使用DevReplay,开发人员可以在代码编辑器和代码审查中自动检测和修复特定于项目/API的问题。此外,我们使用自动程序修复工具基准测试和实际软件的DevReplay的准确性进行评估。我们发现DevReplay比最先进的APR工具解决了更多的错误。最后,我们向最流行的开源项目提交了由不同语言实现的补丁,项目评审员接受了80%(10个中的8个)的补丁。DevReplay可在https://devreplay.github.io上获得。
2020-05-22 cs.SE
Barriers to Using Static Application Security Testing (SAST) Tools: A Literature Review
Montana State University(蒙大拿州立大学)
本文通过文献调研,揭示开发者未广泛采用静态应用安全测试(SAST)工具的障碍,指出需兼顾技术与人为因素以推动其广泛使用。
2026-09-03 cs.CR cs.SE