SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Краткое описание библиотеки
анализа кода 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 - это библиотека для анализа Си/Си++ кода, позволяющая производить разбор, как
отдельных языковых конструкций, так и целых файлов. Функциональная схема библиотеки
показана на рисунке ниже. Библиотека дает возможность произвести специальную
предобработку исходных файлов, разбить текст программы на токены, построить дерево разбора
и осуществить по нему навигацию. Библиотека имеет механизм метапрограммной обработки, что
позволяет написать свое расширение языка Си/Си++, а затем транслировать метаконструкции в
конструкции языка Си/Си++. На разных стадиях обработки исходного кода и по завершению
работы библиотека VivaCore может сохранять различную информацию и преобразованный текст
программы в формате XML или ином виде.
Рисунок 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

Contenu connexe

Tendances

Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийDenis Vasilyev
 
Lala qasanzade 9r2 c++
Lala qasanzade 9r2  c++Lala qasanzade 9r2  c++
Lala qasanzade 9r2 c++lala9r2
 
Роль интеграции в разработке ПО
Роль интеграции в разработке ПОРоль интеграции в разработке ПО
Роль интеграции в разработке ПОSQALab
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHPMaxim Sivokon
 
Lala qasanzade 9r2 c++
Lala qasanzade 9r2  c++Lala qasanzade 9r2  c++
Lala qasanzade 9r2 c++lala9r2
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программистru_Parallels
 
Mixing c++ and python
Mixing c++ and pythonMixing c++ and python
Mixing c++ and pythoncorehard_by
 
Структура кода на С++
Структура кода на С++Структура кода на С++
Структура кода на С++DEVTYPE
 

Tendances (11)

Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
 
лекция 17
лекция 17лекция 17
лекция 17
 
Lala qasanzade 9r2 c++
Lala qasanzade 9r2  c++Lala qasanzade 9r2  c++
Lala qasanzade 9r2 c++
 
Роль интеграции в разработке ПО
Роль интеграции в разработке ПОРоль интеграции в разработке ПО
Роль интеграции в разработке ПО
 
378 васильев куницын
378 васильев куницын378 васильев куницын
378 васильев куницын
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHP
 
Net framework
Net frameworkNet framework
Net framework
 
Lala qasanzade 9r2 c++
Lala qasanzade 9r2  c++Lala qasanzade 9r2  c++
Lala qasanzade 9r2 c++
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
Mixing c++ and python
Mixing c++ and pythonMixing c++ and python
Mixing c++ and python
 
Структура кода на С++
Структура кода на С++Структура кода на С++
Структура кода на С++
 

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

Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreTatyanazaxarova
 
VivaCore - быстрый старт
VivaCore - быстрый стартVivaCore - быстрый старт
VivaCore - быстрый стартTatyanazaxarova
 
Описание VivaVisualCode
Описание VivaVisualCodeОписание VivaVisualCode
Описание VivaVisualCodeTatyanazaxarova
 
Использование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииИспользование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииDenis Latushkin
 
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...CodeFest
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработкиdevclub
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокTatyanazaxarova
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
Преимущества использования Viva64
Преимущества использования Viva64Преимущества использования Viva64
Преимущества использования Viva64Tatyanazaxarova
 
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Ilya Slobodin
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуAndrew Gubskiy
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems
 

Similaire à Краткое описание библиотеки анализа кода VivaCore (20)

Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
 
VivaCore - быстрый старт
VivaCore - быстрый стартVivaCore - быстрый старт
VivaCore - быстрый старт
 
Описание VivaVisualCode
Описание VivaVisualCodeОписание VivaVisualCode
Описание VivaVisualCode
 
Использование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииИспользование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложении
 
лек11 1
лек11 1лек11 1
лек11 1
 
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
 
2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибок
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Преимущества использования Viva64
Преимущества использования Viva64Преимущества использования Viva64
Преимущества использования Viva64
 
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
 
Team workflow
Team workflowTeam workflow
Team workflow
 

Plus de Tatyanazaxarova

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияTatyanazaxarova
 
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программTatyanazaxarova
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокTatyanazaxarova
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиTatyanazaxarova
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурTatyanazaxarova
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхTatyanazaxarova
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияTatyanazaxarova
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиTatyanazaxarova
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхTatyanazaxarova
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейTatyanazaxarova
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаTatyanazaxarova
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаTatyanazaxarova
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовTatyanazaxarova
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаTatyanazaxarova
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеTatyanazaxarova
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияTatyanazaxarova
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииTatyanazaxarova
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
 

Plus de Tatyanazaxarova (20)

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
 
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данных
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. Исключения
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен данными
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединениях
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателей
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвига
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
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