Title Page
Abstract
Contents
1. Introduction 11
2. Background 16
2.1. Bug Types 16
2.2. Patch Types 18
2.3. Pre-trained and Fine-tuned model 18
3. Related Work 20
3.1. APR Types 20
3.2. Multi-chunk Program Repair 25
4. Approach 26
4.1. Overall Architecture 26
4.2. Learning-based Generation 27
4.3. Pattern-based Generation 30
4.3.1. FP Selection and Combination 34
4.3.2. FP Application 34
4.4. Improved Patch Modeling 35
4.4.1. Patch Filtering 37
4.4.2. Patch Ranking 39
4.4.3. Patch Combination 45
5. Experimental Setup 49
5.1. Research Questions 49
5.2. Datasets and Tools 50
5.3. Parameters Setting 51
5.4. Baselines 51
6. Experiment Results 52
6.1. What is the performance of the proposed technique against its baselines (RQ1)? 52
6.2. What is the generalizability of the proposed approach (RQ2)? 55
6.3. What is the contribution of each component in the proposed approach (RQ3)? 57
7. Discussion 60
7.1. Findings 60
7.2. Limitations 61
8. Conclusion 64
References 65
국문 초록 72
Table 1. The number of bugs in each module of Defects4J 1.2 divided into four types according to the number of buggy chunks. 50
Table 2. RQ1. Comparison with learning-based techniques (C: Chart, CL: Closure, L: Lang, M: Math, MC: Mockito, T: Time) 53
Table 3. RQ1. Comparison with template-based techniques (C: Chart, CL: Closure, L: Lang, M: Math, MC: Mockito, T: Time) 54
Table 4. RQ3. Ablation Study for this approach on Defects4j 1.2. (C: Chart, CL: Closure, L: Lang, M: Math, MC: Mockito, T: Time) 57
Figure 1. A single-chunk bug 17
Figure 2. A multi-chunk bug 17
Figure 3. Overall architecture of this approach 26
Figure 4. Learning-based patch generation process. 27
Figure 5. Buggy block making process. 28
Figure 6. FP selection and application 35
Figure 7. Patch Modeling process 37
Figure 8. Examples of patches containing additional stream codes 39
Figure 9. The details of the improved Patch Ranking 43
Figure 10. RQ1. Venn diagram for comparison with the SOTA APRs 55
Figure 11. Performance comparison between this approach and its baselines for multi-chunk bugs... 56
Figure 12. Venn diagrams for sensitivity analysis. 59
Figure 13. Chart-7, correctly repaired bug by this technique, which is the same with the developer's patch.... 61
Figure 14. Closure-117, a bug not fixed by this technique. 63
Figure 15. Lang-39, a bug not fixed by this technique. 63