4

NDepend 似乎是一个很棒的代码分析工具,尤其是依赖图可视化,所以我们买了一份。

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

这就是我需要它的原因:

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

我们有以下形式的命名空间

Company.Product.Layer.Component

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

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

4

1 回答 1

3

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

仅将 Graph 重置为应用程序命名空间

……瞧!

应用程序命名空间程序集图

由于LINQ 查询上的代码规则 (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 }
于 2012-01-25T16:02:22.073 回答