An extensible system for source code analysis
- 1 January 1998
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 24 (9) , 721-740
- https://doi.org/10.1109/32.713328
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)-\ell,$ 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
This publication has 41 references indexed in Scilit:
- Identification of dynamic comprehension processes during large scale maintenanceIEEE Transactions on Software Engineering, 1996
- A query algebra for program databasesIEEE Transactions on Software Engineering, 1996
- Managing design trade-offs for a program understanding and transformation toolJournal of Systems and Software, 1995
- Software salvaging and the call dominance treeJournal of Systems and Software, 1995
- A unified interprocedural program representation for a maintenance environmentIEEE Transactions on Software Engineering, 1993
- TlexSoftware: Practice and Experience, 1991
- The C information abstraction systemIEEE Transactions on Software Engineering, 1990
- Measures of testability as a basis for quality assuranceSoftware Engineering Journal, 1990
- Web structures: a tool for representing and manipulating programsIEEE Transactions on Software Engineering, 1988
- Axiomatic approach to Software Metrication through Program DecompositionThe Computer Journal, 1986