计算机科学 > 软件工程
[提交于 2025年7月20日
]
标题: StaAgent:一种用于测试静态分析器的代理框架
标题: StaAgent: An Agentic Framework for Testing Static Analyzers
摘要: 静态分析工具在软件开发生命周期早期识别错误中起着关键作用,但它们的规则实现通常测试不足且容易出现不一致。 为了解决这个问题,我们提出了StaAgent,这是一个代理框架,利用大型语言模型(LLMs)的生成能力来系统地评估静态分析器规则。 StaAgent由四个专业代理组成:种子生成代理,将错误检测规则转换为具体的、引发错误的种子程序;代码验证代理,确保这些种子的正确性;突变生成代理,生成语义等效的突变体;以及分析器评估代理,通过比较静态分析器对种子及其对应突变体的行为进行变形测试。 通过揭示不一致的行为,StaAgent有助于发现规则实现中的缺陷。 这个由LLM驱动的多代理框架提供了一种可扩展和适应性的解决方案,以提高静态分析器的可靠性。 我们在五个最先进的LLMs(CodeL-lama、DeepSeek、Codestral、Qwen和GPT-4o)上对五个广泛使用的静态分析器(SpotBugs、SonarQube、ErrorProne、Infer和PMD)进行了评估。 实验结果表明,我们的方法可以帮助揭示这五个静态分析器最新版本中的64个有问题的规则(即SpotBugs中有28个,SonarQube中有18个,ErrorProne中有6个,Infer中有4个,PMD中有8个)。 此外,64个漏洞中有53个无法被SOTA基线检测到。 我们已将所有漏洞报告给开发人员,其中两个已经修复。另外三个已得到开发人员的确认,其余的正在等待回复。 这些结果证明了我们方法的有效性,并强调了代理式、由LLM驱动的数据合成在推进软件工程方面的前景。
文献和引用工具
与本文相关的代码,数据和媒体
alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)
演示
推荐器和搜索工具
arXivLabs:与社区合作伙伴的实验项目
arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。
与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。
有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.