Understanding Type Changes in Java']Java

被引:14
作者
Ketkar, Ameya [1 ]
Tsantalis, Nikolaos [2 ]
Dig, Danny [3 ]
机构
[1] Oregon State Univ, Corvallis, OR 97331 USA
[2] Concordia Univ, Montreal, PQ, Canada
[3] Univ Colorado, Boulder, CO 80309 USA
来源
PROCEEDINGS OF THE 28TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '20) | 2020年
基金
加拿大自然科学与工程研究理事会;
关键词
Empirical Study; Type Change Mining; Type Change Adaptations; Type Change Patterns; Type Migration; Git; Commit; SUPPORT; REFACTORINGS; CODE;
D O I
10.1145/3368089.3409725
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Developers frequently change the type of a program element and update all its references for performance, security, concurrency, library migration, or better maintainability. Despite type changes being a common program transformation, it is the least automated and the least studied. With this knowledge gap, researchers miss opportunities to improve the state of the art in automation for software evolution, tool builders do not invest resources where automation is most needed, language and library designers cannot make informed decisions when introducing new types, and developers fail to use common practices when changing types. To fill this gap, we present the first large-scale and most fine-grained empirical study on type changes in Java. We develop state-of-the-art tools to statically mine 297,543 type changes and their subsequent code adaptations from a diverse corpus of 129 Java projects containing 416,652 commits. With this rich dataset we answer research questions about the practice of type changes. Among others, we found that type changes are actually more common than renamings, but the current research and tools for type changes are inadequate. Based on our extensive and reliable data, we present actionable, empirically-justified implications.
引用
收藏
页码:629 / 641
页数:13
相关论文
共 50 条
  • [41] How README files are structured in open source Java']Java projects
    Liu, Yuyang
    Noei, Ehsan
    Lyons, Kelly
    INFORMATION AND SOFTWARE TECHNOLOGY, 2022, 148
  • [42] Java']Java in the High Performance Computing arena: Research, practice and experience
    Taboada, Guillermo L.
    Ramos, Sabela
    Exposito, Roberto R.
    Tourino, Juan
    Doallo, Ramon
    SCIENCE OF COMPUTER PROGRAMMING, 2013, 78 (05) : 425 - 444
  • [43] An Experimental Comparison of Clone Detection Techniques using Java']Java Bytecode
    Schneider, Jean-Guy
    Lee, Sung Une
    2022 29TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE, APSEC, 2022, : 139 - 148
  • [44] Understanding Java']JavaScript Vulnerabilities in Large Real-World Android Applications
    Song, Wei
    Huang, Qingqing
    Huang, Jeff
    IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING, 2020, 17 (05) : 1063 - 1078
  • [45] Type of cancer and complementary and alternative medicine are determinant factors for the patient delay experienced by children with cancer: A study in West Java']Java, Indonesia
    Sari, Nur Melani
    Devansyah, Sultan
    Modjaningrat, Ismiana
    Suryawan, Nur
    Susanah, Susi
    Rakhmillah, Lulu
    Wahyudi, Kurnia
    Kaspers, Gertjan J. L.
    PEDIATRIC BLOOD & CANCER, 2023, 70 (04)
  • [46] Rotten green tests in Java']Java, Pharo and Python']Python An empirical study
    Aranega, Vincent
    Delplanque, Julien
    Martinez, Matias
    Black, Andrew P.
    Ducasse, Stephane
    Etien, Anne
    Fuhrman, Christopher
    Polito, Guillermo
    EMPIRICAL SOFTWARE ENGINEERING, 2021, 26 (06)
  • [47] Code coverage differences of Java']Java bytecode and source code instrumentation tools
    Horvath, Ferenc
    Gergely, Tamas
    Beszedes, Arpad
    Tengeri, David
    Balogh, Gergo
    Gyimothy, Tibor
    SOFTWARE QUALITY JOURNAL, 2019, 27 (01) : 79 - 123
  • [48] Comparison and Evaluation on Static Application Security Testing (SAST) Tools for Java']Java
    Li, Kaixuan
    Chen, Sen
    Fan, Lingling
    Feng, Ruitao
    Liu, Han
    Liu, Chengwei
    Liu, Yang
    Chen, Yixiang
    PROCEEDINGS OF THE 31ST ACM JOINT MEETING EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, ESEC/FSE 2023, 2023, : 921 - 933
  • [49] Challenges for Static Analysis of Java']Java Reflection - Literature Review and Empirical Study
    Landman, Davy
    Serebrenik, Alexander
    Vinju, Jurgen J.
    2017 IEEE/ACM 39TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2017, : 507 - 518
  • [50] Enhancing Java']Java Runtime Environment for Smart Cards Against Runtime Attacks
    Akram, Raja Naeem
    Markantonakis, Konstantinos
    Mayes, Keith
    COMPUTER SECURITY - ESORICS 2015, PT II, 2015, 9327 : 541 - 560