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

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

Список проблем был настолько ошеломляющим, что потребуется несколько дней, чтобы найти и исправить некоторые, если не все.

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

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

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

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

Ответ 1

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

А также вы должны взглянуть на this questio n ответы...

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

По умолчанию предлагается 200 правил кода. Настройка существующих правил или создание собственных правил прямо из-за хорошо известного синтаксиса С# 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.