Vector Abstraction and Concretization for Scalable Detection of Refactorings

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 prog...

Full description

Saved in:
Bibliographic Details
Main Authors: MILEA, Narcisa Andreea, JIANG, Lingxiao, KHOO, Siau-Cheng
Format: text
Language:English
Published: Institutional Knowledge at Singapore Management University 2014
Subjects:
Online Access:https://ink.library.smu.edu.sg/sis_research/2643
https://ink.library.smu.edu.sg/context/sis_research/article/3643/viewcontent/fse14refactoring.pdf
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Singapore Management University
Language: English
id sg-smu-ink.sis_research-3643
record_format dspace
spelling sg-smu-ink.sis_research-36432015-11-16T08:56:13Z Vector Abstraction and Concretization for Scalable Detection of Refactorings MILEA, Narcisa Andreea JIANG, Lingxiao KHOO, Siau-Cheng 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%. 2014-11-01T07:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/2643 info:doi/10.1145/2635868.2635926 https://ink.library.smu.edu.sg/context/sis_research/article/3643/viewcontent/fse14refactoring.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Refactoring Detection Software Evolution Vector-based Code Representation Computer Sciences Software Engineering
institution Singapore Management University
building SMU Libraries
continent Asia
country Singapore
Singapore
content_provider SMU Libraries
collection InK@SMU
language English
topic Refactoring Detection
Software Evolution
Vector-based Code Representation
Computer Sciences
Software Engineering
spellingShingle Refactoring Detection
Software Evolution
Vector-based Code Representation
Computer Sciences
Software Engineering
MILEA, Narcisa Andreea
JIANG, Lingxiao
KHOO, Siau-Cheng
Vector Abstraction and Concretization for Scalable Detection of Refactorings
description 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%.
format text
author MILEA, Narcisa Andreea
JIANG, Lingxiao
KHOO, Siau-Cheng
author_facet MILEA, Narcisa Andreea
JIANG, Lingxiao
KHOO, Siau-Cheng
author_sort MILEA, Narcisa Andreea
title Vector Abstraction and Concretization for Scalable Detection of Refactorings
title_short Vector Abstraction and Concretization for Scalable Detection of Refactorings
title_full Vector Abstraction and Concretization for Scalable Detection of Refactorings
title_fullStr Vector Abstraction and Concretization for Scalable Detection of Refactorings
title_full_unstemmed Vector Abstraction and Concretization for Scalable Detection of Refactorings
title_sort vector abstraction and concretization for scalable detection of refactorings
publisher Institutional Knowledge at Singapore Management University
publishDate 2014
url https://ink.library.smu.edu.sg/sis_research/2643
https://ink.library.smu.edu.sg/context/sis_research/article/3643/viewcontent/fse14refactoring.pdf
_version_ 1770572535281221632