Есть ли какой-либо инструмент, который сигнализирует о плохих показателях кода при написании кода в Visual Studio?

#visual-studio #add-in #code-metrics

#visual-studio #надстройка #код-показатели

Вопрос:

Существуют ли какие-либо инструменты, доступные для Visual Studio, которые могут информировать программиста о состоянии показателей кода «на лету», например, во время написания кода (например, в виде светофора)?

Комментарии:

1. Что это за показатели? Покрытие модульным тестированием? Сложность?

2. @vcjones: любой вид; цикломатическая сложность, зависимости, количество строк и т.д.

3. @Santa: плохой код = код, который получает низкую оценку показателей кода, смотрите Примеры: msdn.microsoft.com/en-us/library/bb385914.aspx

Ответ №1:

Попробуйте инструмент NDepend. Он интегрирован в версии 2012, 2010, 2008 и поставляется с 82 метриками кода, перечисленными здесь: http://www.ndepend.com/Metrics.aspx

Инструмент поставляется с набором из примерно 200 предопределенных (и настраиваемых) правил кода, определенных в запросах LINQ, некоторые из них основаны на этих показателях кода, например:

 // <Name>Methods too complex</Name>
warnif count > 0 from m in JustMyCode.Methods where 
  m.CyclomaticComplexity > 20 ||
  m.ILCyclomaticComplexity > 40 ||
  m.ILNestingDepth > 5
  orderby m.CyclomaticComplexity descending,
          m.ILCyclomaticComplexity descending,
          m.ILNestingDepth descending
select new { m, m.CyclomaticComplexity, 
                m.ILCyclomaticComplexity,
                m.ILNestingDepth  }
  

Инструмент можно настроить таким образом, чтобы правила проверялись каждый раз, когда разработчик повторно компилирует проект или решение. И действительно, красный / желтый / зеленый светофор используется для указания того, нарушены ли некоторые правила (нарушено правило => желтый, нарушены критические правила => красный):

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

Комментарии:

1. Кажется, это в значительной степени то, что я ищу. Спасибо!

Ответ №2:

Взгляните на JetBrains’ (http://www.jetbrains.com ) Resharper и его плагины.

Ответ №3:

В зависимости от вашей версии VS, вы можете попробовать FxCop