Abstract
Refactoring is the process of changing the design of a program without changing its behaviour. Many refactoring tools have been developed for various programming languages; however, their support for composite refactorings – refactorings that are composed from a number of primitive refactorings – is limited. In particular, there is a lack of powerful and easy-to-use frameworks that allow users to script their own large-scale refactorings efficiently and effectively.
This paper introduces the domain-specific language framework of Wrangler – a refactoring and code inspection tool for Erlang programs –that allows users to script composite refactorings, test them and apply them on the fly. The composite refactorings are fully integrated into Wrangler and so can be previewed, applied and ‘undone’ interactively.
Chapter PDF
Similar content being viewed by others
References
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc., Boston (1999)
Roberts, D., Brant, J., Johnson, R.E.: A Refactoring Tool for Smalltalk. In: Theory and Practice of Object Systems, pp. 253–263 (1997)
JetBrains: JetBrains, http://www.jetbrains.com
Eclipse:: an open development platform, http://www.eclipse.org/
Li, H., Thompson, S., Reinke, C.: The Haskell Refactorer, HaRe, and its API. Electr. Notes Theor. Comput. Sci. 141(4), 29–34 (2005)
Li, H., et al.: Refactoring with Wrangler, updated. In: ACM SIGPLAN Erlang Workshop 2008, Victoria, British Columbia, Canada (2008)
Lövei, L., et al.: Introducing Records by Refactoring. In: Erlang 2007: Proceedings of the 2007 SIGPLAN Workshop on Erlang Workshop. ACM (2007)
Murphy-Hill, E., Parnin, C., Black, A.P.: How we refactor, and how we know it. IEEE Transactions on Software Engineering 99 (2011)
Frenzel, L.: The Language Toolkit: An API for Automated Refactorings in Eclipse-based IDEs. Eclipse Magazine 5 (2006)
Li, H., Thompson, S.: A User-extensible Refactoring Tool for Erlang Programs. Technical Report 4-11, School of Computing, Univ. of Kent, UK (2011)
Kniesel, G., Koch, H.: Static composition of refactorings. Sci. Comput. Program. 52 (August 2004)
Cinnéide, M.O.: Automated Application of Design Patterns: A Refactoring Approach. PhD thesis, University of Dublin, Trinity College (2000)
Li, H., Thompson, S.: Incremental Clone Detection and Elimination for Erlang Programs. In: Giannakopoulou, D., Orejas, F. (eds.) FASE 2011. LNCS, vol. 6603, pp. 356–370. Springer, Heidelberg (2011)
Opdyke, W.F.: Refactoring Object-Oriented Frameworks. PhD thesis, Univ. of Illinois (1992)
Roberts, D.B.: Practical Analysis for Refactoring. PhD thesis, Univ. of Illinois (1999)
Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego/XT 0.17. A language and toolset for program transformation. Sci. Comput. Program. 72 (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Li, H., Thompson, S. (2012). A Domain-Specific Language for Scripting Refactorings in Erlang. In: de Lara, J., Zisman, A. (eds) Fundamental Approaches to Software Engineering. FASE 2012. Lecture Notes in Computer Science, vol 7212. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-28872-2_34
Download citation
DOI: https://doi.org/10.1007/978-3-642-28872-2_34
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-28871-5
Online ISBN: 978-3-642-28872-2
eBook Packages: Computer ScienceComputer Science (R0)