Repairing Programs with Semantic Code Search (T)

Repairing Programs with Semantic Code Search (T)
复制标题

使用语义代码搜索修复程序 (T)

DOI:
10.1109/ase.2015.60
复制
发表时间:
2015
期刊:
Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering (ASE
影响因子:
--
通讯作者:
Brun, Yuriy
Brun, Yuriy
中科院分区:
--
文献类型:
--
作者:
Ke, Yalin;Stolee, Kathryn T.;Goues, Claire Le;Brun, Yuriy

文献摘要

参考文献

被引文献

相似文献

自动程序修复可以潜在地降低调试成本并提高软件质量,但最近的研究引起了人们对自动生成修复的质量缺陷的关注。我们提出了一种新的修复方法,它使用大量现有的开源代码来寻找潜在的修复方法。关键的挑战在于有效地找到与有缺陷的代码在语义上相似(但不相同)的代码,然后将该代码适当地集成到有错误的程序中。我们提出了SearchRepair,一种修复技术,通过以下方式解决这些挑战:(1)将人类编写的代码片段的大型数据库编码为输入输出行为的SMT约束,(2)将给定的缺陷定位到可能有错误的程序片段,并导出代码所需的输入输出行为来替换这些片段,(3)使用最先进的约束求解器在数据库中搜索满足所需行为的片段,并用这些潜在的补丁替换可能有错误的代码,以及(4) 验证补丁是否针对程序测试套件修复了错误。我们发现 SearchRepair 修复了新手学生编写的 778 个基准 Cdefects 中的 150 个(19%),其中 20 个未由 GenProg、TrpAutoRepair 和 AE 修复。我们通过测量四种技术生成的补丁通过了多少个独立的、修复期间未使用的测试来比较它们的质量,发现 SearchRepair 修复的程序平均通过了 97.3% 的测试,而 GenProg、TrpAutoRepair 和 AE 修复的程序分别通过了 68.7%、72.1% 和 64.2% 的测试。我们得出的结论是,SearchRepair 可以比 GenProg、TrpAutoRepair 和 AE 进行更高质量的修复,并且可以修复一些这些工具无法修复的缺陷。
Automated program repair can potentially reduce debugging costs and improvesoftware quality but recent studies have drawn attention to shortcomings inthe quality of automatically generated repairs. We propose a new kind ofrepair that uses the large body of existing open-source code to findpotential fixes. The key challenges lie in efficiently finding codesemantically similar (but not identical) to defective code and thenappropriately integrating that code into a buggy program. We presentSearchRepair, a repair technique that addresses these challenges by(1) encoding a large database of human-written code fragments as SMTconstraints on input-output behavior, (2) localizing a given defect to likelybuggy program fragments and deriving the desired input-output behavior forcode to replace those fragments, (3) using state-of-the-art constraintsolvers to search the database for fragments that satisfy that desiredbehavior and replacing the likely buggy code with these potential patches, and (4) validating that the patches repair the bug against program testsuites. We find that SearchRepair repairs 150 (19%) of 778 benchmark Cdefects written by novice students, 20 of which are not repaired by GenProg, TrpAutoRepair, and AE. We compare the quality of the patches generated by thefour techniques by measuring how many independent, not-used-during-repairtests they pass, and find that SearchRepair-repaired programs pass 97.3% ofthe tests, on average, whereas GenProg-, TrpAutoRepair-, and AE-repairedprograms pass 68.7%, 72.1%, and 64.2% of the tests, respectively. We concludethat SearchRepair produces higher-quality repairs than GenProg, TrpAutoRepair, and AE, and repairs some defects those tools cannot.
DOI: 10.1145/1882291.1882327
发表时间: 2010-11
期刊: --
影响因子: --
作者:
A. Carzaniga;Alessandra Gorla;Nicolò Perino;M. Pezzè
通讯作者: A. Carzaniga;Alessandra Gorla;Nicolò Perino;M. Pezzè
DOI: 10.1109/tevc.2010.2052622
发表时间: 2011-04-01
影响因子: 14.3
作者:
Orlov, Michael;Sipper, Moshe
通讯作者: Sipper, Moshe
DOI: 10.1145/1831708.1831716
发表时间: 2010-07
影响因子: 7.4
作者:
Yu Pei;Carlo A. Furia;M. Nordio;Yi Wei;Bertrand Meyer;Andreas Zeller
通讯作者: Yu Pei;Carlo A. Furia;M. Nordio;Yi Wei;Bertrand Meyer;Andreas Zeller
DOI: 10.1145/2393596.2393625
发表时间: 2012-11
期刊: ACM Trans. Program. Lang. Syst.
影响因子: --
作者:
Kathryn T. Stolee;Sebastian G. Elbaum
通讯作者: Kathryn T. Stolee;Sebastian G. Elbaum
高效的基于规范的组件检索
DOI: --
发表时间: 1999
期刊: International Conference on Automated Software Engineering
影响因子: --
作者:
J. Penix;P. Alexander
通讯作者: P. Alexander