NPEX: Repairing Java']Java Null Pointer Exceptions without Tests

被引:7
作者
Lee, Junhee [1 ]
Hong, Seongjoon [1 ]
Oh, Hakjoo [1 ]
机构
[1] Korea Univ, Seoul, South Korea
来源
2022 ACM/IEEE 44TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2022) | 2022年
基金
新加坡国家研究基金会;
关键词
CODE;
D O I
10.1145/3510003.3510186
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present NPEX, a new technique for repairing Java null pointer exceptions (NPEs) without tests. State-of-the-art NPE repair techniques rely on test suites written by developers for patch validation. Unfortunately, however, those are typically future test cases that are unavailable at the time bugs are reported or insufficient to identify correct patches. Unlike existing techniques, NPEX does not require test cases; instead, NPEX automatically infers the repair specification of the buggy program and uses the inferred specification to validate patches. The key idea is to learn a statistical model that predicts how developers would handle NPEs by mining null-handling patterns from existing codebases, and to use a variant of symbolic execution that can infer the repair specification from the buggy program using the model. We evaluated NPEX on real-world NPEs collected from diverse open-source projects. The results show that NPEX significantly outperforms the current state-of-the-art.
引用
收藏
页码:1532 / 1544
页数:13
相关论文
共 70 条
  • [41] Lutellier T, 2020, PROCEEDINGS OF THE 29TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON SOFTWARE TESTING AND ANALYSIS, ISSTA 2020, P101, DOI 10.1145/3395363.3397369
  • [42] Madeiral F, 2019, 2019 IEEE 26TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER), P468, DOI [10.1109/SANER.2019.8667991, 10.1109/saner.2019.8667991]
  • [43] Madhavan R, 2011, OOPSLA 11: PROCEEDINGS OF THE 2011 ACM INTERNATIONAL CONFERENCE ON OBJECT ORIENTED PROGRAMMING SYSTEMS LANGUAGES AND APPLICATIONS, P1033
  • [44] Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis
    Mechtaev, Sergey
    Yi, Jooyong
    Roychoudhury, Abhik
    [J]. 2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, : 691 - 701
  • [45] DirectFix: Looking for Simple Program Repairs
    Mechtaev, Sergey
    Yi, Jooyong
    Roychoudhury, Abhik
    [J]. 2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, VOL 1, 2015, : 448 - 458
  • [46] Automatic Software Repair: A Bibliography
    Monperrus, Martin
    [J]. ACM COMPUTING SURVEYS, 2018, 51 (01)
  • [47] IntRepair: Informed Repairing of Integer Overflows
    Muntean, Paul
    Monperrus, Martin
    Sun, Hao
    Grossklags, Jens
    Eckert, Claudia
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2021, 47 (10) : 2225 - 2241
  • [48] Accurate Interprocedural Null-Dereference Analysis for Java']Java
    Nanda, Mangala Gowri
    Sinha, Saurabh
    [J]. 2009 31ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, PROCEEDINGS, 2009, : 133 - 143
  • [49] SPOON: A library for implementing analyses and transformations of Java']Java source code
    Pawlak, Renaud
    Monperrus, Martin
    Petitprez, Nicolas
    Noguera, Carlos
    Seinturier, Lionel
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2016, 46 (09) : 1155 - 1179
  • [50] Saha RK, 2017, IEEE INT CONF AUTOM, P648, DOI 10.1109/ASE.2017.8115675