Как начать с FxCop на унаследованном коде? - PullRequest
9 голосов
/ 27 марта 2009

Есть ли у кого-нибудь опыт внедрения FxCop в унаследованном коде? Мы хотели бы, чтобы наша сборка не удалась, если кто-то вводит код, который нарушает правила. Но на данный момент это невозможно, поскольку в устаревшем коде более 9000 нарушений.

Единственный известный мне способ подавления ошибок - через атрибут SuppressMessage, но он работает только для методов и для GeneratedCodeAttribute. Последний может использоваться для классов и пространств имен (если я правильно помню), но не должен использоваться для не сгенерированного кода (см. здесь ).

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

Есть идеи?

Ответы [ 4 ]

6 голосов
/ 29 марта 2009

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

Группы безопасности и производительности - хорошее место для начала - они помогли мне найти проблемы, о которых я раньше не знал. Некоторые из правил носят субъективный характер и могут не в полной мере применяться к вашему проекту, если вообще применяются. Например, если интернационализация не является проблемой, оставьте эту группу отключенной. Если есть определенные правила, которые не относятся к вам, например правила именования, отключите их.

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

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

2 голосов
/ 27 марта 2009

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

Для этого создайте проект в графическом интерфейсе FxCop, запустите анализ с вашими правилами, а затем в представлении результатов выберите нарушение, которое вы хотите пока игнорировать. Щелкните правой кнопкой мыши и выберите «Исключить». Выбранные предупреждения будут перемещены на вкладку «исключено в проекте». Когда вы будете готовы вернуться и исправить их, выберите и нажмите «пометить как активные».

Эти исключения хранятся в файле .FxCop.

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

2 голосов
/ 27 марта 2009

Для начала задайте себе вопрос: готовы ли вы и можете ли изменить унаследованный код в соответствии с правилами FxCop? Или иначе: это лучший способ провести время?

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

По моему опыту, не существует подхода большого взрыва для реализации правил FxCop и т.п. Единственно возможный способ - брать маленькие порции за раз.

0 голосов
/ 24 июня 2009

Как насчет следующего подхода:

  1. Запустите FXCop со всеми правилами, относящимися к вашему проекту
  2. Сохранить результаты в качестве базового
  3. Разработка нового кода
  4. Запустить FxCop
  5. Удалить все результаты из базовой линии

это приведет к проверкам fxcop вашего нового кода ....

...