Skip to content

Morpheus is a refactoring engine for C, providing refactoring such as "renaming identifier", "extract function", and "inline function", in the presence of variability induced by #ifdefs and build-system variability.

License

joliebig/Morpheus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Morpheus

Implementation of a variability-aware refactoring engine for C. Supports three standard refactorings (Rename Identifier, Extract Function, and Inlie Function). In contrast to existing refactoring engines such as Eclipse/CDT, Morpheus can handle varibility in source code induced by #ifdefs. That is all three refactorings are applied in all variants (with respect to #ifdef directives) in the source code. The engine relies on the variability-aware parsing and analysis infrastructure TypeChef.

Installation and Usage

Morpheus requires a modified version of TypeChef. To install it simply run:

git clone https://github.com/aJanker/TypeChef.git
cd TypeChef
git checkout master
./publish.sh

To install the last version of Morpheus simply run:

git clone https://github.com/joliebig/Morpheus.git
cd Morpheus
git checkout master
./mkrun.sh

The commands create a run-script (morpheus.sh) for the project. Morpheus comes with a simplified GUI (parameter: --showGui) and a command line interface for evaluation of the refactorings. The simplified GUI is intended for testing and presentation only. To apply Morpheus in a real setting, a proper project setup has to be passed to the engine. Since the project setup of existing software systems is difficult to integrate with Morpheus, we currently support only three systems. The systems, including the proper setup to run with Morpheus, are available on github, too: Busybox, OpenSSL, and SQLite.

License

Morpheus is published as open source under LGPL 3.0. See LICENSE.

About

Morpheus is a refactoring engine for C, providing refactoring such as "renaming identifier", "extract function", and "inline function", in the presence of variability induced by #ifdefs and build-system variability.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published