Graphviz + Doxygen для создания диаграмм классов UML

Я хочу использовать Graphviz + Doxygen для генерации диаграммы классов на основе кода C++. Это уже работает, так как Doxygen поставляется с встроенной поддержкой DOT; но возможно ли создать UML-подобный вывод с соответствующими модификаторами доступа (public, private и т.д.), типами возврата и параметрами методов класса, как показано на диаграмме ниже?

Я знаю о теме Как использовать doxygen для создания диаграмм классов UML из источника C++, но он не отвечает на этот вопрос.

enter image description here

Ответ 1

Создайте следующий исходный файл example.cpp:

class Animal
{
  public:
    void die();
    string name;
    int age;
};

class Dog : public Animal
{
  public:
    void bark();
};

class Cat : public Animal
{
  public:
    void meow();
};

запустите doxygen -g и измените следующие параметры сгенерированного Doxyfile:

EXTRACT_ALL            = YES
HAVE_DOT               = YES
UML_LOOK               = YES

запустите doxygen и посмотрите на результат для класса Animal, он должен быть аналогичен приведенному выше изображению, хотя doxygen не будет отображать возвращаемые типы методов и полей.

Ответ 2

У меня была похожая проблема, теперь она успешно решена.

Ниже приведены шаги (при условии, что вы используете GUI-версию Doxygen-Doxywizard)

  1. Нажмите на кнопку Эксперт

  2. Перейдите на вкладку Dot и выберите DOT_PATH. Найдите папку, в которую вы установили программу. например, "C: /Program Files (x86)/Graphviz2.32/bin"

Надеюсь, это поможет, Анит

Ответ 3

Попробуйте Doxygraph !

Doxygraph - это набор инструментов для автоматизации обратного инжиниринга диаграмм классов UML из исходного кода вашего проекта и представления их в виде интерактивных веб-приложений.

Он использует Doxygen для анализа исходного кода и создания промежуточного XML-представления собираемой информации, поэтому он поддерживает все те же языки программирования, которые поддерживает Doxygen: C, C++, С#, Objective C, Java, Python, PHP, Tcl, D, IDL, VHDL и Фортран.

Вам нужно прочитать README из клонированного проекта.

Ответ 4

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