Прототип инструмента для анализа графа потока управления открытых исходных текстов С и С++ на основе универсального представления

Материал из 0x1.tv

Полное название
«Прототип инструмента для получения и анализа графа потока управления открытых исходных текстов С/С++ на основе универсального промежуточного представления»

Аннотация

Докладчик
Алексей Пустыгин.jpg
Алексей Пустыгин

В докладе описывается прототип программного инструмента, предназначенного для получения эквивалентного представления открытого исходного текста на объектно-ориентированном языке программирования. Эквивалентные представления в виде диаграммы классов и диаграммы потока управления строится на основании промежуточного представления исходного текста. Использование универсального промежуточного представления позволяет использовать единый конвертор для получения диаграмм классов для текстов на разных исходных языках.

Целью описываемой работы было написание рабочего прототипа программного инструмента для получения эквивалентных представлений исходных текстов программ на языке С/С++. Для обеспечения возможности получения нескольких эквивалентных представлений — диаграммы классов, диаграммы потока управления, и возможности унификации части функциональных модулей для набора входных языков было реализовано универсальное промежуточное представления исходных текстов программ на языке С/С++.

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

  • Dehydra,
  • Treegydra,
  • Clang.

Каждый из этих инструментов позволяют получить промежуточное представление в форме абстрактного синтаксического дерева AST, которое является наиболее полным промежуточным представлением. Каждый из этих инструментов являются открытым проектом и достаточно документирован.

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

Прототип реализован на ОС Ubuntu 10.04, язык программирования С/С++, для генерации промежуточного представления используется библиотека libclang 3.2, входящая в состав проекта Сlang[1], ко- торый разрабатывается как замена GCC, в частности, Google и Apple.

Clang является фронт-эндом для языков программирования C, C++, Objective-C и Objective-C++(англ.), использующим для оптимизации и кодогенерации фреймворк LLVM и включен состав дистрибутива ОС FreeBSD.

Связь с исходным текстом настраивается на любой популярный текстовый редактор с помощью файла настроек (уже поддерживаются: Gedit, Geany, Vim, Nano).

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Скачать или открыть видео прямо в броузере
http://ftp.linux.kiev.ua/pub/conference/peers/pereslavl/2013/video/cpp-static-analysis-tool-pustygin.webm







Слайды

Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf Прототип инструмента для анализа графа потока управления открытых исходных текстов С++.pdf

Примечания и отзывы

Plays:128   Comments:0