2014-12-05 2 views
5

Мне нужно автоматически построить блок-схемы из кода C++, в идеале - одну блок-схему на исходный файл. Есть ли какой-либо инструмент (желательно C++/Python и с открытым исходным кодом или с высокой конфигурацией - так что я могу изменить внешний вид), который я могу использовать для создания блок-схем?Автоматически генерировать блок-диаграммы из кода C++

http://www.faqs.org/patents/img/20110088010_08.png

+1

Я знаю, что Enterprise Architect http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/execution_analyzer/generating_sequence_diagram.html может генерировать диаграммы последовательности в фоновом режиме при отладке вашего кода. Когда вы закончите отладку, она попросит вас сохранить созданную диаграмму. Все функции, в которых вы установили точки останова и которые на самом деле попали во время сеанса отладки, рассматриваются в сгенерированной диаграмме последовательности. – user1

+0

Таким образом, EA дает * динамический * анализ, а не статический анализ. –

ответ

3

clang/llvm может генерировать graphviz dot files.

Пример:

clang -S -emit-llvm -o hello.ll hello.cpp 
opt hello.ll -dot-cfg -o hello.dot 

Этот выход несколько .dot файлов, по одному для каждой функции, определенной в hello.cpp. Вы также можете генерировать графа доминирования, постпоглощающего графика и т. Д. (См. here).

После того, как у вас есть файлы .dot, вы можете использовать dot, чтобы преобразовать его в файл .png. Сам файл .dot содержит только структуру графика, поэтому вывод dot должен быть очень настраиваемым (но я не очень-то знаком с ним).

+1

Спасибо за предложение! .dot действительно отлично подходят для моей задачи. – Konstantin

2

Использование Enterprise Architect инструмент.

http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/execution_analyzer/generating_sequence_diagram.html

Вы можете создать диаграмму последовательности во время отладки кода.

Демонстрация: Online Demo

Примечание: - Это работает с кодом C++, а также. Просто используйте собственный отладчик.

+0

Благодарим вас за предложение. Является ли он настраиваемым, могу ли я изменить внешний вид диаграмм? Полученная диаграмма в демонстрации, которую вы упомянули, выглядит довольно ... – Konstantin

+0

Нет, это диаграммы последовательности. Диаграммы последовательности или диаграммы активности хороши для объектно-ориентированной базы кода, и ваш вопрос задан на C++. Если вам нужны блок-схемы, то используйте конструктор ракеты Code. http://www.rapidqualitysystems.com/ – user1

0

Если вы не против вывода открытого текста, «cflow» выполнит задание. Он находится в хранилищах, по крайней мере, Debian и, возможно, большинства дистрибутивов Linux.

+0

Кажется, что cflow создает диаграммы вызовов, но мне нужны блок-схемы (как работает алгоритм) – Konstantin

+0

Ах. Да, он анализирует ваш источник статически, поэтому, если вы хотите знать, как ваша программа на самом деле протекает во время выполнения, это вам не поможет. – JorenHeit

Смежные вопросы