Linux中C++类层次/依赖图生成器

pjngdqdw  于 2023-06-21  发布在  Linux
关注(0)|答案(6)|浏览(162)

是否有一些工具可以通过检查Linux中的C代码来生成类层次结构/依赖关系图?
我有这个大集合的C
文件给我,这样的工具将是无价的,以帮助我了解源代码。我对它的理解有点纠结。

11dmarpk

11dmarpk1#

试试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;
};

结果:

不需要注解你的代码来生成这些图。第一个例子根本没有注解。第二个例子有一个没有doxygen样式注解的类。只需设置适当的参数(至少应设置EXTRACT_ALL = YES。我不知道这是否是所有需要的)。

byqmnocz

byqmnocz2#

有一个很有前途的新工具叫做cpp-depenencies
它可以生成component依赖关系图(如下所示)以及class层次结构图(通过传递一个选项将每个源文件视为组件)。

还有cpp_dependency_graph,它能够生成dotd3.js或JSON格式的组件/包含依赖关系图。
下面是一个d3.js可视化示例。

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

gab6jxml

gab6jxml3#

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

plicqrtu

plicqrtu4#

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

2uluyalo

2uluyalo5#

我建议大家尝试一下Source Navigator,一个用于C/C++/Fortran/Java/Tcl/PHP/Python的IDE
赢:https://sourcenav.sourceforge.net/
Linux(& mac?):http://chenweixiang.github.io/2019/09/09/source-navigator-ng.html#install-source-navigator-ng-4-5-on-linuxmint
它有点过时,位一直是一个有用的工具很长一段时间。已经有一段时间没有更新了(~2014),所以它会被较新的c14(+)特性所迷惑。可能也有一些来自C11。但是为了显示相当复杂的类层次结构,包括依赖关系调查和粗略的代码导航,它就足够了(前提是它不会在一些复杂的代码结构上崩溃)。
值得注意的是,曾经有源导航器扩展-基本上是一样的,但你可以调度几个独立的窗口。
下面是源代码:https://github.com/rogerz/sourcenavigator

djp7away

djp7away6#

根据我的经验,Source Trail是一个易于使用的工具,它具有直观的GUI,可以帮助您探索语言元素与其他相关元素之间的关系。它在MacOS上运行得很好。截至2021年9月,它不再开发,但存储库仍然可用。

相关问题