论文
使用具有数据流感知预训练和约束解码的语言模型进行静态程序切片
Static Program Slicing Using Language Models With Dataflow-Aware Pretraining and Constrained Decoding
摘要
静态程序切片是一种基本的软件工程技术,用于隔离与特定变量相关的代码。虽然最近使用语言模型 (LM) 的基于学习的方法在自动化切片预测方面显示出了希望,但它们存在不准确的依赖建模和不受约束的生成,其中 LM 无法捕获精确的数据流关系并生成包含幻觉标记和语句的切片。为了应对这些挑战,我们提出了 Sliceformer,这是一种使用 CodeT5+ 等小型语言模型将静态程序切片重新表述为序列到序列任务的新颖方法。 Sliceformer 引入了两项直接针对已确定的限制的关键创新。首先,为了改进依赖关系建模,我们设计了数据流感知预训练目标,利用数据流图(DFG)通过数据流保留语句排列和数据流感知跨度损坏来教导模型数据依赖关系。其次,为了消除幻觉,我们开发了一种强制解码机制,强制执行词汇和句法约束。我们在 Java 和 Python 程序切片基准上评估了 Sliceformer,证明了其相对于最先进基准的持续改进,在 ExactMatch 中提高了高达 22%。