Issue No. 11 - November (2003 vol. 29)
Diomidis Spinellis , IEEE
<p><b>Abstract</b>—Tool support for refactoring code written in mainstream languages such as C and C++ is currently lacking due to the complexity introduced by the mandatory preprocessing phase that forms part of the C/C++ compilation cycle. The defintion and use of macros complicates the notions of scope and of identifier boundaries. The concept of token equivalence classes can be used to bridge the gap between the language proper semantic analysis and the nonpreprocessed source code. The <it>CScout</it> toolchest uses the developed theory to analyze large interdependent program families. A Web-based interactive front end allows the precise realization of rename and remove refactorings on the original C source code. In addition, <it>CScout</it> can convert programs into a portable obfuscated format or store a complete and accurate representation of the code and its identifiers in a relational database.</p>
Refactoring, preprocessor, program families, renaming, C, C++, reverse engineering.
Diomidis Spinellis, "Global Analysis and Transformations in Preprocessed Languages", IEEE Transactions on Software Engineering, vol. 29, no. , pp. 1019-1030, November 2003, doi:10.1109/TSE.2003.1245303