是否有一些工具通过检查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应该设置.我不记得这是否只需要).
有一个很有前途的新工具叫做 cpp-depenencies.
它可以生成component依赖关系图(如下所示)以及class层次结构图(通过传递一个选项来将每个源文件视为一个组件)。
还有cpp_dependency_graph,它能够生成组件/包括依赖关系图dot,d3.js或JSON格式。
下面是一个示例d3.js可视化。
免责声明 - 我是cpp_dependency_graph.