Font Size: a A A

Automated Program Repair And Its Impacts

Posted on:2019-04-25Degree:DoctorType:Dissertation
Country:ChinaCandidate:X L KongFull Text:PDF
GTID:1368330590975058Subject:Software engineering
Abstract/Summary:PDF Full Text Request
Manual Program repair is one of the most tedious and time-consuming work in software industry,especially for the modern large-scale projects.Automated program repair can greatly reduce the burden of developers by utilizing efficient computing power to find patches automatically.Therefore,a lot of research effort from both academia and industry has been dedicated to design powerful program repair techniques.Although various program repair techniques have been proposed during last 10 years,there still lacks extensive study on the impacts of repair techniques,subject programs,and test suites on the repair effectiveness and efficiency.So we perform such an extensive study on repairing 180 faults with 5 primary techniques under 25 different sets of tests.The results show that techniques which work well with small programs become too costly or ineffective when applied to large-sized programs.And there are two main reasons for these flaws: first,search space of candidate patches is too large to exhaust with the increase of project size;second,some real faults are too complex to fix by applying simple repair patterns.To solve the above two problems,we propose two techniques,Mutation-Based Iterative Program Repair and Architecture Guided Multi-locations Program Repair,aiming to improve the effectiveness of program repair for large-sized projects.In summary,the paper makes the following three contributions:(1)We study the impacts of repair techniques,subjects,and tests on the repair effectiveness and efficiency,and further investigate the flaws of the techniques.The results show that techniques that work well with small programs become too costly or ineffective when applied to large-sized programs.Among the five studied techniques,Brute-force performs the best on small-sized subjects;when applied to large-sized subjects,Kali is the most efficient technique,and AE is the most effective technique.Since candidate patches generated by Gen Prog can contain more than one repair actions,it can be used to fix some hard-to-repair bugs.RSRepair takes a little longer time to finish repair attempts than Kali,but the success rates of RSRepair are the lowest in our study.In the study,adding more passed tests can help to reduce overfitting patches,but it cannot impact the effectiveness in terms of real success rate;adding more failed tests can reduce more over-fitting patches than adding passed tests and it is beneficial for real success rate to some extent.Finally,we find that all the studied repair techniques except RSRepair can find more than 80% of successful patches within the first 50% of search space.(2)To solve the problem that search space of candidate patches is too large to exhaust with the increase of project size,we propose Mutation-Based Iterative Program Repair,which divides repair attempts into three steps,initial repair,mutation-based fault localization and iterative repair.We apply an efficient program repair technique in the step of initial repair.If the initial repair attempt is failed,we use mutation-based fault localization by treating all the candidate patches as mutants.The new ranked list is used in the step of iterative repair.We apply an effective technique as iterative repair.The priority of candidate patches in iterative repair is optimized by utilizing a more accurate ranked list.And we apply program equivalence checking technique to reduce redundant patches related with the failed patches in initial repair.These optimizations greatly refine the search space in iterative repair.The results show that MutationBased Iterative Program Repair can clearly improve the effectiveness of automated program repair,the real successful rate is 15%,which is higher than the rates of AE and Kali(10%and 7%);we also find that if there exists f2 p in mutants analysis,MUSE performs better than Metallaxis in terms of accuracy and vice versa.(3)To solve the problem that some real faults are too complex to fix by applying simple repair patterns,we propose Architecture Guided Multi-locations Program Repair.The technique locates related suspicious statements by applying mutation-based fault localization and directory-based extraction of design rule spaces.The technique finds out several related suspicious statements according to the architecture-level hidden relationships between files,which are presented as design rule spaces.The candidate patches generated here can contain several repair actions from different locations.The results show that Architecture Guided Multi-locations Program Repair performs better than Kali and AE in terms of success rates,and the technique can find a real successful patch for Wireshark-37190-37191;we also find that the technique is inefficient due to the huge cost of mutant analysis and the large number of candidate patches.We propose an extensive empirical study to investigate the impacts of several factors on general automated program repair and further explore the flaws of the techniques when applied on large-sized faulty projects.The comprehensive results can provide promising directions of improvements for automated program repair.To make automated program repair easily scale to large-sized projects,we propose two improved techniques.Although the massive cost of mutation analysis brings down the overall efficiency,the two techniques still can greatly improve the effectiveness and help to fix the flaws of enormous search space and hard-to-repair real faults.
Keywords/Search Tags:Automated Program Repair, Fault Localization, Mutation Analysis, Design Rule Space
PDF Full Text Request
Related items