The Community for Technology Leaders
Issue No. 09 - September (1998 vol. 24)
ISSN: 0098-5589
pp: 721-740
ABSTRACT
<p><b>Abstract</b>—Constructing code analyzers may be costly and error prone if inadequate technologies and tools are used. If they are written in a conventional programming language, for instance, several thousand lines of code may be required even for relatively simple analyses. One way of facilitating the development of code analyzers is to define a very high-level domain-oriented language and implement an application generator that creates the analyzers from the specification of the analyses they are intended to perform. This paper presents a system for developing code analyzers that uses a database to store both a no-loss fine-grained intermediate representation and the results of the analyses. The system uses an algebraic representation, called <it>F</it>(<it>p</it>), as the user-visible intermediate representation. Analyzers are specified in a declarative language, called <tmath>$F(p)-\ell,$</tmath> which enables an analysis to be specified in the form of a traversal of an algebraic expression, with access to, and storage of, the database information the algebraic expression indices. A foreign language interface allows the analyzers to be embedded in C programs. This is useful for implementing the user interface of an analyzer, for example, or to facilitate interoperation of the generated analyzers with pre-existing tools. The paper evaluates the strengths and limitations of the proposed system, and compares it to other related approaches.</p>
INDEX TERMS
Reverse engineering, code analysis, software maintenance, intermediate program representations, tool generation, integration.
CITATION
Andrea De Lucia, Aniello Cimitile, Gerardo Canfora, Ugo De Carlini, "An Extensible System for Source Code Analysis", IEEE Transactions on Software Engineering, vol. 24, no. , pp. 721-740, September 1998, doi:10.1109/32.713328