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 条
  • [1] Understanding the API usage in Java']Java
    Qiu, Dong
    Li, Bixin
    Leung, Hareton
    INFORMATION AND SOFTWARE TECHNOLOGY, 2016, 73 : 81 - 100
  • [2] Understanding the syntactic rule usage in java']java
    Qiu, Dong
    Li, Bixin
    Barr, Earl T.
    Su, Zhendong
    JOURNAL OF SYSTEMS AND SOFTWARE, 2017, 123 : 160 - 172
  • [3] Understanding the Exception Handling Strategies of Java']Java Libraries: An Empirical Study
    Sena, Demostenes
    Coelho, Roberta
    Kulesza, Uira
    Bonifacio, Rodrigo
    13TH WORKING CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR 2016), 2016, : 212 - 222
  • [4] On tracking Java']Java methods with Git mechanisms
    Higo, Yoshiki
    Hayashi, Shinpei
    Kusumoto, Shinji
    JOURNAL OF SYSTEMS AND SOFTWARE, 2020, 165
  • [5] An empirical study of data constraint implementations in Java']Java
    Florez, Juan Manuel
    Moreno, Laura
    Zhang, Zenong
    Wei, Shiyi
    Marcus, Andrian
    EMPIRICAL SOFTWARE ENGINEERING, 2022, 27 (05)
  • [6] The evolution of Java']Java build systems
    McIntosh, Shane
    Adams, Bram
    Hassan, Ahmed E.
    EMPIRICAL SOFTWARE ENGINEERING, 2012, 17 (4-5) : 578 - 608
  • [7] Efficient runtime metaprogramming services for Java']Java
    Lagartos, Ignacio
    Manuel Redondo, Jose
    Ortin, Francisco
    JOURNAL OF SYSTEMS AND SOFTWARE, 2019, 153 : 220 - 237
  • [8] Towards the Integration of Metaprogramming Services into Java']Java
    Lagartos, Ignacio
    Manuel Redondo, Jose
    Ortin, Francisco
    ENASE: PROCEEDINGS OF THE 12TH INTERNATIONAL CONFERENCE ON EVALUATION OF NOVEL APPROACHES TO SOFTWARE ENGINEERING, 2017, : 277 - 284
  • [9] Java']Java™:: the practical virtuality of Internet programming
    MacKenzie, Adrian
    NEW MEDIA & SOCIETY, 2006, 8 (03) : 441 - 465
  • [10] Dissection on Java']Java Organs in GitHub Repositories
    Wang, Shangwen
    Mao, Xiaoguang
    Yi, Xin
    IEEE ACCESS, 2019, 7 : 62561 - 62576