Почему NDepend считает статические поля как LOC для метода
У меня есть тип, чтобы определить и назначить некоторые статические поля только для чтения. Я получил нарушение за слишком большие методы (LOC)
Я хотел бы знать, если у меня есть атрибут для метода и использовал его в правиле (см. Ниже). Где в моем исходном коде мне нужно использовать этот атрибут, чтобы отбросить метод "это и какой"?
Пример кода:
Примерное правило:
1 ответ
Почему NDepend считает статические поля как LOC для метода
Это происходит потому, что когда вы выполняете встроенную инициализацию статического поля, он добавляет строку кода в конструктор класса. Фактически, как только у вас есть одна статическая инициализация поля в классе, компилятор C# создает статический конструктор для вашего класса. Таким образом, если у вас есть N статических полей для встроенной инициализации, у вас есть метод (конструктор класса), который имеет N строк кода.
Большой метод, о котором здесь сообщает NDepend, называется BassAttributeNames..cctor()
, Конечно, самый простой способ адаптировать ваше правило кода, чтобы избежать такого соответствия, это добавить предложение:
&& !m.IsClassContructor