【问题标题】:Create dependency graph between classes for .net Project/Solution在 .net 项目/解决方案的类之间创建依赖关系图
【发布时间】:2017-01-18 20:38:40
【问题描述】:

是否有一种编程方式或工具可以遍历项目/程序集中的所有类并找出其他依赖类? Resharper 具有类似的功能,但我无法找到以某种易于分析的格式导出结果的方法。

我的最终目标是在类(每个类)之间创建依赖关系图,而不是按项目/命名空间/等聚合

我的最终目标是得到这样的列表<Class Name>: <Dependency1>, <Dependency N>

 - Class1: Class2, Class6, Class9   
 - Class2: Class1, Class4
 - Class3: 
 - Class4: Class2, Class5

等等

更新: 我正在使用 Visual Studio 2015 Premium。

【问题讨论】:

  • 您使用的是哪个版本的 Visual Studio?更昂贵的版本有这些工具。
  • 更高级别的 Visual Studio SKU(企业版/终极版,可能还有高级版)支持此功能:msdn.microsoft.com/en-us/library/dd465141.aspx
  • 谢谢大家,我用VS版本和版本更新了问题。

标签: c# static-analysis


【解决方案1】:

您还可以尝试与 VS2015(所有 SKU,包括高级版)以及 VS 2019、2017、2013、2012、2010 集成的工具 NDepend,除了较旧的 Express SKU。 p>

使用 NDepend,您可以在 Visual Studio C# linq queries that are compiled/executed live 中进行编辑。例如,下面的代码查询显示了所有类的依赖关系:

from t in Application.Types
select new { t, t.TypesUsed, t.TypesUsingMe }

代码查询结果可以导出到图,这样可以生成多种依赖图:Call GraphClass Inheritance GraphCoupling Graph...

我无法找到导出某些结果的方法 易于分析的格式。

除了 Visual Studio 中的实时代码查询之外,NDepend 代码查询还可以通过 API 获得,您可以利用它来创建 C# 程序并以任何格式导出任何数据。


新的 NDepend 版本 2020.1 现在让您只需单击即可为类或方法生成调用图:


免责声明:我为 NDepend 工作

【讨论】:

  • 谢谢帕特里克!我能够通过 NDepend 获得我想要的东西(通过使用 C# Api 编写应用程序)。 NDepend 很棒,我被它提供的功能所震撼!
  • 我们很高兴 NDepend 能帮助您实现您想要的 :)
  • 好工具,但你忘了说它要花钱
【解决方案2】:

您正在寻找的功能是代码映射。我不确定它们现在是否可以在 VS 2015 Premium 中使用,但它们不是在最初发布时。本文的 cmets 可能会对您有所帮助:New ways to quickly create a Code Map.

【讨论】:

  • 谢谢。默认情况下,它显示由项目/命名空间聚合的依赖项。有没有办法显示类级别的依赖关系?
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
相关资源
最近更新 更多