是否有一些工具可以通过检查Linux中的C ++代码来生成类层次结构/依赖关系图?
我有大量的C ++文件给我,这样的工具对我有帮助 了解源代码。我对理解它有点纠结。
答案 0 :(得分:15)
试试doxygen。它也可能与您的发行版一起发货。
您可能需要GraphViz来生成图表。有a simple example和output。
这是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;
};
结果:
您不需要评论您的代码以生成这些图表。第一个例子根本没有评论。第二个例子有一个没有doxygen风格注释的类。只需设置适当的参数(至少应设置EXTRACT_ALL = YES
。我不记得是否只需要这些。)
答案 1 :(得分:2)
有一个名为cpp-depenencies
的有前途的新工具。
它可以生成component
依赖关系图(如下所示)以及class
层次结构图(通过传递一个选项将每个源文件视为一个组件)。
还有cpp_dependency_graph
,它能够以dot
,d3.js
或JSON格式生成组件/包含依赖关系图。
以下是d3.js
可视化示例。
免责声明 - 我是cpp_dependency_graph
的作者。
答案 2 :(得分:1)
如果您将Eclipse用作IDE,则可以使用类型层次结构来查看类层次结构。
答案 3 :(得分:1)
如果您使用kdevelop,则可以安装kdevcontrolflowgraphview plugin。