﻿# Краткое описание библиотеки анализа кода VivaCore

Наша команда, занимаясь исследованиями в области статического анализа и работая над созданием инструмента Viva64, пришла к выводу, что большая часть разработанных структур и алгоритмов может быть выделена в библиотеку и использована сторонними разработчиками для создания новых программных продуктов\. Эта библиотека получила название VivaCore\.


> Инструмент Viva64 стал частью продукта PVS\\\-Studio и более отдельно не распространяется\\\. Все возможности поиска специфических ошибок, связанных с разработкой 64\\\-битных приложений, а также переносом кода с 32\\\-битной на 64\\\-битную платформу теперь доступны в рамках анализатора \[PVS\\\-Studio\]\(https://pvs\-studio\.ru/ru/pvs\-studio/\)\\\.

## Назначение библиотеки VivaCore

[VivaCore](https://pvs-studio.ru/ru/pvs-studio/) предназначена для разработки систем в области [статического анализа](https://pvs-studio.ru/ru/blog/terms/0046/), тестирования и верификации кода программ на языке Си/Си\+\+ \[[2](https://en.wikipedia.org/wiki/Static_program_analysis), [3](https://www.aristeia.com/ddjpaper1.html), [4](http://www.ganssle.com/articles/valueprop.htm), [5](https://www.drdobbs.com/architecture-and-design/integrate-static-analysis-into-a-softwar/193500967?cid=rssfeed_ddj_debugging)\]\. Так как язык Си\+\+ является одним из самых сложных для анализа, создание инструментальных средств для работы с ним зачастую приводит к большим временным затратам на механизм работы с кодом\. Библиотека VivaCore позволяет ускорить выполнение этой части проекта и дает возможность разработчикам сосредоточиться на создании непосредственно инструмента, а не на реализации алгоритмов разбора кода\.

Другими словами, библиотека VivaCore предназначена для экономии времени при разработке программных систем, связанных с обработкой исходных текстов программ\.

## Сферы применения библиотеки VivaCore

Библиотека может быть интересна организациям, которые создают или планируют создавать инструменты для работы с кодом\. Кратко перечислим возможные области для создания новых инструментальных средств на основе библиотеки VivaCore:

* Software reengineering tools: refactoring, source code transformation, code optimization;
* Quality assurance tools: software metrics, code standard checking, coverage analysis, code analyzers;
* Source code documentation;
* Software migration tools: platform and operation systems migration\.

## VivaCore с точки зрения разработчика

VivaCore \- это библиотека для анализа Си/Си\+\+ кода, позволяющая производить разбор, как отдельных языковых конструкций, так и целых файлов\. Функциональная схема библиотеки показана на рисунке ниже\. Библиотека дает возможность произвести специальную предобработку исходных файлов, разбить текст программы на токены, построить [дерево разбора](https://pvs-studio.ru/ru/blog/terms/0039/) и осуществить по нему навигацию\. Библиотека имеет механизм метапрограммной обработки, что позволяет написать свое расширение языка Си/Си\+\+, а затем транслировать метаконструкции в конструкции языка Си/Си\+\+\. На разных стадиях обработки исходного кода и по завершению работы библиотека VivaCore может сохранять различную информацию и преобразованный текст программы в формате XML или ином виде\.

![a0014_Brief_description_of_the_library_of_code_analysis_VivaCore_ru/image1.png](https://import.viva64.com/docx/blog/a0014_Brief_description_of_the_library_of_code_analysis_VivaCore_ru/image1.png)

_Рисунок 1 \- Компоненты VivaCore\._

VivaCore является развитием и расширением открытой библиотеки OpenC\+\+ \[[6](http://opencxx.sourceforge.net/)\]\. Хотя OpenC\+\+ не является полноценным парсером и не поддерживает современный стандарт языка Си\+\+, на ее основе создан ряд интересных инструментов\. Например: среда исполнения OpenTS для языка программирования T\+\+ \(разработка Института программных систем РАН\), инструмент Synopsis для подготовки документации по исходному коду \[[7](http://synopsis.sourceforge.net/)\], статический анализатор кода Viva64 \[[1](https://pvs-studio.ru/ru/blog/posts/a0009/)\]\. Поскольку OpenC\+\+ на данный момент не развивается, то VivaCore можно назвать ее приемником\.

Не следует путать VivaCore с профессиональными многофункциональными парсерами Си/Си\+\+ кода\. Если пользователю нужен полноценный парсер переднего плана \(front\-end\), полностью поддерживающий современный стандарт и позволяющий создавать свой компилятор под специфическую платформу, то ему стоит обратить свое внимание на GCC или дорогие коммерческие решения\. Например, такие решения предоставляет Semantic Designs \[[8](http://www.semdesigns.com/)\]\.

Но если компания разрабатывает инструмент, требующий классического анализа Си/Си\+\+ кода, то рациональным решением будет использование удобной специализированной библиотеки кода, которой и является **VivaCore**\.

## Библиографический список

1. Evgeniy Ryzhkov\. [Viva64: what is it and for whom is it meant?](https://pvs-studio.ru/ru/blog/posts/a0009/)
1. Wikipedia\. [Static code analysis\.](https://en.wikipedia.org/wiki/Static_program_analysis) 
1. Scott Meyers and Martin Klaus\. [A First Look at C\+\+ Program Analyzers\.](https://www.aristeia.com/ddjpaper1.html)
1. Jack Ganssle\. [The value proposition \- unfulfilled\.](http://www.ganssle.com/articles/valueprop.htm)
1. Walter W\. Schilling, Jr\. and Mansoor Alam\. [Integrate Static Analysis Into a Software Development Process\.](https://www.drdobbs.com/architecture-and-design/integrate-static-analysis-into-a-softwar/193500967?cid=rssfeed_ddj_debugging)
1. [OpenC\+\+ library\.](http://opencxx.sourceforge.net/) 
1. [Synopsis: A Source\-code Introspection Tool\.](http://synopsis.sourceforge.net/)
1. [Semantic Designs site\.](http://www.semdesigns.com/)