Как можно указать NDepend игнорировать классы EF?

У меня небольшая проблема с тем, что NDepend не игнорирует сгенерированный код. Он поднимает проблемы, связанные с методами со слишком большим количеством параметров в файле designer.cs, созданном EF при создании модели данных сущности. Класс снабжен "автоматически созданной" аннотацией, но NDepend все еще подбирает его.

Кажется, я не могу найти, как заставить игнорировать * .designer.cs или даже игнорировать конкретный файл без подстановочных знаков. Ближе всего к этому я пришел этот пост за пару лет назад, где Патрик упоминает о планах сделать это, но не более того.

Я что-то упускаю? Есть ли простой способ это исключить?


person Troy Hunt    schedule 22.08.2011    source источник


Ответы (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:

person Patrick from NDepend team    schedule 22.08.2011
comment
JustMyCode игнорирует что-нибудь, украшенное [NDependIgnore]? Если нет, может? - person Steve Dunn; 02.07.2018
comment
Затем вам нужно создать NDepependIgnoreAttribute и обязательно обновить запросы notmycode, чтобы избежать сопоставления вещей, оформленных как &&! Method.HasAttribute (Namespace.NDepependIgnoreAttribute) ndepend.com/docs/cqlinq-syntax#NotMyCode - person Patrick from NDepend team; 03.07.2018