中文

面向自动化程序修复中变异算子选择的强化学习

软件工程 2024-05-07 v2

摘要

自动化程序修复技术旨在协助软件开发者完成修复缺陷这一艰巨任务。在基于启发式的程序修复中,通过软件上的变异创建的程序变体搜索空间被探索以寻找潜在的缺陷补丁。最常见的是,搜索期间每次变异算子的选择均以均匀随机方式执行,这可能生成许多有缺陷的、甚至无法编译的程序变体。我们的目标是减少那些无法编译或破坏预期功能的变体的生成,它们浪费了大量资源。本文中,我们研究了基于强化学习的方法在基于启发式的程序修复中选择变异算子的可行性。我们提出的方法与编程语言、粒度级别和搜索策略无关,并可轻松增强到现有的基于启发式的修复工具中。我们使用30,080次独立的修复尝试,对四种算子选择技术、两种奖励类型、两种信用分配策略、两种集成方法和三组变异算子进行了广泛的实证评估。我们在来自Defects4J基准的353个真实世界缺陷上评估了我们的方法。基于强化学习的变异算子选择产生了更多通过测试的变体,但与使用随机选择的基线相比,在修复缺陷的数量上未表现出明显改进。尽管强化学习此前已被证明能成功改进常用于基于启发式程序修复的进化算法的搜索,但应用于该研究领域时并未显示出此类改进。

关键词

引用

@article{arxiv.2306.05792,
  title  = {Reinforcement Learning for Mutation Operator Selection in Automated Program Repair},
  author = {Carol Hanna and Aymeric Blot and Justyna Petke},
  journal= {arXiv preprint arXiv:2306.05792},
  year   = {2024}
}