![](/img/trans.png)
[英]NDepend how to export all types that I use from .NET frameworks in my assembly
[英]How can I use NDepend to find the members that cause two types to be intertwined?
我试图在我公司的一个 .NET 程序集中解开大量相互依赖的类型。
似乎第一步是采取几个类并查看每个类的哪些成员导致它们相互依赖。
我怎样才能用 NDepend 做到这一点? 如果我有TypeA和TypeB,我可以写什么CQLinq来要求TypeA中所有使用TypeB的方法,以及TypeB中所有使用TypeA的方法?
首先,您可以使用此查询来匹配所有相互依赖的类型(您可能需要增加 CQLinq 运行超时,因为它是一个 O(nbTypes^2) 查询)
from t1 in Application.Types
from t2 in Application.Types
where
t1 != t2 &&
string.Compare(t1.FullName, t2.FullName) == 1 &&
t1.IsUsing(t2) && t2.IsUsing(t1)
select new { t1, t2 }
然后对于每一对,您可以将两种类型导出到矩阵列和行,如屏幕截图所示。 然后右击黑色单元格(黑色coz类型是相互依赖的),点击打开这个依赖
等等,罪魁祸首现在很明显
btw 第一个查询可以这样细化,查询结果中匹配的方法组也可以在右键菜单中导出到矩阵
from t1 in Application.Types
from t2 in Application.Types
where
t1 != t2 &&
string.Compare(t1.FullName, t2.FullName) == 1 &&
t1.IsUsing(t2) && t2.IsUsing(t1)
select new { t1, t2,
methodsOf1Using2 = t1.Methods.UsingAny(t2.Members),
methodsOf2Using1 = t2.Methods.UsingAny(t1.Members)
}
处理依赖项的相关文档:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.