Подтвердить что ты не робот

Визуализация исходного кода C/С++?

В основном мне нужны инструменты, которые генерируют визуализацию исходного кода, например:

  • график вызовов функций
  • график зависимостей
  • ...
4b9b3361

Ответ 1

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

После того, как вы все установили, нарисовать графики действительно довольно просто. Убедитесь, что вы установили EXTRACT_ALL и CALL_GRAPH в true, и вы должны быть в порядке.

Полная документация по этой функции для doxygen находится здесь.

Ответ 2

Я настоятельно рекомендую BOUML. Это бесплатное приложение моделирования UML, которое:

  • чрезвычайно быстрый (самый быстрый инструмент UML, когда-либо созданный, проверить тесты),
  • имеет встроенную поддержку импорта С++,
  • имеет большую поддержку экспорта SVG, что важно, поскольку просмотр больших графиков в векторном формате, который быстро масштабируется, например, Firefox, очень удобно (вы можете быстро переключаться между представлением "птичий глаз" и представлением класса),
  • полнофункциональный, впечатляюще интенсивно разработанный (посмотрите история развития, трудно поверить, что возможен такой быстрый прогресс).

Итак: импортируйте свой код в BOUML и просмотрите его там, или экспортируйте в SVG и просмотрите его в Firefox.

Для бесплатной версии:

Ответ 3

Вы можете посмотреть различные инструменты для разработки и моделирования программного обеспечения (Rational Rose, Sparx Enterprise Architect, Umbrello и т.д.). Большинство из них имеют некоторые функциональные возможности для обратного моделирования по исходному коду и получения диаграмм классов UML, а иногда даже диаграмм последовательности (и это очень близко к графику вызовов функций).

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

Как и для меня, использование идиомы "разделяй и властвуй" - более удобный подход. Вы можете извлечь из своей базы кода различные функциональные блоки или слои (достаточно просто сортировать файлы cpp разными папками). Другой способ - использовать некоторые скрипты (bash, python) для создания простых таблиц csv с заинтересованными параметрами файлов, классов или функций типа "количество зависимостей" и т.д.).

Ответ 4

Попробуйте Doxygen

Пример вывода из Xerces

Ответ 5

Если вы используете Visual Studio, выпуск 2010 Ultimate позволяет создавать диаграммы последовательности и графики зависимостей. Тем не менее, релиз в настоящее время поддерживает только .NET-приложения.

Команда получила большой интерес к поддержке С++ в будущей версии, поэтому вы можете захотеть оставаться на связи. Тем временем вы можете публиковать сообщения на форуме VS 2010 Architectural Discovery and Modeling Tools на http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads для запроса обновление. Я знаю, что команда продуктов любит слышать отзывы клиентов о инструментах.

Тем временем вы можете узнать больше о создании диаграмм последовательностей и диаграмм зависимостей из .NET-кода в следующих разделах:

Как найти код с помощью проводника архитектуры Архитектура: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

Как создать графические документы из кода: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

Практическое руководство. Изучите код с диаграммами последовательностей: http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx

Чтобы попробовать выпуск RC и предоставить обратную связь, загрузите его на http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a

Ответ 6

Возможно, это дублирование, но проверьте ollydbg, IDA Pro и этот веб-сайт имеет целую кучу ресурсов с некоторыми очень сексуальными образами.

Ответ 7

В дополнение к написанным выше инструментам вы можете попробовать понять. Но это не бесплатно.

Ответ 8

Существует старый инструмент CDOC, который мы все еще используем для создания деревьев вызовов.