brief description of the vivacore code analysis library

4
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

Upload: tanyazaxarova

Post on 29-Nov-2014

229 views

Category:

Technology


0 download

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

Page 1: Brief description of the VivaCore code analysis library

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

Page 2: Brief description of the VivaCore code analysis 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.

Page 3: Brief description of the VivaCore code analysis library
Page 4: Brief description of the VivaCore code analysis library

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