【问题标题】:C# Call Graph Generation ToolC# 调用图生成工具
【发布时间】:2010-10-22 01:50:01
【问题描述】:

我刚得到一堆(大部分未记录的)C# 代码,我想在深入研究并开始重构之前可视化它的结构。我过去(在其他语言中)使用生成调用图的工具来完成此操作。

您能推荐一个用于促进 C# 中结构发现的好工具吗?

更新

除了这里提到的工具,我(通过管道)看到人们说.NET ReflectorCLR Profiler 有这个功能。有这方面的经验吗?

【问题讨论】:

    标签: c# .net code-analysis call-graph


    【解决方案1】:

    我使用doxygen 取得了一些成功。这有点令人困惑,但免费且有效。

    【讨论】:

    • Doxygen 的最新 Windows 二进制文件包括一个称为 Doxywizard 的 GUI 工具。您将其指向您单独安装的 Graphviz 的安装路径,然后观看它构建您的图表。
    • 我使用的是 Doxywizard。我发现令人困惑的部分是它不会使用 C# 设置(尽管它适用于 Java 设置)。自从我尝试使用它以来已经有几个月了。
    【解决方案2】:

    关于 NDepend,它可以生成一些可用的调用图,例如 (image full size here)

    查找更多关于 NDepend 调用图 here 的解释。

    【讨论】:

      【解决方案3】:

      截至今天(2017 年 6 月),同类产品中最好的工具是 Resharper 的检查功能。它允许您查找所有来电、去电、值来源/目的地等。

      与上述其他工具相比,ReSharper 最好的部分:它的错误更少。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          SequenceViz 和 DependencyStructureMatrix for Reflector 可能会对您有所帮助:http://www.codeplex.com/reflectoraddins

          【讨论】:

          • SequenceViz 看起来很有趣,但我无法让它与最新版本的 .NET Reflector 一起使用
          • 终于让他们两个都工作了。 SequenceViz 看起来并没有以在方法级别有用的方式呈现当前信息。 DependencyStructureMatrix 很有用,但似乎只在程序集和类级别提供信息。我正在寻找方法级别的东西。感谢您推荐这些,它们可能对其他用途有用。
          【解决方案6】:

          Visual Studio 2010.

          另外,逐个方法 - 反射器(分析器(Ctrl+R);“取决于”和“使用者”)

          【讨论】:

          • 或外反射器..右键单击..找到所有参考,转到定义
          • 我是否必须将我的项目转换为新的 Visual Studio 格式?如果是这样,这个过程有多轻松?
          • @Waylon Flinn:谁知道呢……该产品还没有发布,甚至还没有发布测试版。但是:从 VS2005 到 VS2008,项目文件会自动升级并且(很大程度上)向后兼容;解决方案文件已自动升级,但向后兼容。
          • .NET Reflector 中的那些东西当然很有用。我只希望有一个图形版本(甚至是邻接矩阵)。加载项“DependencyStructureMatrix”似乎很接近,但并没有完全达到。
          • 不是我。但是 - 我有 VS2010 Premium,但我的分析菜单中没有“可视化调用依赖”选项。也许这只是在 VS2010 Ultimate 中?
          【解决方案7】:

          NDepend 在这方面做得很好。此外,Visual Studio 2008 Team System 有许多功能可以让您跟踪圈复杂度,但它比 NDepend 更基本。 (运行代码分析)

          【讨论】:

          • NDepend 功能集和屏幕截图(来自网站)看起来很有趣。我去看看。
          • NDepend 很棒,但它不是免费的。
          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-08-14
            • 2011-03-13
            • 1970-01-01
            • 2010-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多