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)
-
Нажмите на кнопку Эксперт
-
Перейдите на вкладку 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, но для этого требуется больше работы с документацией.