﻿# VivaCore \- быстрый старт

Документ знакомит разработчиков с библиотекой VivaCore\. Дается общая информация о библиотеке VivaCore, области применения, лицензионных соглашениях\. Описывается процесс развертывания библиотеки и пример ее использования\.

## Общие сведения

VivaCore \- это открытая библиотека для работы с Си и Си\+\+ кодом\. VivaCore построена на основе библиотеки [OpenC\+\+](http://opencxx.sourceforge.net/) \(OpenCxx\)\. Библиотека предназначена для реализации на ее основе систем рефакторинга кода, систем статического и динамического анализа, систем трансформации или оптимизации кода, расширений языка, подсистем подсветки синтаксиса, систем построения документации по коду и других аналогичных инструментов\. Более подробно с возможными областями использования библиотеки VivaCore и принципами ее работы Вы можете познакомиться в статье "[Сущность библиотеки анализа кода VivaCore](https://pvs-studio.ru/ru/blog/posts/a0013/)"\.Основные положения\.

## Лицензия

Библиотека VivaCore разработана компанией "[Системы программной верификации](https://pvs-studio.ru/ru/)" \([Program Verification Systems](https://pvs-studio.ru/ru/)\)\.

Лицензия на библиотеку VivaCore позволяет свободно использовать, копировать, распространять и модифицировать ее в бинарном виде или в виде исходного кода, как для коммерческого, так и для некоммерческого использования без каких\-либо отчислений авторам библиотеки\. Необходимо лишь указать авторов исходных библиотек \(OpenC\+\+ и VivaCore\)\.

## Основные отличия библиотеки VivaCore от OpenC\+\+

Библиотека VivaCore является развитием библиотеки [OpenC\+\+](http://opencxx.sourceforge.net/) \(OpenCxx\) и имеет следующие преимущества по сравнению с ней:

* Библиотека представляет собой полноценный проект, который может быть легко собран в среде Visual Studio 2005/2008 как в 32\-битном, так и 64\-битном варианте\. Никаких дополнительных настроек для сборки проекта не требуется\.
* Библиотека VivaCore адаптирована к компилятору Microsoft Visual C\+\+ с точки зрения специфики его синтаксиса и набора ключевых слов\.
* Поддержан классический язык Си, а не только Си\+\+\.
* Реализовано вычисление значений литеральных констант\.
* Исправлено большое количество ошибок и недочетов базовой библиотеки OpenC\+\+\.
* Создан механизм начальной предобработки исходного текста, позволяющий реализовать некоторые специфические модификации кода\.
* Реализован механизм пропуска разбора кода функций не представляющего интереса для анализа\.

## Развертывание VivaCore

Вы можете скачать библиотеку VivaCore в двух вариантах\. Полный вариант содержит помимо VivaCore еще и библиотеку [Boost](https://www.boost.org/) с уже собранными \*\.lib файлами\. Сокращенный вариант \- только исходные файлы библиотеки VivaCore\.

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

Если вы скачали сокращенный вариант VivaCore или хотите использовать более свежую версию библиотеки Boost, то вам потребуется внести изменения в настройки проекта\. Во\-первых, вам потребуется указать в настройках проекта путь к заголовочным файлам библиотеки boost \(Configuration Properties \-\> C/C\+\+ \-\> General \-\> Additional Include Directories\)\. Во\-вторых, указать путь к скомпилированным lib файлам \(Configuration Properties \-\> Linker \-\> General \-\> Additional Library Directories\)\. Мы рекомендуем использовать именно сокращенный вариант VivaCore, без Boost, так как в этом случае всегда можно собрать Boost в нужной конфигурации\.

## Первые шаги

Проект библиотеки VivaCore представляет собой также сразу и демонстрационный пример ее использования\. Для этого в состав библиотеки VivaCore входят 3 дополнительных файла: PreprocessorRulesTableDemo\.h, VivaCoreDemo\.cpp, VivaWalkerDemo\.h\.

В этих файлах реализован простейший анализатор кода, который делает следующее:

1. Читает файл "VivaCoreDemo\.i"\.
1. Выполняет его предобработку согласно правилам, заданным в файле PreprocessorRulesTableDemo\.h\.
1. Разбивает текст программы на лексемы\.
1. Строит дерево разбора\.
1. Обходит дерево разбора, используя класс VivaWalker, описанный в файле VivaWalkerDemo\.h\. В качестве примера в этом классе реализованы три функции обработки узлов дерева, которые сообщают о том, что сейчас обрабатывается\. Смотрите функции: TranslateAssign, TranslateVariable, TranslateSizeof\.

## Заключение

Мы понимаем, что у Вас возникнет много вопросов, касающихся использования и устройства библиотеки VivaCore\. Но хорошей новостью будет то, что наша команда всегда открыта к общению, и мы готовы обсудить возникшие вопросы и дать рекомендации по использованию VivaCore\. Пишите нам\!