NDepend中的解决方案级命名空间依赖关系图

4

NDepend似乎是一款非常适合代码分析的工具,特别是依赖图可视化方面,因此我们购买了一份。

然而,我最需要的一件事似乎不可能实现:我需要整个解决方案的命名空间依赖关系图。我只能得到一个程序集图。

这就是为什么我需要它的原因:

我们有一个架构规则,跨层边界的依赖必须始终指向接口组件。接口组件在程序集名称和命名空间中都带有后缀“Interface”。

我们的命名空间形式如下:

Company.Product.Layer.Component

由于层信息从装配名称中不可见,而是从命名空间中可见,因此命名空间依赖关系图将是这种分析所需的唯一有用的图表。

那么我的问题是:如何验证上述架构规则?你知道如何获取依赖关系图吗?你知道另一种验证规则的可能性吗?

1个回答

3
要在VS解决方案中获取应用程序命名空间的图表,只需使用下面显示的菜单...

Reset Graph to application namespaces only

...然后就完成了!

Graph of application namespaces assemblies

感谢 Code Rule over LINQ Query (CQLinq) 的能力,下面的 CQLinq 规则可以作为一个良好的起点,以完善它并得到您所需的确切规则:
warnif count > 0 

// Namespaces with suffix Interface
let interfacesNamespaces = 
   Application.Namespaces.WithNameLike("Interface$").ToHashSet()

// Match namespaces that are using something else than interfacesNamespaces 
from n in Application.Namespaces
let nonInterfacesNamespacesUsed = n.NamespacesUsed.Except(interfacesNamespaces)
where nonInterfacesNamespacesUsed.Count() > 0
select new { n, nonInterfacesNamespacesUsed }

非常感谢,我不知道“导出到图形”功能。这就解决了问题!您提到的即将推出的功能肯定会是一个受欢迎的改进。 - theDmi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接