SlideShare a Scribd company logo
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.
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

More Related Content

PDF
How VivaCore library appeared
PDF
VivaCore FAQ
DOC
File i o api c++ sample program
PPTX
Oracle sun studio
PPTX
Namespaces in C#
DOC
Smpl cpp
PDF
Description of VivaVisualCode
PDF
The .NET Platform - A Brief Overview
How VivaCore library appeared
VivaCore FAQ
File i o api c++ sample program
Oracle sun studio
Namespaces in C#
Smpl cpp
Description of VivaVisualCode
The .NET Platform - A Brief Overview

Viewers also liked (9)

PDF
64-bit Loki
PDF
Introduction into 64 bits for the beginners or where's again the 64-bit world?
PDF
How we test the code analyzer
PDF
Driver Development for Windows 64-bit
PDF
Comparing capabilities of PVS-Studio and Visual Studio 2010 in detecting defe...
PDF
The forgotten problems of 64-bit programs development
PDF
Optimization of 64-bit programs
PDF
20 issues of porting C++ code on the 64-bit platform
PDF
The essence of the VivaCore code analysis library
64-bit Loki
Introduction into 64 bits for the beginners or where's again the 64-bit world?
How we test the code analyzer
Driver Development for Windows 64-bit
Comparing capabilities of PVS-Studio and Visual Studio 2010 in detecting defe...
The forgotten problems of 64-bit programs development
Optimization of 64-bit programs
20 issues of porting C++ code on the 64-bit platform
The essence of the VivaCore code analysis library
Ad

Similar to Brief description of the VivaCore code analysis library (20)

PDF
VivaCore - Quick Start
PDF
Viva64: What Is It, and Who Is It for?
PDF
PVS-Studio advertisement - static analysis of C/C++ code
PDF
Viva64: working up of 64-bit applications
PPTX
PVS-Studio, a solution for developers of modern resource-intensive applications
PPTX
PVS-Studio, a static analyzer detecting errors in the source code of C/C++/C+...
PDF
PVS-Studio advertisement - static analysis of C/C++ code
PPTX
Self Tester
PDF
Machine Learning in Static Analysis of Program Source Code
PPTX
PVS-Studio, a solution for resource intensive applications development
PDF
Scientific Work of OOO "Program Verification Systems" Company
PDF
All about PVS-Studio
PDF
Comparing PVS-Studio with other code analyzers
PPTX
PVS-Studio and static code analysis technique
PDF
My life as a cyborg
PDF
VivaMP - a tool for OpenMP
PDF
Tizen: Summing Up
PDF
The Development History of PVS-Studio for Linux
PDF
Changes in programmer tools' infrastructure
PDF
New Year PVS-Studio 6.00 Release: Scanning Roslyn
VivaCore - Quick Start
Viva64: What Is It, and Who Is It for?
PVS-Studio advertisement - static analysis of C/C++ code
Viva64: working up of 64-bit applications
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a static analyzer detecting errors in the source code of C/C++/C+...
PVS-Studio advertisement - static analysis of C/C++ code
Self Tester
Machine Learning in Static Analysis of Program Source Code
PVS-Studio, a solution for resource intensive applications development
Scientific Work of OOO "Program Verification Systems" Company
All about PVS-Studio
Comparing PVS-Studio with other code analyzers
PVS-Studio and static code analysis technique
My life as a cyborg
VivaMP - a tool for OpenMP
Tizen: Summing Up
The Development History of PVS-Studio for Linux
Changes in programmer tools' infrastructure
New Year PVS-Studio 6.00 Release: Scanning Roslyn
Ad

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Electronic commerce courselecture one. Pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
cuic standard and advanced reporting.pdf
PDF
KodekX | Application Modernization Development
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Machine learning based COVID-19 study performance prediction
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Spectral efficient network and resource selection model in 5G networks
The AUB Centre for AI in Media Proposal.docx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Electronic commerce courselecture one. Pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
cuic standard and advanced reporting.pdf
KodekX | Application Modernization Development
Programs and apps: productivity, graphics, security and other tools
Digital-Transformation-Roadmap-for-Companies.pptx
MIND Revenue Release Quarter 2 2025 Press Release
sap open course for s4hana steps from ECC to s4
20250228 LYD VKU AI Blended-Learning.pptx
Review of recent advances in non-invasive hemoglobin estimation
Machine learning based COVID-19 study performance prediction

Brief description of the VivaCore code analysis library

  • 1. 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
  • 2. 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.
  • 4. 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