Affiliation:
1. Nanjing University of Aeronautics and Astronautics, China
2. School of Software, Beihang University, China
3. Sabanci University, Turkey
4. Kyungpook National University, South Korea
5. School of Software, Shandong University, China
6. University of Luxembourg, Luxembourg
Abstract
Fix pattern-based patch generation is a promising direction in automated program repair (APR). Notably, it has been demonstrated to produce more acceptable and correct patches than the patches obtained with mutation operators through genetic programming. The performance of pattern-based APR systems, however, depends on the fix ingredients mined from fix changes in development histories. Unfortunately, collecting a reliable set of bug fixes in repositories can be challenging. In this article, we propose investigating the possibility in an APR scenario of leveraging fix patterns inferred from code changes that address violations detected by static analysis tools. To that end, we build a fix pattern-based APR tool,
Avatar
, which exploits fix patterns of static analysis violations as ingredients for the patch generation of repairing semantic bugs. Evaluated on four benchmarks (i.e., Defects4J, Bugs.jar, BEARS, and QuixBugs),
Avatar
presents the potential feasibility of fixing semantic bugs with the fix patterns inferred from the patches for fixing static analysis violations and can correctly fix 26 semantic bugs when
Avatar
is implemented with the normal program repair pipeline. We also find that
Avatar
achieves performance metrics that are comparable to that of the closely related approaches in the literature. Compared with CoCoNut,
Avatar
can fix 18 new bugs in Defects4J and 3 new bugs in QuixBugs. When compared with HDRepair, JAID, and SketchFix,
Avatar
can newly fix 14 Defects4J bugs. In terms of the number of correctly fixed bugs,
Avatar
is also comparable to the program repair tools with the normal fault localization setting and presents better performance than most program repair tools. These results imply that
Avatar
is complementary to current program repair approaches. We further uncover that
Avatar
can present different bug-fixing performances when it is configured with different fault localization tools, and the stack trace information from the failed executions of test cases can be exploited to improve the bug-fixing performance of
Avatar
by fixing more bugs with fewer generated patch candidates. Overall, our study highlights the relevance of static bug-finding tools as indirect contributors of fix ingredients for addressing code defects identified with functional test cases (i.e., dynamic information).
Funder
National Key R&D Program of China
National Natural Science Foundation of China
Natural Science Foundation of Jiangsu Province, China
Open Project Program of the State Key Laboratory of Mathematical Engineering and Advanced Computing
European Research Council
European Union’s Horizon 2020
National Research Foundation of Korea
Kyungpook National University Research Fund, 2020
Publisher
Association for Computing Machinery (ACM)
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献