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

时间:2012-01-25 14:31:55

标签: c# architecture namespaces code-analysis ndepend

NDepend似乎是一个很好的代码分析工具,特别是对于依赖图形可视化,所以我们买了一份。

然而,我真正需要的一件事似乎是不可能的:我需要整个解决方案的命名空间依赖图。我唯一能得到的是汇编图。

这就是我需要它的原因:

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

我们有

形式的命名空间
Company.Product.Layer.Component

由于图层信息在程序集名称中不可见,而是从命名空间中可见,因此命名空间依赖关系图将是此类分析的唯一有用图形。

所以我的问题是:我如何验证上述架构规则?你知道如何实际获得依赖图吗?你知道另一种验证规则的可能性吗?

1 个答案:

答案 0 :(得分:2)

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

Reset Graph to application namespaces only

...... et voila!

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 }