REFACOLA

The Refactoring Constraint Language

Purpose

to specify refactorings declaratively, using the constraint approach, and to generate refactoring tools from the specifications

Rationale

Among all available refactoring tools, constraint-based ones present perhaps the largest fraction relying on a single, uniform approach to refactoring. Despite this uniformity, however, all constraint-based refactoring tools have been developed more or less from scratch, and the potential for reuse, both of the constraint rules covering the target language and of the implementation of the necessary infrastructure, is wasted. Refacola's purpose is to allows refactoring tool developers to write and reuse refactoring specifications in a clompletely declarative constraint language, and to generate refactoring tools from them.

How it Works

...

Evaluation

Refacola and the refactorings specified with it have been evaluated extensively, for different refactorings and different target programming languages, using the following experimental setup:

Available Downloads

We offer downloads of the Refacola language and framework (for Eclipse), Refacola refactoring specifications, and generated refactoring tools.

Refacola Language and Framework for Eclipse

Java Refactorings

Pull Up Field (various variants, with foresight)

Eiffel Refactorings

Rename Feature

Refactoring definition

Change Accessibility

Refactoring definition

Change Declared Type

Refactoring definition

Change Method Declaration

Refactoring definition

Publications

Team