Macro Impact Analysis Using Macro Slicing
László Vidács, Árpád
Beszédes and Rudolf Ferenc
The expressiveness of the C/C++ preprocessing facility
enables the development of highly configurable source code. However,
the usage of language constructs like macros
also bears the potential of resulting in highly incomprehensible and
unmaintainable code, which is due to the flexibility and the "cryptic"
nature of the preprocessor language. This could be overcome if suitable
analysis tools were available for preprocessor-related issues, however,
this is not the case (for instance, none of the modern Integrated
Development Environments provides features to efficiently analyze and
browse macro usage). A conspicuous problem in software maintenance is
the correct (safe and efficient) management of change. In particular,
due to the aforementioned reasons, determining efficiently the impact
of a change in a specific macro definition is not yet possible. In this
paper, we describe a method for the impact analysis of macro
definitions, which significantly differs from the previous approaches.
We reveal and analyze the dependencies among macro-related program
points using the so-called macro
Keywords: change impact
analysis, macros, preprocessing, C, C++, program understanding, program
analysis, maintenance, program slicing, dynamic analysis.