Поиск мертвых сборок с помощью NDepend

Я нахожусь в процессе оценки инструмента NDepend для моего клиента, и мне было интересно, может ли кто-нибудь помочь со следующим запросом:

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

Хотя это предоставляет большой список, я также хотел бы проверить, является ли единственная ссылка из тестового проекта, такого как MyNamespace, на который ссылается только MyNamespace.Tests.

Как это можно сделать? Я не нашел документации по созданию IsUsedBy, который не принимает константу.

Искренне,

Мартин


person Martin Noreke    schedule 06.06.2012    source источник


Ответы (1)


Для сопоставления мертвых сборок вам не нужно считать типы, а просто считать сборки, используя меня:

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

Обратите внимание, что в этом предыдущем запросе мы даже не итерируем typeUser (с typesUser.Where(t => ...) ), а вместо этого используем методы набора NDepend.API, такие как WithNameWildcardMatchNotIn().

person Patrick from NDepend team    schedule 06.06.2012
comment
С небольшим изменением подстановочного знака на Test для сбора всех тестовых проектов (без стандартного соглашения об именах) это сработало как нужно. Спасибо много. - person Martin Noreke; 06.06.2012