基于 LLM 代理的准确可扩展静态程序分片工具——SLICEMATE
软件工程
2025-07-28 v1
摘要
静态程序分片提取出影响特定位置值的所有可执行程序片段,支持调试和安全审计等许多软件分析任务。然而,传统分片工具依赖于遍历依赖图的计算密集型可达性分析,难以扩展到大型程序,且常常无法处理语法不完整的代码。最近出现的基于学习的方法虽然对此类情况更稳健,但在处理格式良好的代码时仍不足以达到传统方法的性能。本文提出 SliceMate,一个由大型语言模型(LLM)代理驱动的新型静态程序分片解决方案。它无需显式构建依赖图,即可实现优异的分片准确率。具体而言,SliceMate 集成了三个专门的代理:(1)一个合成代理,通过在函数和文件间逐步扩大扫描范围, guided by LLM 推断的依赖关系,生成候选分片;(2)一个验证代理,对候选分片进行简洁性和完整性检查,检测遗漏或无关语句;(3)一个细化代理根据验证结果进行最小编辑修复分片。这些代理由一个控制模块协调,确保及时收敛,无需人工干预即可输出高质量分片。为进行严格评估,我们构建了一个新的高质量基准 SliceBench,包含 2,200 个手动标注的 Java 和 Python 程序,程序长度 ranging 从 5 行到 8,577 行,显著大于现有分片基准。实验结果表明,SliceMate 在准确性和可扩展性上均显著优于传统和基于学习的分片工具。
引用
@article{arxiv.2507.18957,
title = {SLICEMATE: Accurate and Scalable Static Program Slicing via LLM-Powered Agents},
author = {Jianming Chang and Jieke Shi and Yunbo Lyu and Xin Zhou and Lulu Wang and Zhou Yang and Bixin Li and David Lo},
journal= {arXiv preprint arXiv:2507.18957},
year = {2025}
}