10

对此的一种跟进/相关问题。

我试图掌握一个拥有成百上千个类和大继承层次结构的大型代码库。我希望能够一目了然地看到继承层次结构的“主脉”——不是所有只做一些非常具体/专门的事情的“外围”类。Visual Studio 的“视图类图”使一些看起来像火车的东西在屏幕上水平伸展,并且不是很有条理。你不能轻易地摸索它。

我刚刚尝试过 doxygen 和 graphviz,但结果......有点类似于 Visual Studio。我得到了看起来很漂亮的调用图,但对于我想要得到的东西来说又太多了。

我需要一种在某种可折叠视图中快速生成继承层次结构的方法。

4

9 回答 9

7

为什么不直接手动完成呢,当开始使用大型代码库时,这是一个很好的学习体验。我通常只看什么类继承自什么,什么类包含什么实例、引用或指向其他类的指针。在你身边放一张纸,然后开始画画……

于 2009-08-13T12:36:55.140 回答
6

无需进入完整的类设计器工具,只需使用 Visual Studio 中的“类视图”或“对象浏览器”——它们呈现完全可折叠的类层次结构。

于 2009-08-13T16:53:27.060 回答
5

一个好的 UML 工具应该可以解决问题。

以下是通用 UML 工具列表:http ://en.wikipedia.org/wiki/List_of_UML_tools

那里有很多,都有不同的功能集。尝试玩一些,看看你是否得到了你想要的输出。如果他们的免费工具让你失望,你可能不得不花钱买一个好的商业级 UML 工具

于 2009-08-13T11:56:57.697 回答
4

您可以尝试CppDepend,它不会像 Doxygen 那样创建类层次结构,但它可以为您的项目显示“大局”,它还显示了一些代码指标。

于 2009-08-13T12:48:41.333 回答
3

我在 valgrind 和 kcachegrind 上取得了最大的成功。您对调试二进制文件运行 valgrind,执行您感兴趣的任何操作,然后将输出导入 kcachegrind 以查看您想知道的关于谁调用了什么、频率和时间的所有信息。另外,因为你是动态地做的,它可以捕捉到静态分析可能不会的情况。

我在使用 Enterprise Architect 的逆向工程特性方面也取得了一些成功,尽管结果并不那么好(但你得到了一个很好的可行的 UML 模型!)。

最后,一个名为“理解”的工具。这在静态 OO 分析方面非常出色,但我认为价格昂贵且使用不广泛。

于 2009-08-14T07:10:31.087 回答
2

尝试Source Insight可以在此工具中配置生成图的深度。

另请参阅适用于 Windows 平台的 C/C++ 调用图实用程序

于 2009-08-13T15:41:58.333 回答
2

查看SourceNavigator,它是开源的,可在多种平台上运行,并具有层次结构浏览器、类浏览器、交叉引用浏览器等,可让您导航和理解代码。

我已经使用了一段时间了,尤其是当我有新的代码需要通过和理解时。

于 2009-08-13T20:40:34.390 回答
2

对于价格合理的商业产品,您可能需要查看 Vizlogix (www.vizlogix.com) 的 SolidSX。(如果您不在北美,请访问 SolidSource -- www.solidsourceit.com。)

它会生成一个可以折叠和展开的径向图。它还与 Visual Studio(BSC 和 .NET)集成。

于 2010-04-03T22:16:57.813 回答
0

你对“主脉”的定义是什么?您要么想要一个图形化简器或骨架化器(您可以找到或编写一个并将其应用于 Doxygen 和其他产品),或者“主脉”与代码的功能有关,我不认为自动化工具可以帮助您。除非你能指出“这些是输入和输出的重要部分,否则只显示距离它们之间的路径一两步的元素”。嗯,听起来是个很酷的写作工具:)

...继承层次结构,在某种可折叠的视图中。

再次,一个工具的好主意!

于 2009-08-13T18:40:12.337 回答