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 条
  • [21] How Do Developers Use the Java']Java Stream API?
    Nostas, Joshua
    Sandoval Alcocer, Juan Pablo
    Elias Costa, Diego
    Bergel, Alexandre
    COMPUTATIONAL SCIENCE AND ITS APPLICATIONS, ICCSA 2021, PT VII, 2021, 12955 : 323 - 335
  • [22] Characterizing the Usage, Evolution and Impact of Java']Java Annotations in Practice
    Yu, Zhongxing
    Bai, Chenggang
    Seinturier, Lionel
    Monperrus, Martin
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2021, 47 (05) : 969 - 986
  • [23] Why Do Developers Remove Lambda Expressions in Java']Java?
    Zheng, Mingwei
    Yang, Jun
    Wen, Ming
    Zhu, Hengcheng
    Liu, Yepang
    Jin, Hai
    2021 36TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING ASE 2021, 2021, : 67 - 78
  • [24] Unveiling Exception Handling Guidelines Adopted by Java']Java Developers
    Melo, Hugo
    Coelho, Roberta
    Treude, Christoph
    2019 IEEE 26TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER), 2019, : 128 - 139
  • [25] Instruction Folding Compression for Java']Java Card Runtime Environment
    Zilli, Massimiliano
    Raschke, Wolfgang
    Weiss, Reinhold
    Steger, Christian
    Loinig, Johannes
    2014 17TH EUROMICRO CONFERENCE ON DIGITAL SYSTEM DESIGN (DSD), 2014, : 228 - 235
  • [26] Outside the Sandbox: A Study of Input/Output Methods in Java']Java
    Sulir, Matus
    Chodarev, Sergej
    Nosal, Milan
    27TH INTERNATIONAL CONFERENCE ON EVALUATION AND ASSESSMENT IN SOFTWARE ENGINEERING, EASE 2023, 2023, : 253 - 258
  • [27] A Provably Correct Stackless Intermediate Representation for Java']Java Bytecode
    Demange, Delphine
    Jensen, Thomas
    Pichardie, David
    PROGRAMMING LANGUAGES AND SYSTEMS, 2010, 6461 : 97 - +
  • [28] BScout: Direct Whole Patch Presence Test for Java']Java Executables
    Dai, Jiarun
    Zhang, Yuan
    Jiang, Zheyue
    Zhou, Yingtian
    Chen, Junyan
    Xing, Xinyu
    Zhang, Xiaohan
    Tan, Xin
    Yang, Min
    Yang, Zhemin
    PROCEEDINGS OF THE 29TH USENIX SECURITY SYMPOSIUM, 2020, : 1147 - 1164
  • [29] An Empirical Study on the Characteristics of Database Access Bugs in Java']Java Applications
    Liu, Wei
    Mondal, Shouvick
    Chen, Tse-Hsun
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2024, 33 (07)
  • [30] Safe automated refactoring for intelligent parallelization of Java']Java 8 streams
    Khatchadourian, Raffi
    Tang, Yiming
    Bagherzadeh, Mehdi
    SCIENCE OF COMPUTER PROGRAMMING, 2020, 195