1.A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each
论文目录
摘要
文章评估了两个研究问题:“有多少bug可以自动修复?”以及“自动修复一个bug需要多少钱?”
提出了genprog,它使用遗传编程来修复现有C程序中的缺陷。
为了回答上述问题:
(1)提出新颖的算法改进GenProg允许它规模大的项目,发现维修多68%
(2)利用GenProg,使用云计算资源
(3)生成一个大型的、指示性指标设置用于系统的评估。
对GenProg的105个缺陷进行评估,这些缺陷来自8个开源程序,总计510万行代码,涉及10193个测试用例。GenProg自动修复了其中的55个缺陷。这种评估是同类中最大的,并且在代码或测试套件大小或缺陷计数方面,通常比以前的工作要大两个数量级。
公共云计算的价格允许以403美元复制的105次运行;一次成功的维修只需96分钟,平均花费7.32美元。
介绍
自动化程序修复的研究集中在通过生成用于验证和部署的候选补丁来降低缺陷修复成本。
GenProg,使用遗传编程(GP)的一般方法修复遗留软件中的各种缺陷类型(例如,无限循环,缓冲区溢出,这种错误,整数溢出,不正确的输出,格式化字符串攻击)不需要先验知识,专业化,或规范。
我们结合三个重要的见解来回答这些问题。我们的关键算法洞察力是将候选修复表示为补丁,而不是抽象语法树。这些变化对于GenProg对数百万行代码的可伸缩性至关重要。我们