Как управлять ошеломляющими отчетами FxCop

Я недавно начала им пользоваться. Однако после запуска одного из крупнейших проектов моей компании. Получается горы проблем.

Список проблем был настолько огромным, что на поиск и устранение некоторых, если не всех, уходили дни.

Теперь я знаю, что не очень практично исправлять все, что FxCop говорит вам исправить. Но поскольку я новичок в этом маленьком инструменте...

Какие полезные советы и рекомендации по эффективному использованию FxCop?

В новом проекте и в существующем проекте?

Если также при условии, что программисты в моей компании обычно пишут хороший код?


person chakrit    schedule 09.01.2009    source источник


Ответы (7)


Сначала вы можете начать с небольшого набора правил в начале. А затем увеличьте количество применяемых правил.

А также вы должны взглянуть на ответы на этот вопрос...

person spinodal    schedule 09.01.2009

Создайте базовый уровень, запустив fxCop один раз и исключив все, что он находит.

Сохраните это как файл .fxcop и используйте его для будущих проверок.

Затем, когда вы будете вносить изменения в свой код, вы будете создавать новые управляемые нарушения. Например, FxCop изменит флаг, если вы измените сигнатуру метода.

Если у вас есть время, вы можете устранить категорию нарушений по одному после этого, не исключая их.

person Michael Haren    schedule 09.01.2009

Обязательно отфильтруйте те, которые не важны для вашей организации. Например, весь блок «Интернационализация» был в значительной степени неважным для одного из наших проектов, поэтому мы просто исключили его, и одного этого было достаточно, чтобы сделать список управляемым. (В этом блоке есть несколько замечательных предложений, которые мы хотели реализовать, но в то время они не были важны для приложения.)

Вы также можете создать несколько проектов FxCop, сгруппировав исключения, пока не сократите число до чего-то управляемого («исправьте это сейчас», «исправьте это в ближайшее время», «исправьте это в любое время»).

Я почти уверен, что провел целую неделю, исключая/включая нарушения, пока у нас не появился список, соответствующий нашей политике. Потом еще 2-3 просто фиксации нарушений. :-(

person Austin Salonen    schedule 09.01.2009
comment
Это почти равно месяцу... :-( - person chakrit; 10.01.2009
comment
Печально, но факт... Чем позже вы запустите его в проекте, тем хуже вам будет - это вы узнали на собственном опыте. - person Austin Salonen; 12.01.2009

Особенность FxCop в том, что это отличный инструмент для конкретного варианта использования, для которого он был разработан. Он был разработан, чтобы помочь разработчикам библиотеки классов. Поэтому, если вы являетесь Developer Express или Infragistics и создаете библиотеку кода для использования разработчиками по всему миру, вам нужно хорошее название, хорошая глобализация и множество других вещей.

Таким образом, если вы назовете все свои формы такими вещами, как frmMain, FxCop будет жаловаться, потому что это выглядит уродливо в библиотеке классов. Но если вы просто работаете над собственным WinForms-приложением, вам все равно. Точно так же вы сойдете с ума от всех вещей, связанных с IFormatProvider, перегрузками MessageBox, которые определяют направление текста, и так далее. Но если вы не создаете код для глобальной аудитории, вы можете их игнорировать.

Важно понимать целевую аудиторию FxCop. Вы можете игнорировать определенные рекомендации, основанные на том, чем вы отличаетесь от этой аудитории.

person Ryan Lundy    schedule 28.01.2009

Отсортируйте выходные данные по типу правила... затем просмотрите список сортировки, чтобы увидеть, какое подмножество нарушенных типов правил важно и заслуживает исправления IYO.

person ChrisW    schedule 09.01.2009

Не все, о чем сообщает fxCop, является «необходимо исправить». Например, вставка пользовательского ввода в команду базы данных с использованием конкатенации строк намного хуже, чем проблемы со стилем, такие как венгерский или перехват исключения, а не более конкретное исключение.

person ggf31416    schedule 09.01.2009

Альтернативой FxCop может быть использование инструмента NDepend. Этот инструмент позволяет писать правила кода для запросов C# LINQ (мы называем это CQLinq< /а>). Отказ от ответственности: я являюсь одним из разработчиков инструмента

По умолчанию предлагается более 200 правил кода. Настроить существующие правила или создать собственные правила очень просто благодаря хорошо известному синтаксису C# LINQ.

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

Чтобы снизить количество ложных срабатываний, с помощью CQLinq вы также можете сосредоточить результаты правил только на добавленном или реорганизованном коде, поскольку определял базовый уровень в прошлом. См. следующее правило, которое обнаруживает слишком сложные методы, добавленные или реорганизованные по сравнению с базовой линией:

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

Наконец, обратите внимание, что правила кода NDepend можно проверять вживую в Visual Studio и во время процесса сборки, в отчете, созданном в формате HTML+javascript.

person Patrick from NDepend team    schedule 19.10.2010