【问题标题】:Tool to visualize Function Hierarchy trees?可视化函数层次结构树的工具?
【发布时间】:2009-01-17 19:34:07
【问题描述】:

任何代码分析或“逆向工程”工具都可以做到这些吗?:

  • 计算哪些类是哪些类的子类
  • 计算哪些类实例化哪些类 -- (如 VS Class Designer
  • 计算哪些函数调用哪些函数 -- (很像 调用堆栈

【问题讨论】:

    标签: oop function code-analysis


    【解决方案1】:

    计算哪些函数调用哪些函数

    NDepend 可以生成一些有用的方法或类调用图,例如下面的屏幕截图(图片全尺寸here免责声明:我是该工具的开发者之一 em>

    找到更多关于how to generate call graph with NDepend here的解释。

    计算哪些类是哪些类的子类

    与 NDepend 生成类继承图的方式相同 (explanation to generate class inheritance graph here)。

    计算哪些类实例化了哪些类

    NDepend 让我们编写 代码查询 over LINQ 查询(我们称之为 CQLinq)。使用 CQLinq,您可以请求创建特定类的方法或类,例如:

    from m in Methods 
    where m.CreateA("NUnit.Core.NUnitConfiguration")
    select m
    

    这样的 CQLinq 查询结果可以导出到图形视图,以获得依赖关系的可视化表示。

    附带说明一下,使用 CQLinq 还可以编写代码规则。超过200 code rules是默认提出的,其中包括关于设计架构代码质量代码演化的规则>、命名约定死代码.NET Fx 用法...

    CQLinq 规则可以是verified live in Visual Studio,或者可以在构建过程中验证的reported in an HTML/javascript report

    【讨论】:

      【解决方案2】:

      Doxygen + GraphViz (对于图片,doxygen 需要 GraphViz)

      它具有最大的语言支持(因为您没有指定语言)并且查看器是浏览器,因此一旦生成,任何人都应该能够查看它。

      配置 doxygen 以生成甚至未记录的成员,并包含源代码。这样,源代码将包含指向函数声明的链接,以便于导航。

      还有专门针对某种语言的工具,例如Understand for C++

      【讨论】:

        【解决方案3】:

        了解 2.0

        ...显示 依赖关系 在编写的部分代码之间 不同的语言。 CLA 成功 易于接听电话。 ~Combined Language Analysis

        特别是这个Function Call tree 图像。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-24
          相关资源
          最近更新 更多