Graphviz + Doxygen для создания диаграмм классов UML - PullRequest
43 голосов
/ 28 февраля 2012

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

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

enter image description here

Ответы [ 4 ]

56 голосов
/ 28 февраля 2012

Создайте следующий исходный файл 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();
};

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

EXTRACT_ALL            = YES
HAVE_DOT               = YES
UML_LOOK               = YES

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

18 голосов
/ 04 сентября 2013

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

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

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

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

Надеюсь, это поможет, Anit

4 голосов
/ 11 ноября 2014

Попробуйте Доксиграф !

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

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

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

2 голосов
/ 11 апреля 2012

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

...