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

标签 c# architecture namespaces code-analysis ndepend

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

但是,我真正最需要的一件事似乎是不可能的:我需要整个解决方案的 namespace 依赖关系图。我唯一能得到的是一个装配图。

这就是我需要它的原因:

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

我们有

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

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

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

最佳答案

要获取 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 }

关于c# - NDepend 中解决方案范围的命名空间依赖关系图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004361/

相关文章:

c# - 为什么我不能在变量中捕获 FakeItEasy 期望值?

c# - Azure DevOps - 通过 Api 更新用户配置文件

mysql - 如何平衡网页抓取的负载

architecture - 用于 build /设计房屋的开源软件?

vb.net - 导入 : Should you, 不应该吗,语法和最佳实践

c# - 向下转换泛型参数时如何修复转换错误

c# - 使用 lambda 表达式更新 linq 中的多个列

ruby 模式问题

c# - .NET - 具有相同命名空间的多个库 - 引用

c# - 命名空间和类同名?