Title :
An extensible system for source code analysis
Author :
Canfora, Gerardo ; Cimitile, Aniello ; De Carlini, Ugo ; De Lucia, Andrea
Author_Institution :
Fac. of Eng., Sannio Univ., Piazza Roma, Italy
fDate :
9/1/1998 12:00:00 AM
Abstract :
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 F(p), as the user-visible intermediate representation. Analyzers are specified in a declarative language, called F(p)-l, 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
Keywords :
application generators; formal specification; reverse engineering; software maintenance; specification languages; user interfaces; C programs; algebraic expression; algebraic representation; application generator; code analyzers; database; declarative language; domain-oriented language; extensible system; foreign language interface; programming language; reverse engineering; software maintenance; source code analysis; specification; user interface; Computer languages; Data mining; Databases; Information analysis; Performance analysis; Programming profession; Reverse engineering; Software maintenance; Software systems; Testing;
Journal_Title :
Software Engineering, IEEE Transactions on