在.net Project / Solution的类之间创建依赖关系图

时间:2017-01-18 20:38:40

标签: c# static-analysis

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

我的最终目标是在类(每个类)之间创建依赖图,而不是由project / namespace / etc聚合

我的最终目标是获取<Class Name>: <Dependency1>, <Dependency N>

之类的列表
 - Class1: Class2, Class6, Class9   
 - Class2: Class1, Class4
 - Class3: 
 - Class4: Class2, Class5

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

2 个答案:

答案 0 :(得分:2)

您还可以尝试与VS2015(包括所有SKU,包括Premium)以及VS 2017,2013,2012,2010所有SKU集成的工具NDepend,除了较旧的 Express SKU之外的所有SKU。

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

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

NDepend Code Query for Dependency

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

NDepend Generating Graoh fromCode Query

  

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

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

由于图形通常无法显示涉及数百个节点的复杂结构,因此NDepend还建议Dependency Structure Matrix

NDepend Dependency Structure Matrix

以下是复杂图表的含义。

Complex Graph

免责声明:我为NDepend工作

答案 1 :(得分:1)

您正在寻找的功能是代码映射。我不确定他们现在是否可以在VS 2015 Premium中使用,但他们在首次发布时并未获得。对本文的评论可能会帮助您:New ways to quickly create a Code Map