论文
评估 LLM 代理的自动化软件分析任务
Evaluating LLM Agents on Automated Software Analysis Tasks
摘要
如今存在许多软件分析工具,但由于环境设置、依赖关系解析和分析工具配置的原因,将它们应用于各种开源项目仍然具有挑战性。基于 LLM 的代理提供了一种潜在的解决方案,但其在自动化软件分析特定任务上的有效性尚未得到系统研究。与问题解决或一般环境设置不同,此任务需要在目标项目旁边安装和配置单独的分析工具,生成特定于工具的先决条件,并验证分析工具是否产生有意义的分析输出,而不是仅仅在没有证据的情况下宣布成功终止。我们推出 AnalysisBench,这是一个包含 35 个工具项目对的基准测试,涵盖 7 个分析工具和 10 个不同的 C/C++ 和 Java 项目,每个项目都有一个手动构建的参考设置。使用 AnalysisBench,我们评估了四个 LLM 后端的四种代理架构。我们的自定义代理 AnalysisAgent 的手动验证成功率为 94%(Gemini-3-Flash,33/35 任务),而最佳基线 (ExecutionAgent) 的成功率为 77%。除了定量结果之外,我们还确定了现有代理的关键局限性,包括阶段混合、差错定位和过早终止,并表明代理架构在 LLM 单独功能之外发挥着关键作用。我们进一步发现,整个程序分析和 Java 专用工具是最困难的任务,Java 工具链比 C/C++ 带来更大的挑战,并且自我验证的成功始终夸大了手动验证的成功。使用 AnalysisAgent 生成的设置进行扩展运行还发现了 Masscan 和 Radare2 中两个以前未知的缺陷,从而确认生成的设置支持真正的下游分析。