Как использовать doxygen для создания диаграмм классов UML из исходного кода C ++ - PullRequest
75 голосов
/ 21 января 2011

Я искал материал, который описывает, как генерировать простые диаграммы классов с помощью doxygen, но не смог найти.Кто-нибудь может помочь?

Мне нужно создать диаграммы, как показано ниже, из набора файлов C ++.alt text

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

Ответы [ 5 ]

48 голосов
/ 21 января 2011

Doxygen создает диаграммы наследования, но я не думаю, что он создаст целую иерархию классов.Это позволяет вам использовать инструмент GraphViz.Если вы используете интерфейсный интерфейс Doxygen GUI, вы найдете соответствующие опции в Step2: -> Wizard tab -> Diagrams.Параметры отношения DOT находятся на вкладке «Эксперт».

40 голосов
/ 06 марта 2013

Цитата из этого поста (написано самим автором doxygen):

run doxygen -g and change the following options of the generated Doxyfile:

    EXTRACT_ALL            = YES
    HAVE_DOT               = YES
    UML_LOOK               = YES

run doxygen again
31 голосов
/ 12 июля 2016

Хм, похоже, это старый вопрос, но, так как последние несколько дней я баловался с конфигурацией Doxygen, в то время как моя голова все еще полна текущей информации, давайте попробуем -

Я думаю, что предыдущие ответы почти есть:

Отсутствует опция добавления COLLABORATION_GRAPH = YES в Doxyfile. Я предполагаю, что вы можете сделать аналогичную вещь где-нибудь в графическом интерфейсе doxywizard (я не использую doxywizard).

Итак, в качестве более полного примера типичные параметры «Doxyfile», связанные с выводом UML, которые я обычно использую:

EXTRACT_ALL          = YES
CLASS_DIAGRAMS      = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT             = YES
CLASS_GRAPH          = YES
COLLABORATION_GRAPH  = YES
UML_LOOK             = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS   = YES
DOT_GRAPH_MAX_NODES  = 100
MAX_DOT_GRAPH_DEPTH  = 0
DOT_TRANSPARENT      = YES

Эти настройки будут генерировать диаграммы "наследования" (CLASS_GRAPH=YES) и "совместной работы" (COLLABORATION_GRAPH=YES).

В зависимости от вашей цели «развертывания» выхода кислорода, настройка DOT_IMAGE_FORMAT = svg также может быть полезной. При выводе svg диаграммы «масштабируются» вместо фиксированного разрешения растровых форматов, таких как .png. По-видимому, при просмотре вывода в браузерах, отличных от IE, есть также INTERACTIVE_SVG = YES, который позволит «интерактивное масштабирование и панорамирование» сгенерированных SVG-диаграмм. Я пытался это сделать некоторое время назад, и вывод svg был очень привлекательным, но в то время поддержка svg в браузере все еще была немного противоречивой, так что, надеюсь, в последнее время ситуация могла улучшиться.

Как уже упоминалось в других комментариях, некоторые из этих настроек (в частности, DOT_GRAPH_MAX_NODES) имеют потенциальное влияние на производительность, поэтому YMMV.

Я склонен ненавидеть ответы в стиле "RTFM", поэтому извиняюсь за это предложение, но в этом случае документация по Doxygen действительно является вашим другом, так что ознакомьтесь с документами Doxygen по вышеупомянутым настройкам - в последний раз, когда я смотрел, вы можете найти детали на http://www.doxygen.nl/manual/config.html.

4 голосов
/ 30 июля 2014

Enterprise Architect будет строить диаграмму UML из импортированного исходного кода.

4 голосов
/ 21 января 2011

Я думаю, вам нужно отредактировать файл doxys и установить для GENERATE_UML (что-то подобное) значение true. И вам нужно установить dot / graphviz.

...