Short-term, long term and crazy ideas about Spoon
version of 03/09/2015
- Model
- support for analyzing bound vs unbound type references (
List<T>
vsList<String>
)
- support for analyzing bound vs unbound type references (
- Transformations:
- Keep original when printing after transformation
- inline comments
- indentation and formatting
- sniper mode (only rewrites the changed nodes)
- Transactional transformations (rollback if transfo fails)
- adds generic transformations: a generic transformation is a transformation that is independent of the domain and can be applied to any source code, their goal is to facilitate analysis and transformation
- everything in a block
- unfinalizer (remove as many "final" keywords as possible)
- Keep original when printing after transformation
- Processor orchestration
- specify the current strategy
- what if multiple processors on the same node
- what if new nodes added?
- improved version, see 'Source model analysis using the JJTraveler visitor combinator framework'
- dependency models between processors
- specify the current strategy
- Spoon in the IDE
- on the fly model update
- lazy spoon (build the class model only after a call to getDeclaration)
- Child project spoon-refactorings (starting from TTC)
- Templates
- templates as query language (see TemplateMatcher)
- inline templates
- with anonymous classes
- with lambda
- Write spoon processors, compile them to ASM transformations on bytecode