2009-08-13 134 views
9

A排序跟进/相关的问题,以this的。C++代码可视化

我试图让有成百上千的类和大型的继承层次的大型代码库的抓地力。我希望能够一目了然地看到继承层次的“主要脉络” - 而不是所有只能做一些非常特殊/专门的事情的“外围”类。 Visual Studio的“查看类图”使得东西看起来像一列火车,并且它在屏幕上水平地延伸并且不是很有组织。你无法轻松地练习它。

我刚试过的doxygen和graphviz的,但结果是..有点类似Visual Studio中。我越来越甜看电话图表,但再次太多细节我想要得到什么。

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

回答

6

为什么不只是做手工,这是开始一个大的代码基础工作的时候一个很好的学习经验。我通常只是看什么类从什么继承而来,哪些类包含哪些实例,引用或指向其他类的指针。在你身边放一张纸并得到绘图...

+1

我真的结束了火车图并检查它。然后我画了一张新图。一个有益的经验! – bobobobo 2009-09-02 05:04:49

5

一个好的UML工具应该做的伎俩。

这里是通用的UML工具列表:http://en.wikipedia.org/wiki/List_of_UML_tools

有很多在那里,都具有不同的功能集。尝试玩几个,看看你是否得到你想要的输出。如果他们免费的失败,你可能不得不掏出一个良好的商业级的UML工具

4

你可以尝试CppDepend,它不会像Doxygen那样创建类层次结构,但它可以显示你的项目的'全貌',它也显示一些代码度量。

4

而不是去到满级的设计工具,只需使用“类视图”,或在Visual Studio中的“对象浏览器” - 他们目前完全折叠类heirarchies。

0

你对'主脉'的定义是什么?你可能需要一个图形缩减器或者skeletizer(你可以找到或者写出一个并将它应用于Doxygen和其他产生的东西),或者'主要脉'与代码的功能有关,并且我不认为自动化工具可以帮助你。除非你能指出它'这些是做输入和输出的重要位,只给我看看距离它们之间的路径一步或两步的元素。哼,听起来像是一个很酷的工具:)

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

再次,一个甜美的想法的工具!

2

检查出SourceNavigator,它是开源的,可以在一堆平台上运行,并且具有层次浏览器,类浏览器,交叉引用浏览器等,可以让您浏览和理解代码。

我现在使用它一段时间,特别是当我有新的代码去了解和理解。

3

我已经与valgrind和kcachegrind做到了最成功。您对您的调试二进制文件运行valgrind,执行您感兴趣的任何操作,然后将输出导入到kcachegrind中,以查看关于谁调用什么,什么时候以及何时调用哪些内容。另外,因为你动态地做它,它捕捉了静态分析可能不会发生的情况。我使用Enterprise Architect的逆向工程特性也取得了一些成功,尽管这不会很好(但你得到了一个可行的UML模型,这很好!)。

最后,一个名为“理解”的工具。这在静态的面向对象分析方面非常出色,但是我觉得它非常昂贵,并没有被广泛使用。

2

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

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

+0

奇怪和怪诞的:) – bobobobo 2010-04-04 00:45:45