Katana:基于双重切片上下文的缺陷修复学习方法
软件工程
2022-12-07 v3
摘要
上下文信息在软件开发者理解与修复缺陷时起着至关重要的作用。因此,基于深度学习的程序修复技术利用上下文来进行缺陷修复。然而,现有技术以任意方式处理上下文,即在所在文件、类或方法内提取缺陷语句附近的代码,而未作任何分析以找出其与缺陷的实际关联。为降低噪声,它们对用作上下文的 token 数量施加了预定义的上限。我们提出一种基于程序切片的方法,其中我们不再任意地将代码纳入上下文,而是分析对缺陷语句具有控制或数据依赖关系的语句。我们提出一种称为双重切片的新概念,其利用代码缺陷版本与修复版本的上下文来捕获相关的修复要素。我们给出名为 Katana 的技术与工具,这是首个将基于切片的上下文应用于程序修复任务的工作。结果表明,Katana 在降低噪声的同时,能有效为模型保留充足信息以选取上下文信息。我们与四种近期最先进的上下文感知程序修复技术进行比较。我们的结果显示,Katana 修复的缺陷数量比现有技术多出 1.5 至 3.7 倍。
引用
@article{arxiv.2205.00180,
title = {Katana: Dual Slicing-Based Context for Learning Bug Fixes},
author = {Mifta Sintaha and Noor Nashid and Ali Mesbah},
journal= {arXiv preprint arXiv:2205.00180},
year = {2022}
}