ݺߣ

ݺߣShare a Scribd company logo
Краткое описание библиотеки
анализа кода 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 или ином виде.
Краткое описание библиотеки анализа кода VivaCore
Рисунок 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
Ad

Recommended

Вопросы и ответы по библиотеке VivaCore (VivaCore FAQ)
Вопросы и ответы по библиотеке VivaCore (VivaCore FAQ)
Tatyanazaxarova
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Denis Vasilyev
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
sandy97
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Denis Vasilyev
3. Разработка на Delphi для Linux
3. Разработка на Delphi для Linux
sandy97
1. RAD Studio Tokyo What's new Введение (К.Раннев)
1. RAD Studio Tokyo What's new Введение (К.Раннев)
sandy97
Seminar: Разработка приложений для Windows 10 и новые возможности VCL
Seminar: Разработка приложений для Windows 10 и новые возможности VCL
Denis Vasilyev
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Denis Vasilyev
лекция 17
лекция 17
student_kai
Lala qasanzade 9r2 c++
Lala qasanzade 9r2 c++
lala9r2
Роль интеграции в разработке ПО
Роль интеграции в разработке ПО
SQALab
378 васильев куницын
378 васильев куницын
Елена Ключева
Почему стоит выбрать PHP
Почему стоит выбрать PHP
Maxim Sivokon
Net framework
Net framework
poverhnost
Lala qasanzade 9r2 c++
Lala qasanzade 9r2 c++
lala9r2
Что должен уметь Linux программист
Что должен уметь Linux программист
ru_Parallels
Mixing c++ and python
Mixing c++ and python
corehard_by
Структура кода на С++
Структура кода на С++
DEVTYPE
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
Описание VivaVisualCode
Описание VivaVisualCode
Tatyanazaxarova
VivaCore - быстрый старт
VivaCore - быстрый старт
Tatyanazaxarova
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Andrey Karpov
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
Tatyanazaxarova
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Sergey Platonov
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Tatyanazaxarova
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
Tatyanazaxarova
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Tatyanazaxarova
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
Tatyanazaxarova
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
Tatyanazaxarova

More Related Content

What's hot (11)

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

Similar to Краткое описание библиотеки анализа кода VivaCore (6)

Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
Описание VivaVisualCode
Описание VivaVisualCode
Tatyanazaxarova
VivaCore - быстрый старт
VivaCore - быстрый старт
Tatyanazaxarova
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Andrey Karpov
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
Tatyanazaxarova
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Sergey Platonov
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
Описание VivaVisualCode
Описание VivaVisualCode
Tatyanazaxarova
VivaCore - быстрый старт
VivaCore - быстрый старт
Tatyanazaxarova
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Andrey Karpov
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
Tatyanazaxarova
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Sergey Platonov
Ad

More from Tatyanazaxarova (20)

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

Краткое описание библиотеки анализа кода 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 или ином виде.
  • 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