中文

无限循环的自动修复

软件工程 2015-04-21 v1

摘要

自动软件修复研究关注于开发能够自动检测并修复缺陷的系统。无限循环是一类众所周知的缺陷,每位计算机程序员或用户至少都经历过一次。我们在基于测试套件的软件修复背景下阐述修复无限循环的问题:给定一个包含至少一个失败测试用例的测试套件,生成一个能使所有测试用例通过的补丁。因此,修复无限循环意味着至少有一个测试用例因触发无限循环而挂起。我们的自动修复无限循环系统称为 InfinitelInfinitel。我们开发了一种操纵循环的技术,以便动态分析循环的迭代次数;决定中断循环执行;并在每次迭代基础上动态检查循环状态。随后,为了合成新的循环条件,我们利用基于可满足性模理论 (Satisfiability Modulo Theory, SMT) 的技术,将这组程序状态编码为代码合成问题。我们在七个植入缺陷和七个真实缺陷上评估了该技术。InfinitelInfinitel 能够在标准笔记本电脑配置上,于数秒至一小时内修复所有缺陷。

关键词

引用

@article{arxiv.1504.05078,
  title  = {Automatic Repair of Infinite Loops},
  author = {Sebastian R. Lamelas Marcote and Martin Monperrus},
  journal= {arXiv preprint arXiv:1504.05078},
  year   = {2015}
}