Automatic bug fixing: Difference between revisions

Content deleted Content added
No edit summary
Line 348:
use the learned information to recognize and prioritize potentially correct
patches among all generated candidate patches<ref name=prophet/>.
Alternatively, patches can be directly mined from existing sources. Example approaches include mining patches from donor applications<ref name=codephage/> or from QA web sites<ref name=QAFix/>.
Alternatively, if the required program logic for fixing a bug in one program exists in another
donor program, it is possible directly transfer the program logic across
programs to fix the bug, even if the source code of the donor program is not
available<ref name=codephage/>.
 
===SMT Solver===
Line 519 ⟶ 516:
 
''CodePhage''<ref name=codephage/>: The first bug-fixing tool that directly transfer code across programs to generate patch for C program. Note that although it generates C patches, it can extract code from [[machine code|binary programs]] without source code<ref name=codephage/>.
 
''LeakFix''<ref name=leakfix/>: A tool that automatically fixes memory leaks in C programs.
 
''Prophet''<ref name=prophet/>: The first generate-and-validate tool that uses machine learning techniques to learn useful knowledge from past human patches to recognize correct patches. It is evaluated on the same benchmark as GenProg and generate correct patches (i.e., equivalent to human patches) for 18 out of 69 cases<ref name=prophet/>.
Line 552 ⟶ 551:
|ref=harv}}
</ref>: A solver-based tool focusing on modifying condition statements.
 
''[http://sei.pku.edu.cn/~gaoqing11/qacrashfix/ QACrashFix]''<ref name=QAFix>{{cite book
|last1=Gao
|first1=Qing
|last2=Zhang
|first2=Hansheng
|last3=Wang
|first3=Jie
|last4=Xiong
|first4=Yingfei
|last5=Zhang
|first5=Lu
|last6=Mei
|first6=Hong
|date=2015
|chapter=Fixing Recurring Crash Bugs via Analyzing Q&A Sites
|title=Proceedings of 30th IEEE/ACM International Conference on Automated Software Engineering
|series=ASE 2015}}
</ref>: A tool that fixes Java crash bugs by mining fixes from Q&A web site.
 
 
===Tools for other languages===