This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
A Comprehensive Approach to Naming and Accessibility in Refactoring Java Programs
Nov.-Dec. 2012 (vol. 38 no. 6)
pp. 1233-1257
Max Schäfer, IBM T.J. Watson Research Center, Hawthorne
Andreas Thies, Fernuniversität in Hagen, Hagen
Friedrich Steimann, Fernuniversität in Hagen, Hagen
Frank Tip, IBM, Hawthorne
Automated tool support for refactoring is now widely available for mainstream programming languages such as Java. However, current refactoring tools are still quite fragile in practice and often fail to preserve program behavior or compilability. This is mainly because analyzing and transforming source code requires consideration of many language features that complicate program analysis, in particular intricate name lookup and access control rules. This paper introduces J_L, a lookup-free, access control-free representation of Java programs. We present algorithms for translating Java programs into J_L and vice versa, thereby making it possible to formulate refactorings entirely at the level of J_L and to rely on the translations to take care of naming and accessibility issues. We demonstrate how complex refactorings become more robust and powerful when lifted to J_L. Our approach has been implemented using the JastAddJ compiler framework, and evaluated by systematically performing two commonly used refactorings on an extensive suite of real-world Java applications. The evaluation shows that our tool correctly handles many cases where current refactoring tools fail to handle the complex rules for name binding and accessibility in Java.
Index Terms:
Java,Access control,Feature extraction,Reverse engineering,Object oriented programming,Shadow mapping,Program processors,Java,Restructuring,reverse engineering,and reengineering,object-oriented languages
Citation:
Max Schäfer, Andreas Thies, Friedrich Steimann, Frank Tip, "A Comprehensive Approach to Naming and Accessibility in Refactoring Java Programs," IEEE Transactions on Software Engineering, vol. 38, no. 6, pp. 1233-1257, Nov.-Dec. 2012, doi:10.1109/TSE.2012.13
Usage of this product signifies your acceptance of the Terms of Use.