Back to home page of Munawar

OpenRefactory/C: A Program Transformation Framework for C

OpenRefactory/C Online Demo available at:

In spite of the popularity of C, IDEs for the language offer limited support for source-level transformations, often not going beyond primitive refactorings. Even those refactorings tend to be slow and buggy. Their limitations are particularly evident when refactoring C libraries. These libraries are highly configurable, making heavy use of the C preprocessor. Current tools do not handle C preprocessor well. Another shortcoming of the current tools is theCallgraph Analysis in CR-12 lack of data flow analysis and control flow analysis (some tools have support for rudimentary control flow analysis).


We want to handle the C preprocessor and program analysis concerns in C language IDEs. We will explore new techniques for handling both the syntactic and semantic complexities introduced, ans we will build a source-level program transformation infrastructure that allows our techniques to be evaluated. Our infrastructure will serve as a platform for future researchers to investigate C transformations.

Our infrastructure currently supports more program analyses than any other competing tools. The OpenRefactory/C insfrastructure supports name binding analysis, type analysis, forward and backward control flow analysis, call graph analysis and Anderson's points-to analysis.

The figure on the rights shows a visualization of the call graph of a C programs. The function definition has call graph edges to all the function calls made within the body of the function.

People (Past and Present)
Munawar Hafiz (Assistant Professor, Auburn University), Jeffrey Overbey (Research Assistant Professor, Auburn University), Xuechao Li (Grad Student), Farnaz Behrang (Grad Student), Dusten Doggett (Grad Student), Zack Coker (Undergrad), Joel Eichelkraut (Undergrad)


Last modified: Oct 21, 2012

Conceived and Maintained by: Munawar Hafiz