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 条
  • [31] Cloned and non-cloned Java']Java methods: a comparative study
    Saini, Vaibhav
    Sajnani, Hitesh
    Lopes, Cristina
    EMPIRICAL SOFTWARE ENGINEERING, 2018, 23 (04) : 2232 - 2278
  • [32] Benchmarking and Categorizing the Performance of Neural Program Repair Systems for Java']Java
    Zhong, Wenkang
    Li, Chuanyi
    Liu, Kui
    Ge, Jidong
    Luo, Bin
    Bissyande, TEGAWENDe F.
    Ng, Vincent
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2024, 34 (01)
  • [33] What Java']Java developers know about compatibility, and why this matters
    Dietrich, Jens
    Jezek, Kamil
    Brada, Premek
    EMPIRICAL SOFTWARE ENGINEERING, 2016, 21 (03) : 1371 - 1396
  • [34] NPEX: Repairing Java']Java Null Pointer Exceptions without Tests
    Lee, Junhee
    Hong, Seongjoon
    Oh, Hakjoo
    2022 ACM/IEEE 44TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2022), 2022, : 1532 - 1544
  • [35] How README files are structured in open source Java']Java projects
    Liu, Yuyang
    Noei, Ehsan
    Lyons, Kelly
    INFORMATION AND SOFTWARE TECHNOLOGY, 2022, 148
  • [36] A hardware-oriented object model for Java']Java in an embedded processor
    Tan Yiyu
    MICROPROCESSORS AND MICROSYSTEMS, 2018, 63 : 85 - 97
  • [37] 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
  • [38] 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
  • [39] A Line-Level Explainable Vulnerability Detection Approach for Java']Java
    Mosolygo, Balazs
    Vandor, Norbert
    Hegedus, Peter
    Ferenc, Rudolf
    COMPUTATIONAL SCIENCE AND ITS APPLICATIONS - ICCSA 2022 WORKSHOPS, PART IV, 2022, 13380 : 106 - 122
  • [40] Characteristics of method extractions in Java']Java: a large scale empirical study
    Hora, Andre
    Robbes, Romain
    EMPIRICAL SOFTWARE ENGINEERING, 2020, 25 (03) : 1798 - 1833