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