中文

领域知识至关重要:利用修复模板改进提示以修复Python类型错误

软件工程 2023-06-05 v1

摘要

尽管Python的动态类型系统方便了开发者编写Python程序,但也带来了运行时的类型错误。现有基于规则的方法可自动修复Python类型错误。这些方法能生成准确的补丁,但需要领域专家设计补丁合成规则,且对真实世界类型错误的模板覆盖率较低。基于学习的方法减轻了设计补丁合成规则的手动工作。在基于学习的方法中,基于提示(prompt-based)的方法通过预定义提示利用代码预训练模型的知识库,在通用程序修复任务中取得了最先进的性能。然而,此类提示是手动定义的,不包含任何用于修复Python类型错误的特定线索,导致效果有限。如何利用领域知识自动改进提示以修复类型错误具有挑战性且未被充分探索。在本文中,我们提出TypeFix,一种新颖的将修复模板融入其中的基于提示的Python类型错误修复方法。TypeFix首先通过一种新颖的层次聚类算法挖掘通用修复模板。所识别的修复模板指示了现有类型错误修复的通用编辑模式和上下文。TypeFix随后通过将通用修复模板作为领域知识来为代码预训练模型生成代码提示,其中掩码(mask)针对每个类型错误自适应定位而非预先确定。在两个基准(包括BugsInPy和TypeBugs)上的实验表明,TypeFix成功修复了26和55个类型错误,分别比最佳基线方法多出9和14个。此外,所提出的修复模板挖掘方法能覆盖两个基准中75%的开发者补丁,比最佳基于规则的方法PyTER高出30%以上。

关键词

引用

@article{arxiv.2306.01394,
  title  = {Domain Knowledge Matters: Improving Prompts with Fix Templates for Repairing Python Type Errors},
  author = {Yun Peng and Shuzheng Gao and Cuiyun Gao and Yintong Huo and Michael R. Lyu},
  journal= {arXiv preprint arXiv:2306.01394},
  year   = {2023}
}

备注

This paper has been accepted by ICSE'24