Conference Proceeding Article
Refactoring is an important way to improve the design of existing code. Identifying refactoring opportunities (i.e., code fragments that can be refactored) in large code bases is a challenging task. In this paper, we propose a novel, automated and scalable technique for identifying cross-function refactoring opportunities that span more than one function (e.g., Extract Method and Inline Method). The key of our technique is the design of efficient vector inlining operations that emulate the effect of method inlining among code fragments, so that the problem of identifying cross-function refactoring can be reduced to the problem of finding similar vectors before and after inlining. We have implemented our technique in a prototype tool named ReDex which encodes Java programs to particular vectors. We have applied the tool to a large code base, 4.5 million lines of code, comprising of 200 bundle projects in the Eclipse ecosystem (e.g., Eclipse JDT, Eclipse PDE, Apache Commons, Hamcrest, etc.). Also, different from many other studies on detecting refactoring, ReDex only searches for code fragments that can be, but have not yet been, refactored in a way similar to some refactoring that happened in the code base. Our results show that ReDex can find 277 cross-function refactoring opportunities in 2 minutes, and 223 cases were labelled as true opportunities by users, and cover many categories of cross-function refactoring operations in classical refactoring books, such as Self Encapsulate Field, Decompose Conditional Expression, Hide Delegate, Preserve Whole Object, etc.
Computer Sciences | Software Engineering
Software and Cyber-Physical Systems
ISSTA 2014: Proceedings of the International Symposium on Software Testing and Analysis: July 21-25, 2014, San Jose
City or Country
MILEA, Narcisa Andreea; JIANG, Lingxiao; and KHOO, Siau-Cheng.
Scalable detection of missed cross-function refactorings. (2014). ISSTA 2014: Proceedings of the International Symposium on Software Testing and Analysis: July 21-25, 2014, San Jose. 138-148. Research Collection School Of Information Systems.
Available at: http://ink.library.smu.edu.sg/sis_research/2642
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.