Precise Condition Synthesis for Program Repair
Yingfei Xiong, Jie Wang, Runfa Yan, Jiachen Zhang, Shi Han, Gang, Huang, Lu Zhang

TL;DR
This paper introduces ACS, a novel program repair system that synthesizes precise conditions for bug fixes, significantly improving repair accuracy and success rate on real-world datasets by leveraging variable dependency, API documentation, and predicate mining.
Contribution
The paper presents a new condition synthesis approach for program repair that enhances precision and repair success, outperforming previous methods on the Defects4J dataset.
Findings
Repaired 17 defects on four projects, the largest number reported.
Achieved a repair precision of 73.9%, surpassing previous approaches.
Developed techniques for variable relevance, API-guided filtering, and predicate mining.
Abstract
Due to the difficulty of repairing defect, many research efforts have been devoted into automatic defect repair. Given a buggy program that fails some test cases, a typical automatic repair technique tries to modify the program to make all tests pass. However, since the test suites in real world projects are usually insufficient, aiming at passing the test suites often leads to incorrect patches. In this paper we aim to produce precise patches, that is, any patch we produce has a relatively high probability to be correct. More concretely, we focus on condition synthesis, which was shown to be able to repair more than half of the defects in existing approaches. Our key insight is threefold. First, it is important to know what variables in a local context should be used in an "if" condition, and we propose a sorting method based on the dependency relations between variables. Second, we…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Software Reliability and Analysis Research · Software Engineering Research
