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

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

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

Пример кода:

введите здесь описание изображения

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

введите здесь описание изображения


person user2561736    schedule 22.08.2013    source источник


Ответы (1)


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

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

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

&& !m.IsClassContructor

person Patrick from NDepend team    schedule 23.08.2013