Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Описание VivaVisualCode

Описание VivaVisualCode

В данной статье рассмотрена программа VivaVisualCode, демонстрирующая использование библиотеки VivaCore. Программа VivaVisualCode графически отображает дерево разбора для вводимого исходного кода на языке Си++.

Введение

Большим недостатком многих библиотек для работы с кодом является отсутствие примеров, позволяющих легко и наглядно оценить результаты их работы. Такая ситуация часто наблюдается в сфере анализа и обработки исходного кода программ. Демонстрационные примеры представляются программами, принимающими через командную строку имена файлов, огромное количество ключей и генерирующие на выходе другие файлы. Такой недружественный интерфейс придает негативную эмоциональную окраску первому знакомству с библиотекой, в не зависимости от того, насколько библиотека подходит для решаемой задачи.

Мы постарались применить подход, позволяющий пользователю как можно раньше понять, с чем он имеет дело. Разрабатывая программу, демонстрирующую возможности библиотеки VivaCore мы решили сделать ее графическим приложением, строящим дерево разбора по вводимому Си++ коду. В результате появилась демонстрационная программа VivaVisualCode, которую вы можете скачать. Вы можете скачать как исходные тексты (проект Visual Studio 2005), так и исполняемый модуль.

Что такое VivaCore

VivaCore - это открытая библиотека для работы с Си и Си++ кодом. Библиотека предназначена для реализации на ее основе систем рефакторинга кода, систем статического и динамического анализа, систем трансформации или оптимизации кода, расширений языка, подсистем подсветки синтаксиса, систем построения документации по коду и других аналогичных инструментов.

В качестве отправной точки для создания библиотеки VivaCore была взята другая открытая библиотека OpenC++ http://opencxx.sourceforge.net.

Более подробно с библиотекой VivaCore вы можете познакомиться в статье "Сущность библиотеки анализа кода VivaCore", находящейся по адресу http://www.viva64.comhttps://pvs-studio.com/ru/blog/posts/a0013/.

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

Вы можете скачать библиотеку VivaCore.

Что такое VivaVisualCode

VivaVisualCode - это программа наглядно демонстрирующая возможности библиотеки VivaCode в построении деревьев разбора для кода на языке Си++. Программа VivaVisualCode реализует графическое отображение дерева разбора на экране (смотри рисунок 1).

a0025_VivaVisualCode_ru/image1.png

Рисунок 1. Пример построенного программой VivaVisualCode дерева разбора для кода "float Value = 10.0 * 20.0;".

Создаваемое дерево разбора (derivation tree - DT, parse tree - PT) отличается от абстрактного синтаксического дерева (Abstract Syntax Tree - AST) тем, что в нём присутствуют узлы для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером таких узлов являются группирующие скобки, в то время как в AST группировка операндов явно задаётся структурой дерева.

Реализация VivaVisualCode

Демонстрационная программа VivaVisualCode устроена весьма просто. Можно сказать, что она предоставляет пользовательский интерфейс к некоторым функциям библиотеки VivaCore. Например, она позволяет ввести с клавиатуры текст программы для разбора, графически отобразить построенное дерево разбора, вывести дополнительную информацию об узлах дерева.

С деталями реализации вы можете познакомиться непосредственно в исходном коде программы VivaVisualCode. Исходный код открыт, и вы можете его свободно модифицировать и использовать в своих целях.

Интерфейс пользователя

Кратко рассмотрим пункты меню в приложении VivaVisualCode:

  • File -> Open i-file... - позволяет загрузить препроцессированный i-файл. Примечание. Программа служит для демонстрационных целей и не рассчитана на работу с большими файлами.
  • File -> Export Image - позволяет экспортировать построенное дерево разбора в BMP файл.
  • File -> Exit - выход из программы.
  • Code -> Edit Code - редактирование входного Си++ кода.
  • View -> List Mode. В библиотеке VivaCore данные представлены в виде двоичных деревьев. Но логически работа ведется над списками. В результате существуют вспомогательные узлы, реализующие списки на основе дерева. Данный пункт меню позволяет скрывать или отображать эти вспомогательные узлы.
  • View -> Close All - свернуть все узлы.
  • View -> Open All - развернуть все узлы.

После ввода программы через "File->Open i-file..." или "Code->Edit Code" на экране будет отображено дерево разбора. Узлы отображаемого дерева раскрашены в различные цвета в зависимости от его типа. В терминальных узлах (листьях) отображена информация о лексемах, которые они представляют. Терминальные блоки окрашены в розовый цвет для лексем, являющихся ключевыми словами языка Си++. В других случаях они отображаются зеленым цветом, чтобы подчеркнуть, что лексемы - это конечные листья. Узлы верхнего уровня содержат названия и количество ветвей.

Вы можете совершать также ряд действий над деревом:

  • Прокручивать окно, когда дерево не вмещается на экране.
  • Сворачивать и разворачивать узлы (левая кнопка мыши).
  • Масштабировать изображение (Ctrl + колесо мыши).
  • О каждом из узлов можно получить дополнительную информацию, нажав на нем правой кнопкой мыши (смотри рисунок N2).
a0025_VivaVisualCode_ru/image3.png

Рисунок 2. Просмотр закодированного типа для декларации конструктора класса.

Заключение

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

Мы всегда открыты к общению. Пишите нам!

Популярные статьи по теме
15000 ошибок в открытых проектах

Дата: 24 Май 2022

Автор: Андрей Карпов

Количество багов в нашей коллекции перевалило за отметку 15000. Именно такое количество ошибок обнаружила команда PVS-Studio в различных открытых проектах. Особенно интересно, что это всего лишь побо…
Комментарии в коде как вид искусства

Дата: 04 Май 2022

Автор: Сергей Хренов

Приветствую всех программистов, а также сочувствующих. Кто из нас хотя бы раз в жизни не оставлял комментарии в коде? Был ли это ваш код, а может, чужой? Что за комментарии вы написали: полезные или …
Visual Studio 2022 стильно и свежо. История о её поддержке в PVS-Studio

Дата: 15 Фев 2022

Автор: Николай Миронов

Кажется, анонс Visual Studio 2022 был только недавно, и вот она уже вышла. Это означало ровно одно – поддержать данную IDE нужно в ближайшем релизе PVS-Studio. О том, с какими сложностями пришлось ст…
Лучшие срабатывания статического анализатора

Дата: 29 Окт 2021

Автор: Максим Звягинцев

У всех, кто запускал статический анализатор в первый раз на большом проекте, был небольшой шок по поводу сотен, тысяч или даже десятков тысяч предупреждений. Как-то грустно становится после такого. Т…
Зачем нужна техническая поддержка и как в ней не выгореть?

Дата: 01 Сен 2021

Автор: Николай Миронов

Не всем нравится работать в поддержке. Огромное количество людей выгорает на ней. Так может не стоит вообще её иметь? Какую выгоду она несёт? Можно ли как-то не выгорать от поддержки? Попробуем найти…

Комментарии (0)

Следующие комментарии
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять