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

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

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

Вы имеете в виду зависимости в интерфейсах (например, диаграммы наследования) или зависимости в реализациях (граф вызовов, например, есть ребро от функции A к B, если A вызывает B в своем теле)?

Krystian 02.04.2010 16:14

Вы можете попробовать CppDepend (cppdepend.com), где вы можете сгенерировать граф вызовов функций / графики зависимостей и отфильтровать элементы на графике с помощью CQLinq. CppDepend бесплатен для участников с открытым исходным кодом.

James from CppDepend Team 11.07.2017 22:10

Взгляните на cpp-dependencies, это новый инструмент, который может генерировать визуализацию кодовой базы с использованием языка dot (Graphviz).

thegreendroid 30.03.2018 10:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
65
3
54 967
7

Ответы 7

Попробуйте доксиген

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

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

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

После того, как вы все установили, рисовать графики действительно довольно просто. Убедитесь, что вы установили для ИЗВЛЕЧЬ ВСЕ и CALL_GRAPH значение true, и все будет в порядке.

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

Милая. Очень просто использовать. GraphViz изменяет ваш системный путь, а doxygen использует его.

bobobobo 12.08.2009 23:43

+1 Согласен. Doxygen - очень полезный инструмент при изучении существующего кода. Отметьте опцию генерации исходного кода, и вы легко сможете перемещаться по базе кода, не открывая редактор кода ...

neuro 13.08.2009 19:24

Не забудьте также HAVE_DOT = YES

polypus74 04.01.2013 21:00

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

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

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

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

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

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

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

Установщик Windows для 4.23.7 ​​можно найти на той же странице sourceforge, что и Douml, в разделе "Файлы".

Zeks 13.05.2013 01:27
launchpad.net/~pasgui/+archive/ppa this guy is creating regular builds for douml debian/ubuntu As @Zeks suggested in other thread.
kikeenrique 06.06.2013 16:52

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

Команда проявляет большой интерес к поддержке C++ в будущих версиях, так что вы можете следить за обновлениями. А пока вы можете оставить сообщение на форуме VS 2010 Architectural Discovery и инструменты моделирования по адресу 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

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

У них есть пробная версия, которая может быть весьма кстати.

karlphillip 02.07.2011 22:31

Другие вопросы по теме