MintHint: Automated Synthesis of Repair Hints
MintHint is a novel approach to the problem of automated program repair. It generates repair hints to assist the programmer, as opposed to generating a complete repaired program. MintHint, in its current form, assumes that faults in the program are due to an infection in the program state induced by the RHS of a single assignment statement. An assignment statement could be viewed as a state transformer that transforms the incoming program state to another state where only the LHS variable gets updated. In the case of a faulty RHS in the assignment statement, the LHS variable gets an incorrect value and thus the state transformer is faulty. MintHint first tries to generate the correct state transformer for the assignment statement and then finds the correct RHS expression that would generate this state transformer.
To generate repair hints, MintHint operates in four steps:
Fault Localization: Given the faulty program and its test suite, MintHint generates a list of suspicious statements using a third-party localization tool. Since MintHint assumes there is only a single fault in the program, it analyses each statement independently.
Derivation of State Transformer: For each statement, the correct state transformer is derived by leveraging dynamic symbolic execution techniques.
Ranking of Likely Expressions: A set of expressions that are likely to occur in the repaired RHS expression is obtained by statistical correlation analysis. This step explores a repair space identified by MintHint.
Synthesis of Repair Hints: The set of likely expressions are matched with the faulty RHS expression to generate repair hints. These hints are then ranked according to a confidence value computed by MintHint.
A prototype implementation of MintHint is available for use:
Clone the repository
git clone https://email@example.com/iiscseal/minthint.git
Follow the instructions in the README
1. Shalini Kaleeswaran, Varun Tulsian, Aditya Kanade and Alessandro Orso
Shalini Kaleeswaran (contact)
This work is partially funded by Robert Bosch Centre for Cyber Physical Systems, Indian Institute of Science and by NSF awards CCF-1320783, CCF-1161821, and CCF-0964647 to Georgia Tech.