1

任何可以执行其中任何一项的代码分析或“逆向工程”工具?:

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

3 回答 3

1

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

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

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

还有一些专门研究一种语言的工具,例如为 C++ 理解的工具。

于 2009-01-17T19:59:44.087 回答
1

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

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

NDepend 方法调用图

在此处查找有关如何使用 NDepend 生成调用图的更多说明。

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

同样的方式 NDepend 可以生成类继承图(这里​​解释生成类继承图)。

计算哪些类实例化哪些类

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

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

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

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

CQLinq 规则可以在 Visual Studio 中实时验证,或者可以在构建过程中验证并在 HTML/javascript 报告中报告

于 2010-10-19T13:17:08.487 回答
0

了解2.0

...显示了用不同语言编写的代码部分之间的依赖关系。CLA 使跟踪呼叫变得容易。 ~组合语言分析

特别是这个函数调用树图像。

于 2009-01-17T20:18:43.677 回答