【问题标题】:C++ code visualizationC++代码可视化
【发布时间】:2010-11-19 06:45:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ inheritance visualization


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我实际上最终拿到了火车图并检查了它。然后我画了一个新的图表。一次有益的经历!
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

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

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                【解决方案8】:

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

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

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

                【讨论】:

                  【解决方案9】:

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

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

                  【讨论】:

                    猜你喜欢
                    • 2010-09-06
                    • 2012-06-26
                    • 2011-02-21
                    • 1970-01-01
                    • 2010-11-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-02-05
                    相关资源
                    最近更新 更多