Генератор диаграмм иерархии классов/зависимостей для С++ в Linux

Есть ли какой-нибудь инструмент для создания диаграмм иерархии/зависимостей классов, проверяя код С++ в Linux?

У меня есть эта большая коллекция файлов С++, предоставленная мне, и такой инструмент будет бесценным, чтобы помочь мне понять исходный код. Я немного запутался в понимании этого.

Ответ 1

Попробуйте доксиген. Он также может быть отправлен с вашим дистрибутивом.

Вам может понадобиться GraphViz для генерации графиков. Есть простой пример и вывод.

И это более сложный пример из файла легенды, сгенерированного doxygen:

Код (ПРИМЕЧАНИЕ: если вы хотите только генерировать графики, комментарии не требуются.):

/*! Invisible class because of truncation */
class Invisible { };

/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };

/* Class not documented with doxygen comments */
class Undocumented { };

/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };

/*! A template class */
template<class T> class Templ { };

/*! Class that is inherited using protected inheritance */
class ProtectedBase { };

/*! Class that is inherited using private inheritance */
class PrivateBase { };

/*! Class that is used by the Inherited class */
class Used { };

/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
                  protected ProtectedBase,
                  private PrivateBase,
                  public Undocumented,
                  public Templ<int>
{
  private:
    Used *m_usedClass;
};

Результат:

enter image description here

Вам не нужно комментировать свой код для создания этих графиков. Первый пример не имеет комментариев вообще. Во втором примере есть один класс без комментариев в стиле doxygen. Просто установите соответствующий параметр (по крайней мере, EXTRACT_ALL = YES должен быть установлен. Я не могу вспомнить, является ли это все, что нужно).

Ответ 2

Если вы используете Eclipse в качестве IDE, вы можете использовать иерархию типов, чтобы увидеть иерархию классов.

Ответ 4

Там многообещающий новый инструмент под названием cpp-depenencies.

Он может генерировать диаграммы зависимостей component (как показано ниже), а также диаграммы иерархии class (передавая опцию для обработки каждого исходного файла как компонента).

enter image description here

Есть также cpp_dependency_graph, который может генерировать компоненты/включать графы зависимостей в dot, d3.js или JSON форматах.

Ниже приведен пример визуализации d3.js

enter image description here

Отказ от ответственности - я автор cpp_dependency_graph.