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

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

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

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

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

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

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


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

>
>
Описание VivaVisualCode

Описание VivaVisualCode

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

Введение

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

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

Что такое VivaCore

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

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

Более подробно с библиотекой VivaCore вы можете познакомиться в статье "Сущность библиотеки анализа кода VivaCore", находящейся по адресу https://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.

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

Популярные статьи по теме
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

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

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

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

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
PVS-Studio ROI

Дата: 30 Янв 2019

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

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
PVS-Studio для Java

Дата: 17 Янв 2019

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

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

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

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

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

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

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

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
Эффект последней строки

Дата: 31 Май 2014

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

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

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

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…
Любите статический анализ кода!

Дата: 16 Окт 2017

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

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.

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

Следующие комментарии

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