2008-08-25 15 views
5

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

ответ

13

Сделать либеральное использование атрибута [SuppressMessage] для начала. По крайней мере, в начале. После того, как вы получите счет в 0 через атрибут, вы затем установите правило, согласно которому новые проверки не могут вводить нарушения FxCop.

Visual Studio 2008 обладает отличной функцией анализа кода, которая позволяет гарантировать, что анализ кода выполняется на каждой сборке, и вы можете рассматривать предупреждения как ошибки. Это может немного замедлить работу, поэтому я рекомендую настроить сервер непрерывной интеграции (например, CruiseControl.NET) и выполнить анализ кода на каждом этапе проверки.

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

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

3

Внесите свой код в проходящий стиль!

Серьезно, у старой базы кода будет сотни ошибок, но именно поэтому у нас есть программисты-новички/стажеры. Исправление нарушений FxCop - отличный способ получить обзор базы кода, а также узнать, как писать соответствующий код .NET.

Так что просто кусайте пулю, выпейте много кофеина и просто пройдите через пару дней!

0

NDepend looks like он мог бы сделать то, что вам нужно, но я не уверен, что он может быть интегрирован в автоматическую сборку CruiseControl.Net и выйдет из строя, если код не соответствует требованиям (что что бы я хотел произойти).

Любые другие идеи?

-1

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

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

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

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

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

Наконец, обратите внимание, что с правилами кода NDepend могут быть проверены live in Visual Studio и при построении времени процесса, в generated HTML+javascript report.

 Смежные вопросы

  • Нет связанных вопросов^_^