Community Research and Development Information Service - CORDIS

Recoder - automated source code refactoring, instrumentation and basic invasive composition support

RECODER is a framework for Java, C und C# source code metaprogramming aimed to deliver a sophisticated infrastructure for many kinds of analysis and transformation tools. The following points give a short description of the different components of RECODER features as well as the application perspectives that these layers offer:

1. Parsing and unparsing of Java sources
In addition to abstract model elements, RECODER also supports a highly detailed syntactic model - no information is lost. Comments and formatting information are retained. The pretty printer is customisable and is able to reproduce the code (possibly improving upon it, but retaining given code structures) and to embed new code seamlessly. Possible applications: Simple pre-processors, simple code generators, and source code beautification tools

2. Name and type analysis for Java programs
RECODER performs a name and type analysis, can evaluate compile-time constants, resolve all kinds of references and maintain cross-reference information. Possible applications: Software visualization tools, software metrics, Lint-like semantic problem detection tools, design problem detection tools (anti-patterns), cross-referencing tools

3. Transformation of Java sources
RECODER contains a library of analyses, code snippet generators and frequently used transformations. Possible applications: Pre-processors for language extensions, semantic macros, aspect weavers, source code obfuscation tools, compilers

4. Incremental analysis and transformation of Java sources.
Transformations change the underlying program model; for incremental and iterative use, this model has to be updated accordingly. Transformations have to take care of dependencies by updating their local data and setting back matching positions when necessary; however, RECODER will analyse change impacts for its model and perform updates automatically. Possible applications: Source code optimisation, refactoring tool, software migration programs (Smart Patches), design pattern synthesis, cliches synthesis and idiom synthesis, architectural connector synthesis, adaptive programming environments, invasive software composition

Related information

Reported by

Universitat Karlsruhe
Adenauerring 20a, Geb. 50.41
76128 Karlsruhe
See on map
Follow us on: RSS Facebook Twitter YouTube Managed by the EU Publications Office Top