记录/可视化调用图的工具?

9
最近加入了一个代码量很大的项目,我想开始记录和可视化一些调用图中的流程,以便更好地理解所有组件之间的关系。这是我想在我的理想工具中看到的内容:
  • 每个节点都是一个函数/方法
  • 如果一个函数可以调用另一个函数,则将节点连接起来
  • 可选的正方形框在两个节点之间详细说明调用条件(或者像提示工具一样悬停时出现的标签图标)
  • 边缘上也有描述参数的图标
  • 悬停在节点上时显示描述
  • 可选的节点图标显示伪代码
  • 场景/领域视图-显示特定用例的完整图的子集
  • 幻灯片视图模式-对于每个帧,当前执行的函数会被突出显示
  • 有很多选项可供选择,以减少屏幕上的混乱情况
交互使用此工具非常重要,我不需要类似Graphviz的解决方案,因为会有太多混乱。能够形成整个图的子集视图将非常方便(也许将不重要的混乱内容变灰)。不需要自动生成源代码,可以手动输入。
几乎就像一个思维导图。
这样说您是否明白?如果您不知道这样的工具,您认为它也会有用吗?(以防我决定有一天去实现它!)

手动编写调用图感到高兴吗?你该如何保持它的最新状态呢? - Ira Baxter
2个回答

2
为了进一步发展Willem van Rumpt的答案,使用NDepend工具,您确实可以获得像这样的调用图。免责声明:我是该工具的开发人员之一。

Call graph

你只需要将 CQLinq 代码查询 的结果导出到图表中即可:

code query exporting

这样的代码查询实际上可以为任何方法生成,感谢下面所示的右键单击菜单。

Select methods that use me directly or indirectly


2
你没有提到你使用的环境,但如果是.NET的话,NDepend可能会很有用。

嗨,代码在主机上,但我想在 Windows 下进行可视化。 - Dave Griffiths
有任何语言特定要求吗?浏览了一下您的个人资料,似乎您正在使用Java(以某种形式)。有一个名为JDepend(http://www.clarkware.com/software/JDepend.html)的Java变体/克隆版NDepend(惊喜,惊喜;),可能是基于它开发的。我对Java只有初步的经验,并且对JDepend没有任何经验,所以您需要自己评估。 - Willem van Rumpt
我是NDepend的负责人,我确认在2004年4月26日首次发布NDepend时,工具名称是基于JDepend选择的 :o) - Patrick from NDepend team

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接