Let's make refactoring tools user-extensible!

We present a framework for making a refactoring tool extensible, allowing users to define refactorings from scratch using the concrete syntax of the language, as well as to describe complex refactorings in a domain-specific language for scripting. We demonstrate the approach in practice through a series of examples. The extension framework is built into Wrangler, a tool for refactoring Erlang programs, but we argue that the approach is equally applicable to tools for other languages.

[1]  Oscar Nierstrasz,et al.  The story of moose: an agile reengineering environment , 2005, ESEC/FSE-13.

[2]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[3]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[4]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[5]  Jesús Sánchez Cuadrado,et al.  RubyTL: A Practical, Extensible Transformation Language , 2006, ECMDA-FA.

[6]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[7]  Huiqing Li,et al.  Refactoring with wrangler, updated: data and process refactorings, and integration with eclipse , 2008, ERLANG '08.

[8]  Shinichiro Yamamoto,et al.  Design and implementation of an extensible and modifiable refactoring tool , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[9]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[10]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[11]  Oege de Moor,et al.  JunGL: a scripting language for refactoring , 2006, ICSE.

[12]  Arie van Deursen,et al.  The Asf+Sdf Meta-Environment: a Component-Based Language Development Environment , 2001, LDTA@ETAPS.

[13]  Huiqing Li,et al.  Automated API migration in a user-extensible refactoring tool for Erlang programs , 2011, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[14]  Torbjörn Ekman,et al.  Sound and extensible renaming for java , 2008, OOPSLA.

[15]  Simon Thompson,et al.  Incremental Code Clone Detection and Elimination for Erlang Programs , 2022 .

[16]  Huiqing Li,et al.  Refactoring with Wrangler, updated , 2008 .

[17]  Francesco Cesarini,et al.  Erlang Programming , 2009 .

[18]  Huiqing Li,et al.  Incremental Clone Detection and Elimination for Erlang Programs , 2011, FASE.

[19]  Huiqing Li,et al.  A Domain-Specific Language for Scripting Refactorings in Erlang , 2012, FASE.

[20]  Arie van Deursen,et al.  Refactoring: Emerging Trends and Open Problems , 2003 .

[21]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

[22]  James R. Cordy,et al.  Source transformation, analysis and generation in TXL , 2006, PEPM '06.

[23]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..