C#调用图生成工具

32

我刚收到一大堆(大部分没有文档说明)的C#代码,我想在开始重构之前先将其结构可视化。在其他语言中,我曾经用生成调用图的工具来完成这个过程。

你能推荐一个好的工具来发现C#代码结构吗?

更新

除了这里提到的工具,我还看到(通过互联网)有人说.NET ReflectorCLR Profiler也有这个功能。对这些有什么经验吗?

8个回答

22

NDepend 在此方面表现得非常出色。此外,Visual Studio 2008 Team System有很多功能可让您跟踪圈复杂度,但比NDepend基本得多。(运行代码分析)


NDepend的功能集和屏幕截图(来自网站)看起来很有趣。我打算去试试。 - Waylon Flinn
2
NDepend很棒,但它不是免费的。 - Daniel Filipe

10
关于NDepend,它可以生成一些可用的调用图,例如: NDepend方法调用图 通过按父类、命名空间或项目对其方法进行分组,可以使调用图更加清晰:

NDepend Method Call Graph grouped by parent class

这里查找有关NDepend调用图的更多解释。


8

虽然有点晚了,但是http://sequenceviz.codeplex.com/是一个非常棒的工具,可以展示调用者图/序列图。这些图表是通过反向工程 .NET程序集生成的。


6
截至今天(2017年6月),最好的工具是Resharper的Inspect功能。它可以帮助您查找所有传入调用、传出调用、值的来源/目的地等。
与上面提到的其他工具相比,ReSharper最好的一点是它不太容易出现错误。

6

我曾经使用过doxygen,取得了一些成功。它有点令人困惑,但是免费且可用。


1
Doxygen的最新Windows二进制文件包括一个名为Doxywizard的GUI工具。您可以将其指向单独安装的Graphviz的安装路径,然后观察它为您构建图形。 - Robin Rodricks
我曾经使用过Doxywizard。让我感到困惑的是,它无法使用C#设置(尽管Java设置可以正常工作)。自从我尝试使用它以来已经过去了几个月。 - C. Ross

5

Visual Studio 2010

此外,可以逐个方法地使用Reflector(分析器(Ctrl+R);“依赖项”和“被使用”)


@Waylon Flinn:谁知道呢……该产品尚未发布,甚至没有进入测试版。然而:使用VS2005到VS2008,项目文件会自动升级并且(大体上)向后兼容;解决方案文件也会自动升级,但不向后兼容。 - Marc Gravell
.NET Reflector里的那些东西确实很有用。我只是希望有一个图形化版本(甚至是邻接矩阵)。插件“DependencyStructureMatrix”似乎接近了,但还没有完全到位。 - Waylon Flinn
谢谢那位给我点踩的人。能否解释一下你认为哪里有错误呢?事实是:VS2010可以生成调用图... - Marc Gravell
1
不是我。然而 - 我有 VS2010 Premium,但在我的分析菜单中没有“Visualize Call Dependency”选项。也许这只在VS2010 Ultimate中? - Mike Blandford
这里也一样——没有任何关于调用图的内容。在“分析”选项下只有几个选项,如代码分析、分析器和“性能<某些东西>”。还有一个晦涩的“计算代码指标……”,但由于它适用于项目和解决方案,似乎只是一个静态分析器。 - Hi-Angel
显示剩余2条评论

4

SequenceViz看起来很有趣,但我无法将其与最新版本的.NET Reflector配合使用。 - Waylon Flinn
终于让它们都能正常工作了。SequenceViz看起来似乎没有以对方法级别有用的方式呈现信息。DependencyStructureMatrix很有用,但似乎只提供程序集和类级别的信息。我正在寻找方法级别的内容。感谢您推荐这些工具,它们可能对其他事情有用。 - Waylon Flinn

2
我不确定它是否仅针对源代码,但 ANTS Profiler将为运行中的应用程序生成调用图(无论如何可能更有用)。

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