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
基金
新加坡国家研究基金会;
关键词
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
相关论文
共 50 条
  • [41] Let this Graph Be Your Witness! An Attestor for Verifying Java']Java Pointer Programs
    Arndt, Hannah
    Jansen, Christina
    Katoen, Joost-Pieter
    Matheja, Christoph
    Noll, Thomas
    COMPUTER AIDED VERIFICATION, CAV 2018, PT II, 2018, 10982 : 3 - 11
  • [42] No Java']Java without caffeine -: A tool for dynamic analysis of Java']Java programs
    Guéhéneuc, YG
    Douence, R
    Jussien, N
    ASE 2002: 17TH IEEE INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, 2002, : 117 - 126
  • [43] Bottom-Up Context-Sensitive Pointer Analysis for Java']Java
    Feng, Yu
    Wang, Xinyu
    Dillig, Isil
    Dillig, Thomas
    PROGRAMMING LANGUAGES AND SYSTEMS, APLAS 2015, 2015, 9458 : 465 - 484
  • [44] Scalable Flow-Sensitive Pointer Analysis for Java']Java with Strong Updates
    De, Arnab
    D'Souza, Deepak
    ECOOP 2012 - OBJECT-ORIENTED PROGRAMMING, 2012, 7313 : 665 - 687
  • [45] Accurate Interprocedural Null-Dereference Analysis for Java']Java
    Nanda, Mangala Gowri
    Sinha, Saurabh
    2009 31ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, PROCEEDINGS, 2009, : 133 - 143
  • [46] Provably correct control flow graphs from Java']Java bytecode programs with exceptions
    Amighi, Afshin
    Gomes, Pedro de Carvalho
    Gurov, Dilian
    Huisman, Marieke
    INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2016, 18 (06) : 653 - 684
  • [47] Exploring the interaction between Java']Java's implicitly thrown exceptions and instruction scheduling
    Arnold, M
    Hsiao, M
    Kremer, U
    Ryder, BG
    INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, 2001, 29 (02) : 111 - 137
  • [48] NULLAWAY: Practical Type-Based Null Safety for Java']Java
    Banerjee, Subarno
    Clapp, Lazaro
    Sridharan, Manu
    ESEC/FSE'2019: PROCEEDINGS OF THE 2019 27TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2019, : 740 - 750
  • [49] Pluggable checking and inferencing of non-null types for Java']Java
    Ekman, Torbjoern
    Hedin, Gorel
    JOURNAL OF OBJECT TECHNOLOGY, 2007, 6 (09): : 455 - 475
  • [50] Tracking Null Checks in Open-Source Java']Java Systems
    Osman, Haidar
    Leuenberger, Manuel
    Lungu, Mircea
    Nierstrasz, Oscar
    2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER), VOL 1, 2016, : 304 - 313