Наша команда, занимаясь исследованиями в области статического анализа и работая над созданием инструмента Viva64, пришла к выводу, что большая часть разработанных структур и алгоритмов может быть выделена в библиотеку и использована сторонними разработчиками для создания новых программных продуктов. Эта библиотека получила название VivaCore.
PVS-Studio, решение для разработки современных ресурсоемких приложений
Краткое описание библиотеки анализа кода VivaCore
1. Краткое описание библиотеки
анализа кода VivaCore
Авторы: Андрей Карпов, Евгений Рыжков
Дата: 12.01.2008
Аннотация
Наша команда, занимаясь исследованиями в области статического анализа и работая над
созданием инструмента Viva64, пришла к выводу, что большая часть разработанных структур и
алгоритмов может быть выделена в библиотеку и использована сторонними разработчиками для
создания новых программных продуктов. Эта библиотека получила название VivaCore.
Назначение библиотеки VivaCore
VivaCore предназначена для разработки систем в области статического анализа, тестирования и
верификации кода программ на языке Си/Си++ [2, 3, 4, 5]. Так как язык Си++ является одним из
самых сложных для анализа, создание инструментальных средств для работы с ним зачастую
приводит к большим временным затратам на механизм работы с кодом. Библиотека 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 - это библиотека для анализа Си/Си++ кода, позволяющая производить разбор, как
отдельных языковых конструкций, так и целых файлов. Функциональная схема библиотеки
показана на рисунке ниже. Библиотека дает возможность произвести специальную
предобработку исходных файлов, разбить текст программы на токены, построить дерево разбора
и осуществить по нему навигацию. Библиотека имеет механизм метапрограммной обработки, что
2. позволяет написать свое расширение языка Си/Си++, а затем транслировать метаконструкции в
конструкции языка Си/Си++. На разных стадиях обработки исходного кода и по завершению
работы библиотека VivaCore может сохранять различную информацию и преобразованный текст
программы в формате XML или ином виде.
3.
4. Рисунок 1 - Компоненты VivaCore.
VivaCore является развитием и расширением открытой библиотеки OpenC++ [6]. Хотя OpenC++ не
является полноценным парсером и не поддерживает современный стандарт языка Си++, на ее
основе создан ряд интересных инструментов. Например: среда исполнения OpenTS [7] для языка
программирования T++ (разработка Института программных систем РАН), инструмент Synopsis для
подготовки документации по исходному коду [8], статический анализатор кода Viva64 [ 1].
Поскольку OpenC++ на данный момент не развивается, то VivaCore можно назвать ее приемником.
Не следует путать VivaCore с профессиональными многофункциональными парсерами Си/Си++
кода. Если пользователю нужен полноценный парсер переднего плана (front-end), полностью
поддерживающий современный стандарт и позволяющий создавать свой компилятор под
специфическую платформу, то ему стоит обратить свое внимание на GCC или дорогие
коммерческие решения. Например, такие решения предоставляет Semantic Designs [9].
Но если компания разрабатывает инструмент, требующий классического анализа Си/Си++ кода, то
рациональным решением будет использование удобной специализированной библиотеки кода,
которой и является VivaCore.
Библиографический список
1. Evgeniy Ryzhkov. Viva64: what is it and for whom is it meant?
2. http://viva64.com/art-1-1-2081052208.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