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

时间:2011-12-14 17:50:17

标签: c++ linux class

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

我有大量的C ++文件给我,这样的工具对我有帮助 了解源代码。我对理解它有点纠结。

4 个答案:

答案 0 :(得分:15)

试试doxygen。它也可能与您的发行版一起发货。

您可能需要GraphViz来生成图表。有a simple exampleoutput

这是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。我不记得是否只需要这些。)

答案 1 :(得分:2)

有一个名为cpp-depenencies的有前途的新工具。

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

enter image description here

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

以下是d3.js可视化示例。

enter image description here

免责声明 - 我是cpp_dependency_graph的作者。

答案 2 :(得分:1)

如果您将Eclipse用作IDE,则可以使用类型层次结构来查看类层次结构。

答案 3 :(得分:1)

如果您使用kdevelop,则可以安装kdevcontrolflowgraphview plugin