Roslyn, платформа компилятора .NET, помогает обнаруживать ошибки еще до запуска кода. Одним из примеров является анализатор проверки орфографии Roslyn, который встроен в Visual Studio. Скажем, вы создаете статический метод и случайно написали слово static как statc. Вы сможете увидеть эту орфографическую ошибку еще до запуска своего кода, потому что Roslyn выдаст предупреждение в вашем коде при вводе текста еще до завершения набора строки. Другими словами, вам не нужно производить сборку кода, чтобы узнать, что вы допустили ошибку.
![image](https://habrastorage.org/r/w1560/webt/ye/h0/rb/yeh0rbvc5q2ncdsuoxxc1hrbnay.png)
Анализаторы Roslyn также могут отображать автоматическое исправление кода с помощью иконки лампочки Visual Studio, которая позволяет немедленно исправить код.
![image](https://habrastorage.org/r/w780q1/webt/nu/xp/jd/nuxpjdfk_hcdo07ghbyhelwdpzk.jpeg)
Позвольте представить вам пакеты анализатора Roslyn. Эти коллекции анализаторов предоставляют более подробный анализ, но не поставляются с дефолтными инструментами Visual Studio. Чтобы узнать больше о наших любимых анализаторах Roslyn, посетите репозиторий Roslyn analyzers на GitHub. Этот репозиторий включает в себя правила FxCop, которые по-прежнему применимы к современной разработке программного обеспечения, но теперь таргетированы для нашей современной платформы анализа кода, базирующейся на Roslyn. Давайте продолжим и установим этот пакет, чтобы увеличить продуктивность и скорость написания отличного кода!
Установка анализаторов FxCop:
![image](https://habrastorage.org/r/w1560/webt/h9/4d/jf/h94djfq1yhzg8fw3tpogdlnqjdg.png)
После установки пакета вы можете просто настроить диагностику анализатора в Solution Explorer. Узел анализатора появится под узлом References или Dependencies в Solution Explorer. Если сначала развернуть анализаторы, а затем одну из сборок анализатора, можно будет просмотреть все доступные диагностики в сборке.
![image](https://habrastorage.org/r/w1560/webt/bv/vf/od/bvvfodfjrfqvwn75fwcjcxfl_iy.png)
Вы можете просмотреть свойства диагностики, включая такие пункты, как Description и Default severity, в окне Properties. Чтобы просмотреть свойства, кликните правой кнопкой мыши правило и выберите Properties или же выберите правило, а затем нажмите Alt+Enter.
![image](https://habrastorage.org/r/w1560/webt/u8/wz/cn/u8wzcnipnxmn28aow2ubsk2gvw8.png)
Иконки рядом с каждым типом диагностики в Solution Explorer соответствуют иконкам, которые отображаются в наборе правил при его открытии в редакторе:
![image](https://habrastorage.org/r/w1560/webt/ko/6g/ii/ko6giie90q02ntz30ektfdl5wai.png)
Затем вы можете задать параметры серьезности в Solution Explorer. Первым делом, для этого необходимо развернуть Dependencies > Analyzers в Solution Explorer, после чего развернуть сборку, содержащую правило, для которого вы хотите задать параметры серьезности. После этого следует кликнуть правой кнопкой мыши на правило, выбрать Set Rule Set Severity и во всплывшем меню выбрать один из параметров серьезности.
![image](https://habrastorage.org/r/w1560/webt/ei/gr/yb/eigrybgvpppjqf_e2vtzqse740c.png)
Если вы зададите Warning, то будете получать предупреждения в своем коде для этого конкретного набора правил.
![image](https://habrastorage.org/r/w1560/webt/1m/6i/gx/1m6igxwthfecswzkishasf3jv1w.png)
Теперь, когда вы понимаете, как работают анализаторы, вы можете повысить производительность и быстрее писать отличный код!
В: Я столкнулся со следующим предупреждением при работе в 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.
![image](https://habrastorage.org/webt/ye/h0/rb/yeh0rbvc5q2ncdsuoxxc1hrbnay.png)
Анализаторы Roslyn также могут отображать автоматическое исправление кода с помощью иконки лампочки Visual Studio, которая позволяет немедленно исправить код.
![image](https://habrastorage.org/webt/nu/xp/jd/nuxpjdfk_hcdo07ghbyhelwdpzk.jpeg)
Но что, если бы вы могли отловить еще больше ошибок?
Позвольте представить вам пакеты анализатора Roslyn. Эти коллекции анализаторов предоставляют более подробный анализ, но не поставляются с дефолтными инструментами Visual Studio. Чтобы узнать больше о наших любимых анализаторах Roslyn, посетите репозиторий Roslyn analyzers на GitHub. Этот репозиторий включает в себя правила FxCop, которые по-прежнему применимы к современной разработке программного обеспечения, но теперь таргетированы для нашей современной платформы анализа кода, базирующейся на Roslyn. Давайте продолжим и установим этот пакет, чтобы увеличить продуктивность и скорость написания отличного кода!
Установка анализаторов FxCop:
- Предполагаю, что вы используете Visual Studio 2017 версии 15.8 или новее. Если это так, то выберите самую последнюю версию Microsoft.CodeAnalysis.FxCopAnalyzers.
- Установите пакет в Visual Studio, воспользовавшись Package Manager UI.
![image](https://habrastorage.org/webt/h9/4d/jf/h94djfq1yhzg8fw3tpogdlnqjdg.png)
После установки пакета вы можете просто настроить диагностику анализатора в Solution Explorer. Узел анализатора появится под узлом References или Dependencies в Solution Explorer. Если сначала развернуть анализаторы, а затем одну из сборок анализатора, можно будет просмотреть все доступные диагностики в сборке.
![image](https://habrastorage.org/webt/bv/vf/od/bvvfodfjrfqvwn75fwcjcxfl_iy.png)
Вы можете просмотреть свойства диагностики, включая такие пункты, как Description и Default severity, в окне Properties. Чтобы просмотреть свойства, кликните правой кнопкой мыши правило и выберите Properties или же выберите правило, а затем нажмите Alt+Enter.
![image](https://habrastorage.org/webt/u8/wz/cn/u8wzcnipnxmn28aow2ubsk2gvw8.png)
Иконки рядом с каждым типом диагностики в Solution Explorer соответствуют иконкам, которые отображаются в наборе правил при его открытии в редакторе:
- “i” в круге обозначает параметр Info
- “!” в треугольнике обозначает параметр Warning
- “x” в круге обозначает параметр Error
- “i” в круге обозначает параметр Hidden
- “↓” в круге указывает на подавленную диагностику
![image](https://habrastorage.org/webt/ko/6g/ii/ko6giie90q02ntz30ektfdl5wai.png)
Затем вы можете задать параметры серьезности в Solution Explorer. Первым делом, для этого необходимо развернуть Dependencies > Analyzers в Solution Explorer, после чего развернуть сборку, содержащую правило, для которого вы хотите задать параметры серьезности. После этого следует кликнуть правой кнопкой мыши на правило, выбрать Set Rule Set Severity и во всплывшем меню выбрать один из параметров серьезности.
![image](https://habrastorage.org/webt/ei/gr/yb/eigrybgvpppjqf_e2vtzqse740c.png)
Если вы зададите Warning, то будете получать предупреждения в своем коде для этого конкретного набора правил.
![image](https://habrastorage.org/webt/1m/6i/gx/1m6igxwthfecswzkishasf3jv1w.png)
Теперь, когда вы понимаете, как работают анализаторы, вы можете повысить производительность и быстрее писать отличный код!
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.