brief description of the vivacore code analysis library
DESCRIPTION
While investigating the sphere of static analysis and working on the creation of the Viva64 tool our team came to a conclusion that the most part of the developed structures and algorithms can be united into a library and used by third-party developers for creating new software products. This library has been named VivaCore.TRANSCRIPT
Brief description of the VivaCore code
analysis library
Authors: Andrey Karpov, Evgeniy Ryzhkov
Date: 12.01.2008
Abstract
While investigating the sphere of static analysis and working on the creation of the Viva64 tool our team
came to a conclusion that the most part of the developed structures and algorithms can be united into a
library and used by third-party developers for creating new software products. This library has been
named VivaCore.
The purpose of the VivaCore library
VivaCore is designed for the development of systems in the sphere of static analysis, testing and
verification of the C/C++ code [2, 3, 4, and 5]. Since C++ language is one of the most difficult for analysis,
the creation of a tool to work with it often takes a lot of time for developing the mechanism of working
with the code. VivaCore library allows speeding up this part of the project and gives developers an
opportunity to concentrate on the creation of the tool itself and not on implementation of the code
analysis algorithms.
In other words VivaCore library is meant to save time while developing software systems for processing
source program texts.
The purpose of the VivaCore library
The library may be of interest for organizations which create or are planning to create tools for working
with source code. Let's briefly enumerate the tools which can be created on the basis of the VivaCore
library:
• Software reengineering tools: refactoring, source code transformation, code optimization;
• Quality assurance tools: software metrics, coding standard checking, coverage analysis, code
analyzers;
• Source code documentation;
• Software migration tools: platform and operating systems migration.
VivaCore from the developer's viewpoint
VivaCore is a library for analyzing C/C++ code which allows performing analysis both of separate
language constructions and entire source code files. The functional diagram of the library is shown on
the picture on the right. The library gives an opportunity to perform special preprocessing of the source
files, split the program text into tokens, build an abstract syntax tree and provide navigation through it.
The library has a mechanism of metaprogram processing which allows you to write your own C/C++
extension and then translate the metaconstructions into the C/C++ constructions. The VivaCore library
can save various information in XML format or any other one on different steps of the source code
processing and in the end of the work.
Picture 1 - VivaCore Components.
VivaCore is a result of developing and extending the OpenC++ open source library [6]. Although
OpenC++ is not a full parser and doesn't support the present-day C++ standard, a number of interesting
tools was created on the basis of this library. For example: the OpenTS execution environment [7] for
the T++ programming language (the product of Program Systems Institute of Russian Academy of
Sciences, PSI RAS), the Synopsis tool for preparation of documentation on the source code [8], the
Viva64 static analyzer [1]. Since OpenC++ is not developed now, VivaCore may be named its "successor".
One shouldn't mix up VivaCore and professional multifunctional parsers of C/C++ code. If a user needs a
front-end code parser which fully supports the present-day standard and allows creating his own
compiler for a specific platform, he should pay attention to GCC or expensive commercial solutions. For
example, such solutions are offered by Semantic [9].
But if a company develops a tool which requires classical analysis of C/C++ code, the rational solution is
to use a convenient specialized code library, and VivaCore is such a library.
References
1. Evgeniy Ryzhkov. Viva64: what is it and for whom is it meant?
2. http://www.viva64.com/art-1-2-903037923.html
3. Wikipedia. Static code analysis. http://www.viva64.com/go.php?url=12
4. Scott Meyers and Martin Klaus. A First Look at C++ Program Analyzers.
http://www.viva64.com/go.php?url=13
5. Jack Ganssle. The value proposition - unfulfilled. http://www.viva64.com/go.php?url=15
6. Walter W. Schilling, Jr. and Mansoor Alam. Integrate Static Analysis Into a Software
Development Process. http://www.viva64.com/go.php?url=14
7. OpenC++ library. http://www.viva64.com/go.php?url=16
8. What is OpenTS? http://www.viva64.com/go.php?url=17
9. Synopsis: A Source-code Introspection Tool. http://www.viva64.com/go.php?url=18
10. Semantic Designs site. http://www.viva64.com/go.php?url=19