Linux中C++的类层次结构/依赖关系图生成器

smi*_*dha 13 c++ linux class

是否有一些工具通过检查Linux中的C++代码来生成类层次结构/依赖关系图?

我有一大堆给你的C++文件,这样的工具对于帮助我理解源代码非常宝贵.我对理解它有点纠结.

fef*_*efe 16

尝试doxygen.它也可能随您的发行版一起提供.

您可能需要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;
};
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

并不需要注释你的代码来生成这些图表.第一个例子根本没有评论.第二个例子有一个没有doxygen风格注释的类.只需设置适当的参数(至少EXTRACT_ALL = YES应该设置.我不记得这是否只需要).

  • @ArmenTsirunyan DoxyGen不需要注释.它甚至可以用在没有评论的项目上.您只需要设置适当的参数. (4认同)

the*_*oid 7

有一个很有前途的新工具叫做 cpp-depenencies.

它可以生成component依赖关系图(如下所示)以及class层次结构图(通过传递一个选项来将每个源文件视为一个组件)。

在此处输入图片说明

还有cpp_dependency_graph,它能够生成组件/包括依赖关系图dotd3.js或JSON格式。

下面是一个示例d3.js可视化。

在此处输入图片说明

免责声明 - 我是cpp_dependency_graph.