首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NDepend查找导致两种类型交织在一起的成员?

如何使用NDepend查找导致两种类型交织在一起的成员?
EN

Stack Overflow用户
提问于 2017-10-26 21:37:22
回答 1查看 181关注 0票数 1

我正试图在我公司的一个.NET程序集中解开许多高度相互依赖的类型。

似乎第一步是拿几个类,看看每个类中的哪些成员导致它们相互依赖。

我怎样才能用NDepend做到这一点?如果我有TypeA和TypeB,我可以编写什么CQLinq来请求TypeA中使用TypeB的所有方法以及TypeB中使用TypeA的所有方法?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 16:12:19

首先,您可以使用此查询来匹配所有相互依赖的类型(您可能需要增加CQLinq运行超时,因为它是O(nbTypes^2)查询)

代码语言:javascript
复制
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 }

然后,对于每一对,您可以将这两种类型导出到矩阵列和行,如屏幕截图所示。然后右键单击黑色单元格(黑色是因为类型是相互依赖的),然后单击Open this dependency

然后单击此菜单

好了,罪魁祸首现在很明显了

顺便说一句,第一个查询可以这样细化,查询结果中匹配的方法组也可以导出到右键菜单中的矩阵中

代码语言:javascript
复制
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)
} 

处理依赖关系的相关文档:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46955878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档