Почему NDepend считает статические поля как LOC для метода

У меня есть тип, чтобы определить и назначить некоторые статические поля только для чтения. Я получил нарушение за слишком большие методы (LOC)

Я хотел бы знать, если у меня есть атрибут для метода и использовал его в правиле (см. Ниже). Где в моем исходном коде мне нужно использовать этот атрибут, чтобы отбросить метод "это и какой"?

Пример кода:

Примерное правило:

1 ответ

Почему NDepend считает статические поля как LOC для метода

Это происходит потому, что когда вы выполняете встроенную инициализацию статического поля, он добавляет строку кода в конструктор класса. Фактически, как только у вас есть одна статическая инициализация поля в классе, компилятор C# создает статический конструктор для вашего класса. Таким образом, если у вас есть N статических полей для встроенной инициализации, у вас есть метод (конструктор класса), который имеет N строк кода.

Большой метод, о котором здесь сообщает NDepend, называется BassAttributeNames..cctor(), Конечно, самый простой способ адаптировать ваше правило кода, чтобы избежать такого соответствия, это добавить предложение:

&& !m.IsClassContructor

Другие вопросы по тегам