Можно ли исключить целые пространства имен из анализа NDepend?

У меня есть настройка, в которой Visual Studio 2010 запускает анализ охвата тестирования, и его вывод поглощается NDepend во время сборки интеграции.

Несколько сборок содержат сгенерированный код, который должен игнорироваться NDepend.
Есть ли способ сделать это? Предпочтительно полное пространство имен.

Ответ 1

Запрос кода и правило над LINQ (CQLinq) действительно предоставляет возможность игнорировать сгенерированный код.

Существует удобный предопределенный домен с именем JustMyCode типа ICodeBaseView.

Домен JustMyCode представляет собой средство CQLinq для устранения сгенерированных элементов кода из результатов запроса CQLinq. Например, следующий запрос будет соответствовать только большим методам, которые не генерируются инструментом (например, дизайнером пользовательского интерфейса):

from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m

Набор сгенерированных элементов кода определяется запросами CQLinq с префиксом ключевого слова CQLinq notmycode. Например, запрос ниже соответствует методам, определенным в исходных файлах, имя которых заканчивается ". Designer.cs" :

notmycode from m in Methods where
  m.SourceFileDeclAvailable && 
  m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs")
select m

Сценарий запросов CQLinq выполняет все запросы notmycode перед запросами, основанными на JustMyCode, поэтому домен JustMyCode определяется один раз для всех. Очевидно, что компилятор CQLinq испускает ошибку, если запрос notmycode зависит от домена JustMyCode.

Существует 4 запроса по умолчанию notmycode, которые легко адаптируются в соответствии с вашими потребностями. Заметьте, что для пространств имен нет запросов notmycode по умолчанию, но вы можете создать свой собственный (-ы):

Ответ 2

Обнаружено это в "Краткое резюме методов для рефакторинга"

// Here are some ways to avoid taking account of generated methods.
!( NameIs "InitializeComponent()" OR
   // NDepend.CQL.GeneratedAttribute is defined in 
   // the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll
   // You can define your own attribute to mark "Generated".
   HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 

Но это не относится к необходимости изменять каждый запрос CQL, чтобы убедиться, что все они игнорируют сгенерированный код.