是否有任何工具可以可视化模板/类方法及其用法?

时间:2020-03-05 18:45:22  来源:igfitidea点击:

我已经接管了一个大型代码库,并希望获得有关如何以及在何处使用某些类及其方法的概述。

有没有什么好的工具可以以某种方式可视化依赖关系并绘制漂亮的调用树或者类似的东西?

如果这有助于缩小选择范围,则该代码在Visual Studio中的C ++中。

解决方案

回答

在Java中,我将从JDepend开始。在.NET中,使用NDepend。不了解C ++。

回答

以下是一些选择:

  • 代码抽屉
  • CC-RIDER
  • 氧气

最后一个Doxygen更像是一种自动文档编制工具,但它能够生成依赖关系图和继承图。它也是根据GPL许可的,与前两个不是免费的不同。

回答

大卫,谢谢你的建议。我花了整个周末试用这些程序。

Doxygen似乎是3种方法中最全面的方法,但是对于方法的调用者,它仍然有一些不足之处。

所有这三个似乎在不同程度上都与C ++模板有关。 CC-Rider只是在分析过程中崩溃,而CodeDrawer并未显示许多关系。 Doxygen工作得很好,但是它也没有找到并显示所有关系,而是用大量的宏引用使我不知所措,直到我将它们过滤掉。

因此,也许我应该澄清一下"大型代码库",以得出最终的其他建议:总体上> 100k行代码分布在100多个模板文件以及几个实际的类文件中,将它们全部组合在一起。

还有其他工具可以完成任务并且可以做得更好(更彻底)吗?哦,尤其是:是否了解IDL和COM接口?

回答

当我使用Doxygen时,它会生成呼叫者和被呼叫者的完整列表。我认为我们必须打开它。

回答

When I have used Doxygen it has produced a full list of callers and callees. I think you have to turn it on.

我当然这样做了,但是就像我提到的那样,doxygen不考虑IDL中定义的对象之间的接口。它"仅"显示直接的C ++调用。

不要误会我的意思,它的作用已经很神奇了,但是从我的高层次观点来看,它仍然还不是完整的,试图更好地理解所有东西如何组合在一起。