Semantics-based repair for Java programs

Project maintained by xuanbachle Hosted on GitHub Pages — Theme by mattgraham

Welcome to JFix - semantics-based repair for Java programs.


S3's results on our FSE'17 paper

JFIX's and S3's source code are available here: Jfix/S3 inference engine AND S3's synthesis engine

We are working on porting the results, code, and benchmarks to this website. But for the moment, please refer to the results of S3 in the above link

JFix is a semantics-based repair framework for Java programs. It translates and extends its counterpart Angelix, which originally works on C programs. JFix is designed to work on Java-specific bugs such as bugs related to method calls. It is also able to handle other various types of bugs, including assignments, if-conditions, loop-conditions, and guards.

JFix performs selective symbolic execution against test cases to collect error-free execution paths and the corresponding path conditions. It then solves the path conditions to infer specifications that prevent the program under repair from test failures. The inferred specifications can be used by a number of repair synthesis engines to synthesize repairs.

Eclipse plugin

Screen Shot compare dialog when a repair is found

Above is a screen shot showing a compare dialog when a repair is found by JFix in the Eclipse programming environment. Right click on the image, choose View image, for a better resolution.

JFix can repair buggy programs with the push of a button. It is integrated into the Eclipse programming environment with a plugin that suggests fixes to the buggy programs, allowing developers to inspect, modify, and approve the suggested fixes.

Installation and Tutorial

Coming soon.

Insert your error message here, if the PDF cannot be displayed.


LE, Dinh Xuan Bach Under the supervision of David Lo


Duc Hiep Chu, Claire Le Goues, Willem Visser.

Support or Contact

Email to: bachldx@gmail.com