C ++代码可视化

问题描述 投票:9回答:9

this的一种跟进/相关问题。

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

我刚试过doxygen和graphviz,但结果有点类似于Visual Studio。我正在看起来很甜美的呼叫图,但是我想要获得的内容还有太多细节。

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

c++ inheritance visualization
9个回答
6
投票

为什么不手动操作,在开始使用大型代码库时,这是一次很好的学习体验。我通常只看一下什么类从什么继承,什么类包含什么实例,引用或指向其他类的指针。在你旁边拿一张纸然后画画......


5
投票

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

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

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


5
投票

而不是进入完整的类设计器工具,只需使用Visual Studio中的“类视图”或“对象浏览器” - 它们提供完全可折叠的类层次结构。


4
投票

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


3
投票

我用valgrind和kcachegrind取得了最大的成功。你运行valgrind反对你的调试二进制文件,执行你感兴趣的任何动作,然后将输出导入kcachegrind,看看你想知道的关于谁叫什么,多久和什么时候的一切。另外,因为你动态地做它,它会捕获静态分析可能不会发生的情况。

我在使用Enterprise Architect的逆向工程功能方面也取得了一些成功,虽然这并不是最好的结果(但是你得到了一个可行的UML模型,这很好!)。

最后,一个名为“理解”的工具。这在静态OO分析方面相当不错,但我认为相当昂贵并且没有广泛使用。


2
投票

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

另见C/C++ call-graph utility for Windows platform


2
投票

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

我现在正在使用它已经有一段时间了,尤其是当我有新的代码要经历并理解时。


2
投票

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.