Vector Abstraction and Concretization for Scalable Detection of Refactorings

被引:8
|
作者
Milea, Narcisa Andreea [1 ]
Jiang, Lingxiao [2 ]
Khoo, Siau-Cheng [1 ]
机构
[1] Natl Univ Singapore, Sch Comp, Singapore, Singapore
[2] Singapore Management Univ, Sch Informat Syst, Singapore, Singapore
来源
22ND ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (FSE 2014) | 2014年
关键词
Refactoring Detection; Software Evolution; Vector-Based Code Representation; CODE; IDENTIFICATION; SPECIFICATIONS; CLONES;
D O I
10.1145/2635868.2635926
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Automated techniques have been proposed to either identify refactoring opportunities (i.e., code fragments that can be but have not yet been restructured in a program), or reconstruct historical refactorings (i.e., code restructuring operations that have happened between different versions of a program). In this paper, we propose a new technique that can detect both refactoring opportunities and historical refactorings in large code bases. The key of our technique is the design of vector abstraction and concretization operations that can encode code changes induced by certain refactorings as characteristic vectors. Thus, the problem of identifying refactorings can be reduced to the problem of identifying matching vectors, which can be solved efficiently. We have implemented our technique for Java. The prototype is applied to 200 bundle projects from the Eclipse ecosystem containing 4.5 million lines of code, and reports in total more than 32K instances of 17 types of refactoring opportunities, taking 25 minutes on average for each type. The prototype is also applied to 14 versions of 3 smaller programs (JMeter, Ant, XML-Security), and detects (1) more than 2.8K refactoring opportunities within individual versions with a precision of about 87%, and (2) more than 190 historical refactorings across consecutive versions of the programs with a precision of about 92%.
引用
收藏
页码:86 / 97
页数:12
相关论文
共 50 条
  • [1] ON THE DIALECTICS OF ABSTRACTION AND CONCRETIZATION
    THIEL, R
    DEUTSCHE ZEITSCHRIFT FUR PHILOSOPHIE, 1984, 32 (04): : 360 - 370
  • [2] Constraints in One-to-Many Concretization for Abstraction Refinement
    Nanshi, Kuntal
    Somenzi, Fabio
    DAC: 2009 46TH ACM/IEEE DESIGN AUTOMATION CONFERENCE, VOLS 1 AND 2, 2009, : 569 - 574
  • [3] Concept as a Bridge between Abstraction and Concretization in Design Knowledge Visualization
    Eilouti, Buthayna
    2018 22ND INTERNATIONAL CONFERENCE INFORMATION VISUALISATION (IV), 2018, : 407 - 412
  • [4] Lightweight detection of program refactorings
    Atkinson, DC
    King, T
    12TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE, PROCEEDINGS, 2005, : 663 - 670
  • [5] AUTOMATIC DETECTION OF POSSIBLE REFACTORINGS
    Peldzius, Stasys
    INFORMATION TECHNOLOGIES' 2010, 2010, : 238 - 245
  • [7] KACC: A Multi-task Benchmark for Knowledge Abstraction, Concretization and Completion
    Zhou, Jie
    Hu, Shengding
    Lv, Xin
    Yang, Cheng
    Liu, Zhiyuan
    Xu, Wei
    Jiang, Jie
    Li, Juanzi
    Sun, Maosong
    FINDINGS OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS, ACL-IJCNLP 2021, 2021, : 1751 - 1763
  • [8] Methods of Abstraction, Idealization and Concretization in Logic: the Case of Shifted Time in Factual Conditionals
    Gaher, Frantisek
    FILOZOFIA, 2020, 75 (08): : 660 - 676
  • [9] Refactorings Detection Using Hierarchical Clustering
    Czibula, Istvan Gergely
    Czibula, Gabriela
    PROCEEDINGS OF THE 2ND EUROPEAN COMPUTING CONFERENCE: NEW ASPECTS ON COMPUTERS RESEACH, 2008, : 332 - +
  • [10] Automated detection of refactorings in evolving components
    Dig, Danny
    Comertoglu, Can
    Marinov, Darko
    Johnson, Ralph
    ECOOP 2006 - OBJECT-ORIENTED PROGRAMMING, PROCEEDINGS, 2006, 4067 : 404 - 428