Roslyn Analyzers. Как писать код быстро и безошибочно

Автор оригинала: Mika Dumont
  • Перевод
Roslyn, платформа компилятора .NET, помогает обнаруживать ошибки еще до запуска кода. Одним из примеров является анализатор проверки орфографии Roslyn, который встроен в Visual Studio. Скажем, вы создаете статический метод и случайно написали слово static как statc. Вы сможете увидеть эту орфографическую ошибку еще до запуска своего кода, потому что Roslyn выдаст предупреждение в вашем коде при вводе текста еще до завершения набора строки. Другими словами, вам не нужно производить сборку кода, чтобы узнать, что вы допустили ошибку.

image

Анализаторы Roslyn также могут отображать автоматическое исправление кода с помощью иконки лампочки Visual Studio, которая позволяет немедленно исправить код.

image

Но что, если бы вы могли отловить еще больше ошибок?


Позвольте представить вам пакеты анализатора Roslyn. Эти коллекции анализаторов предоставляют более подробный анализ, но не поставляются с дефолтными инструментами Visual Studio. Чтобы узнать больше о наших любимых анализаторах Roslyn, посетите репозиторий Roslyn analyzers на GitHub. Этот репозиторий включает в себя правила FxCop, которые по-прежнему применимы к современной разработке программного обеспечения, но теперь таргетированы для нашей современной платформы анализа кода, базирующейся на Roslyn. Давайте продолжим и установим этот пакет, чтобы увеличить продуктивность и скорость написания отличного кода!

Установка анализаторов FxCop:

  1. Предполагаю, что вы используете Visual Studio 2017 версии 15.8 или новее. Если это так, то выберите самую последнюю версию Microsoft.CodeAnalysis.FxCopAnalyzers.
  2. Установите пакет в Visual Studio, воспользовавшись Package Manager UI.

image

После установки пакета вы можете просто настроить диагностику анализатора в Solution Explorer. Узел анализатора появится под узлом References или Dependencies в Solution Explorer. Если сначала развернуть анализаторы, а затем одну из сборок анализатора, можно будет просмотреть все доступные диагностики в сборке.

image

Вы можете просмотреть свойства диагностики, включая такие пункты, как Description и Default severity, в окне Properties. Чтобы просмотреть свойства, кликните правой кнопкой мыши правило и выберите Properties или же выберите правило, а затем нажмите Alt+Enter.

image

Иконки рядом с каждым типом диагностики в Solution Explorer соответствуют иконкам, которые отображаются в наборе правил при его открытии в редакторе:

  • “i” в круге обозначает параметр Info
  • “!” в треугольнике обозначает параметр Warning
  • “x” в круге обозначает параметр Error
  • “i” в круге обозначает параметр Hidden
  • “↓” в круге указывает на подавленную диагностику

image

Затем вы можете задать параметры серьезности в Solution Explorer. Первым делом, для этого необходимо развернуть Dependencies > Analyzers в Solution Explorer, после чего развернуть сборку, содержащую правило, для которого вы хотите задать параметры серьезности. После этого следует кликнуть правой кнопкой мыши на правило, выбрать Set Rule Set Severity и во всплывшем меню выбрать один из параметров серьезности.

image

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

image

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

FAQ:


В: Я столкнулся со следующим предупреждением при работе в Visual Studio: “Run Code Analysis has been deprecated in favor of FxCop analyzers, which run during build. Refer to aka.ms/fxcopanalyzers to migrate to FxCop analyzers”. Что оно означает?
О: FxCop — это инструмент Code Analysis, который почти на десятилетие предшествовал Roslyn. Точно так же, как мы перенесли наш компилятор (например, представив Roslyn), мы также перенесли нашу технологию анализа кода на платформу Roslyn. Так как он работает на .NET Compiler Platform, он может выдавать предупреждения в вашем коде при вводе. Другими словами, нет необходимости производить сборку кода, чтобы узнать о допущенной ошибке.

В: В чем разница между унаследованным FxCop и анализаторами FxCop?
О: Анализаторы FxCop анализируют исходный код в режиме реального времени и во время компиляции, тогда как унаследованный FxCop представляет собой статический анализ кода и анализирует двоичные файлы после завершения сборки. Дополнительные сведения см. в Roslyn analyzers vs. static code analysis и FxCop analyzers FAQ.

В: Я могу написать собственные анализаторы?
О: Конечно! Документация по написанию анализаторов находится здесь.

В: Должен ли я использовать анализаторы Roslyn или .editorconfig для стиля кода?
О: Анализаторы Roslyn и файлы .editorconfig работают рука об руку. Когда вы определяете стили кода в файле .editorconfig или на странице параметров текстового редактора, вы фактически настраиваете анализаторы Roslyn, встроенные в Visual Studio.

В: Работают ли анализаторы в сборках непрерывной интеграции (CI)?
О: Да, анализаторы, установленные как пакеты NuGet, могут быть применены в сборках CI.

В: Где я могу запросить больше анализаторов или сообщить об ошибках?
О: Вы можете запросить больше анализаторов и сообщить об ошибках в репозитории Roslyn на GitHub.
Microsoft
120,48
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией

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

    0
    Есть ли смысл ставить отдельно FxCop, если уже установлен Roslynator?
      +3
      Ставьте PVS-Studio и не парьтесь. Он лучше. :)
      +1
      Roslyn, платформа компилятора .NET, помогает обнаруживать ошибки еще до запуска кода.

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


      Могу предположить, что именно такой "компилятор" используется при создании Windows и MS Office, но хотелось-бы больше подробностей об этом know how от Microsoft.

        0

        Если этот анализатор такой крутой, то почему (судя по качеству продуктов) Microsoft им не пользуется? :)


        (Про баги в Калькуляторе напоминать, или это больная тема?)

          +4
          Чуть-чуть лёгкого троллинга. Roslyn Analyzers это конечно хорошо. Но если читатель серьезно хочет подойти к повышению качества и надёжности кода, то предлагаю ему обратить внимание на PVS-Studio.

          Мы как-то давно ничего не проверяли из открытых кодов Microsoft. На днях мы решили исправить это упущение. Во-первых, мы опубликовали статью "WinForms: ошибки, Холмс". Во-вторых, скоро выйдет фундаментальная статья о проверке .NET Core (более 50 страниц в MS Word).

          И везде масса великолепных ошибок (особенно много их будет в статье про .NET Core). Так что одно из двух. Или Roslyn Analyzers не очень находят ошибки. Или сами разработчики в Microsoft не сильно их используют, что также говорит о… :).

          Приглашаю всех C# программистов дружно приходить к нам на сайт и пробовать PVS-Studio. Есть бесплатные варианты лицензирования.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое