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
基金
加拿大自然科学与工程研究理事会;
关键词
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 Java']Java
    Currie, CC
    SOCIETY FOR TECHNICAL COMMUNICATION 44TH ANNUAL CONFERENCE, 1997 PROCEEDINGS, 1997, : 356 - 359
  • [2] Understanding the behavior of Java']Java programs
    Systä, T
    SEVENTH WORKING CONFERENCE ON REVERSE ENGINEERING - PROCEEDINGS, 2000, : 214 - 223
  • [3] Understanding the API usage in Java']Java
    Qiu, Dong
    Li, Bixin
    Leung, Hareton
    INFORMATION AND SOFTWARE TECHNOLOGY, 2016, 73 : 81 - 100
  • [4] Understanding Java']Java stack inspection
    Wallach, DS
    Felten, EW
    1998 IEEE SYMPOSIUM ON SECURITY AND PRIVACY - PROCEEDINGS, 1998, : 52 - 63
  • [5] Understanding the shape of Java']Java software
    Baxter, Gareth
    Frean, Marcus
    Noble, James
    Rickerby, Mark
    Smith, Hayden
    Visser, Matt
    Melton, Hayden
    Tempero, Ewan
    ACM SIGPLAN NOTICES, 2006, 41 (10) : 397 - 412
  • [6] Understanding and Analyzing Java']Java Reflection
    Li, Yue
    Tan, Tian
    Xue, Jingling
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2019, 28 (02)
  • [7] The indolent lambdification of Java']Java Understanding the support for lambda expressions in the Java']Java ecosystem
    Petrulio, Fernando
    Sawant, Anand Ashok
    Bacchelli, Alberto
    EMPIRICAL SOFTWARE ENGINEERING, 2021, 26 (06)
  • [8] Steps toward understanding performance in Java']Java
    Lea, D
    SEVENTH HETEROGENEOUS COMPUTING WORKSHOP (HCW '98), 1998, : 171 - 172
  • [9] Understanding and Finding Java']Java Decompiler Bugs
    Lu, Yifei
    Hou, Weidong
    Pan, Minxue
    Li, Xuandong
    Su, Zhendong
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (OOPSLA):
  • [10] Understanding Threads in an Advanced Java']Java Course
    Benaya, Tamar
    Zur, Ela
    ITICSE 2007: 12TH ANNUAL CONFERENCE ON INNOVATION & TECHNOLOGY IN COMPUTER SCIENCE EDUCATION, 2007, : 323 - 323