Automatic program repair and synthesis using genetic programming

When bugs in a program are identified by a debugger or a program verifier, the developer of the program would have to manually interpret the bugs, refine the program, and perform verification for the fix until the program is bug free. This repeated process of checking and trying fixes is tedious and...

Full description

Saved in:
Bibliographic Details
Main Author: Lee, Yue Yu
Other Authors: Lin Shang-Wei
Format: Final Year Project
Language:English
Published: 2017
Subjects:
Online Access:http://hdl.handle.net/10356/70294
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Nanyang Technological University
Language: English
Description
Summary:When bugs in a program are identified by a debugger or a program verifier, the developer of the program would have to manually interpret the bugs, refine the program, and perform verification for the fix until the program is bug free. This repeated process of checking and trying fixes is tedious and error-prone, and logical errors made by the developer are often hard to spot during the debugging process. This project aims to make use of genetic programming to develop a tool which performs automatic program repair, and benchmarks used by other existing tools are also incorporated for testing how well the developed tool performs. Since the end goal would be to produce a compilable and runnable patched program from a previously buggy one, variables used for patch synthesis would need to be obtained from the original buggy program, and patches generated would need to be in the same programming language as well. The tool will first identify the variables available for patch synthesis; after which, a population of patches will be randomly generated through combining the variables and constants with different logical and mathematical operators; these patches will then be rated by a fitness function for their suitability in becoming a fix for the buggy program. Based on the fitness function, unfit patches will also be removed. Lastly, variations will also be introduced to the population in the hope of generating better patches from the process. The cycle of fitness value determination, selection and variation will be repeated until a good patch capable of passing most, if not all of the test cases in the benchmark, is generated.