我已经接管了一个大型代码库,并想大致了解某些类及其方法的使用方式和位置。
有没有什么好的工具可以以某种方式可视化依赖关系并绘制一个漂亮的调用树或类似的东西?
如果这有助于缩小任何选择范围,则代码在 Visual Studio 中的 C++ 中。
我已经接管了一个大型代码库,并想大致了解某些类及其方法的使用方式和位置。
有没有什么好的工具可以以某种方式可视化依赖关系并绘制一个漂亮的调用树或类似的东西?
如果这有助于缩小任何选择范围,则代码在 Visual Studio 中的 C++ 中。
当我使用 Doxygen 时,它会生成完整的调用者和被调用者列表。我认为你必须打开它。
在 Java 中,我将从 JDepend 开始。在 .NET 中,使用 NDepend。不知道C++。
大卫,谢谢你的建议。我整个周末都在试用这些程序。
Doxygen 似乎是这 3 个中最全面的,但在方法调用者方面仍有一些不足之处。
所有 3 个似乎都在不同程度上存在 C++ 模板的问题。CC-Rider 只是在分析过程中崩溃了,CodeDrawer 没有显示很多关系。Doxygen 工作得很好,但它也没有找到并显示所有关系,而是用大量的宏引用让我不知所措,直到我将它们过滤掉。
所以,也许我应该澄清一下“大型代码库”,以获得最终的其他建议:> 100k 行代码总体分布在 100 多个模板文件以及几个实际的类文件中。
有没有其他工具可以胜任这项任务并且可以做得更好(更彻底)?哦,特别是:任何了解 IDL 和 COM 接口的东西?
当我使用 Doxygen 时,它会生成完整的调用者和被调用者列表。我认为你必须打开它。
我当然这样做了,但就像我提到的,doxygen 不考虑对象之间的接口,因为它们在 IDL 中定义。它“仅”显示直接 C++ 调用。
不要误会我的意思,它的作用已经很了不起了,但从我的高级观点来看,它仍然不完整,试图很好地理解所有东西是如何组合在一起的。