我正在为我的客户评估NDepend工具,并且想知道是否有人可以提供以下查询的帮助:
// <Name>Potentially dead Assemblies</Name>
warnif count > 0
from a in JustMyCode.Assemblies where
a.NbTypesUsingMe == 0
select a
虽然这提供了一个很大的列表,但我还想检查唯一的引用是否来自一个测试项目,例如MyNamespace仅由MyNamespace.Tests引用。
怎么可以这样做?我还没有找到有关创建不使用常量的IsUsedBy的文档。
此致
马丁
答案 0 :(得分:2)
对于匹配死组件,您不需要计算类型,只需使用我计算装配:
warnif count > 0
from a in JustMyCode.Assemblies where
a.AssembliesUsingMe.Count() == 0
select a
如果要使用程序集匹配类型的条件,可以编写如下内容:
warnif count > 0
from a in JustMyCode.Assemblies
let typesUser = Application.Types.Using(a)
where typesUser.Count() == 0 ||
typesUser.ParentNamespaces()
.WithNameWildcardMatchNotIn("MyNamespace.Tests*").Count() == 0
select a
请注意,在上一个查询中,我们甚至没有在typesUser(使用typesUser.Where(t => ...)
)上进行迭代,而是使用NDepend.API设置方法,如WithNameWildcardMatchNotIn()。