Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The ASF+SDF Meta-environment: A Component-Based Language Development Environment
CC '01 Proceedings of the 10th International Conference on Compiler Construction
DMS®: Program Transformations for Practical Scalable Software Evolution
Proceedings of the 26th International Conference on Software Engineering
The CodeSurfer Software Understanding Platform
IWPC '05 Proceedings of the 13th International Workshop on Program Comprehension
Toward an engineering discipline for grammarware
ACM Transactions on Software Engineering and Methodology (TOSEM)
JunGL: a scripting language for refactoring
Proceedings of the 28th international conference on Software engineering
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
The TXL source transformation language
Science of Computer Programming - The fourth workshop on language descriptions, tools, and applications (LDTA'04)
High-fidelity C/C++ code transformation
Science of Computer Programming
The jastadd extensible java compiler
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Stratego/XT 0.17. A language and toolset for program transformation
Science of Computer Programming
WCRE 1998 Most Influential Paper: Grokking Software Architecture
WCRE '08 Proceedings of the 2008 15th Working Conference on Reverse Engineering
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Stepping Stones over the Refactoring Rubicon
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation
SCAM '09 Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation
Accelerating the creation of customized, language-Specific IDEs in Eclipse
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Tom: piggybacking rewriting on java
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
AMBIDEXTER: Practical Ambiguity Detection
SCAM '10 Proceedings of the 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation
EASY meta-programming with Rascal
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Lightweight language processing in Kiama
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
A case of visitor versus interpreter pattern
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
A refactoring constraint language and its application to eiffel
Proceedings of the 25th European conference on Object-oriented programming
A domain-specific language for scripting refactorings in erlang
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Can undergraduates script their own refactorings?
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
To facilitate experimentation with creating new, complex refactorings, we want to reuse existing transformation and analysis code as orchestrated parts of a larger refactoring: i.e., to script refactorings. The language we use to perform this scripting must be able to deal with the diversity of languages, tools, analyses, and transformations that arise in practice. To illustrate one solution to this problem, in this paper we describe, in detail, a specific refactoring script for switching from the Visitor design pattern to the Interpreter design pattern. This script, written in the meta-programming language Rascal, and targeting an interpreter written in Java, extracts facts from the interpreter code using the Eclipse JDT, performs the needed analysis in Rascal, and then transforms the interpreter code using a combination of Rascal code and existing JDT refactorings. Using this script we illustrate how a new, real and complex refactoring can be scripted in a few hundred lines of code and within a short timeframe. We believe the key to successfully building such refactorings is the ability to pair existing tools, focused on specific languages, with general-purpose meta-programming languages.