To get a trial key
fill out the form below
Team License (a basic version)
Enterprise License (an extended version)
* By clicking this button you agree to our Privacy Policy statement

Request our prices
New License
License Renewal
--Select currency--
* By clicking this button you agree to our Privacy Policy statement

Free PVS-Studio license for Microsoft MVP specialists
* By clicking this button you agree to our Privacy Policy statement

To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

I am interested to try it on the platforms:
* By clicking this button you agree to our Privacy Policy statement

Message submitted.

Your message has been sent. We will email you at

If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

Brief description of the VivaCore code …

Brief description of the VivaCore code analysis library

Jan 12 2008

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.

Viva64 tool became a part of PVS-Studio product and is no longer distributed separately. All the abilities of searching for specific errors related to developing 64-bit applications, as well as porting code from 32-bit to 64-bit platform are now available within PVS-Studio analyzer.

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 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 [7], 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 [8].

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.


Popular related articles
PVS-Studio ROI

Date: Jan 30 2019

Author: Andrey Karpov

Occasionally, we're asked a question, what monetary value the company will receive from using PVS-Studio. We decided to draw up a response in the form of an article and provide tables, which will sho…
Technologies used in the PVS-Studio code analyzer for finding bugs and potential vulnerabilities

Date: Nov 21 2018

Author: Andrey Karpov

A brief description of technologies used in the PVS-Studio tool, which let us effectively detect a large number of error patterns and potential vulnerabilities. The article describes the implementati…
The Evil within the Comparison Functions

Date: May 19 2017

Author: Andrey Karpov

Perhaps, readers remember my article titled "Last line effect". It describes a pattern I've once noticed: in most cases programmers make an error in the last line of similar text blocks. Now I want t…
The way static analyzers fight against false positives, and why they do it

Date: Mar 20 2017

Author: Andrey Karpov

In my previous article I wrote that I don't like the approach of evaluating the efficiency of static analyzers with the help of synthetic tests. In that article, I give the example of a code fragment…
Static analysis as part of the development process in Unreal Engine

Date: Jun 27 2017

Author: Andrey Karpov

Unreal Engine continues to develop as new code is added and previously written code is changed. What is the inevitable consequence of ongoing development in a project? The emergence of new bugs in th…
Free PVS-Studio for those who develops open source projects

Date: Dec 22 2018

Author: Andrey Karpov

On the New 2019 year's eve, a PVS-Studio team decided to make a nice gift for all contributors of open-source projects hosted on GitHub, GitLab or Bitbucket. They are given free usage of PVS-Studio s…
Appreciate Static Code Analysis!

Date: Oct 16 2017

Author: Andrey Karpov

I am really astonished by the capabilities of static code analysis even though I am one of the developers of PVS-Studio analyzer myself. The tool surprised me the other day as it turned out to be sma…
How PVS-Studio Proved to Be More Attentive Than Three and a Half Programmers

Date: Oct 22 2018

Author: Andrey Karpov

Just like other static analyzers, PVS-Studio often produces false positives. What you are about to read is a short story where I'll tell you how PVS-Studio proved, just one more time, to be more atte…
PVS-Studio for Java

Date: Jan 17 2019

Author: Andrey Karpov

In the seventh version of the PVS-Studio static analyzer, we added support of the Java language. It's time for a brief story of how we've started making support of the Java language, how far we've co…
The Ultimate Question of Programming, Refactoring, and Everything

Date: Apr 14 2016

Author: Andrey Karpov

Yes, you've guessed correctly - the answer is "42". In this article you will find 42 recommendations about coding in C++ that can help a programmer avoid a lot of errors, save time and effort. The au…

Comments (0)

Next comments
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site.
Learn More →