使用NDepend查找“死”程序集

时间:2012-06-06 14:32:45

标签: ndepend cqlinq

我正在为我的客户评估NDepend工具,并且想知道是否有人可以提供以下查询的帮助:

// <Name>Potentially dead Assemblies</Name>
warnif count > 0 
    from a in JustMyCode.Assemblies where
       a.NbTypesUsingMe == 0
       select a

虽然这提供了一个很大的列表,但我还想检查唯一的引用是否来自一个测试项目,例如MyNamespace仅由MyNamespace.Tests引用。

怎么可以这样做?我还没有找到有关创建不使用常量的IsUsedBy的文档。

此致

马丁

1 个答案:

答案 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()