Анализ кода с помощью анализаторов платформы компилятора .NET (Roslyn)

Анализаторы платформы компилятора .NET (Roslyn) проверяют код C# или Visual Basic для стиля, качества, удобства обслуживания, проектирования и других проблем. Эта проверка или анализ выполняется во время разработки во всех открытых файлах.

Анализаторы можно разбить на следующие группы:

  • Анализаторы стиля кода

    Эти анализаторы встроены в Visual Studio. Идентификатор диагностики анализатора или формат кода — IDExxxx, например, IDE0001. Вы можете настроить параметры на странице параметров текстового редактора или в файле EditorConfig. Начиная с .NET 5.0, анализаторы стиля кода включены в пакет SDK для .NET и могут строго рассматриваться как предупреждения или ошибки сборки. Дополнительные сведения см. в разделе Обзор анализа исходного кода в .NET.

  • Анализаторы качества кода

    Эти анализаторы включены в пакет SDK для .NET 5.0 и более поздних версий и включены по умолчанию. Идентификатор диагностики анализатора (код) имеет вид CAxxxx, например CA1822. Дополнительные сведения см. в разделе об анализе качества кода.

  • Внешние анализаторы

    Примерами внешних анализаторов являются StyleCop, Roslynator, xUnit Analyzers и Sonar Analyzer. Эти анализаторы можно установить как пакет NuGet, так и расширение Visual Studio.

Уровни серьезности анализаторов

Каждое правило анализатора Roslyn или диагностика имеет состояние серьезности и подавления по умолчанию, которое можно настроить для проекта.

Уровни серьезности включают: ошибка, предупреждение, предложение, молчаливое, нет и значение по умолчанию. Подробные сведения и поведение см. в разделе "Настройка уровней серьезности".

Нарушения правил

Если анализатор находит нарушения правил анализатора, он сообщает их в окне списка ошибок и в редакторе кода.

На следующем снимке экрана показаны нарушения правил, сообщаемые в окне списка ошибок. Нарушения анализатора, сообщаемые в списке ошибок, соответствуют параметру уровня серьезности правила:

Снимок экрана: нарушения анализатора в окне списка ошибок.

Нарушения правил анализатора также отображаются в редакторе кода в виде строк волнистых элементов в коде обиженного кода. Например, на следующем снимке экрана показаны три нарушения: одна ошибка (красная линия волнистой линии), одно предупреждение (зеленая линия волнистой линии) и одно предложение (три серые точки):

Снимок экрана: метки ошибок, предупреждений и предложений в редакторе кода.

Исправления кода

Многие диагностика имеют одно или несколько связанных исправлений кода, которые можно применить для исправления нарушения правила. Исправления кода отображаются в меню со значком лампочки вместе с другими типами быстрых действий. Дополнительные сведения об исправлениях кода см. в разделе "Распространенные быстрые действия".

Снимок экрана: нарушение анализатора и исправление кода быстрого действия в редакторе кода.

Настройка уровней серьезности анализатора

Вы можете настроить серьезность правил анализатора в файле EditorConfig или в меню лампочки.

Анализаторы также можно настроить для проверки кода во время сборки и при вводе. Можно настроить область выполнения динамического анализа кода только для текущего документа, для всех открытых документов или для всего решения. Дополнительные сведения см. в разделе "Настройка анализа динамического кода для .NET".

Совет

Ошибки и предупреждения времени сборки из анализаторов кода отображаются только в том случае, если анализаторы установлены как пакет NuGet. Встроенные анализаторы (например, IDE0067 и IDE0068) никогда не запускаются во время сборки.

Установка анализаторов внешнего кода

Visual Studio включает основной набор анализаторов Roslyn, которые всегда активны. Если вам нужны дополнительные анализаторы кода, можно установить внешние анализаторы для каждого проекта с помощью пакета NuGet. Некоторые анализаторы также доступны в виде расширения Visual Studio .vsix , в этом случае они применяются к любому решению, которое вы открываете в Visual Studio. Сведения об установке этих двух различных типов анализаторов см. в разделе "Установка анализаторов кода".

Область

При установке анализатора в виде пакета NuGet предпочтительный метод применяется только к проекту, в котором установлен пакет NuGet. В противном случае, если вы устанавливаете анализатор как расширение Visual Studio, оно применяется на уровне решения и ко всем экземплярам Visual Studio. В средах группы анализатор, который устанавливается как пакет NuGet, находится в область для всех разработчиков, работающих над этим проектом.

Примечание.

Сторонние анализаторы поставляются в пакете SDK для .NET. Предпочтительнее включить эти анализаторы из пакета SDK для .NET, а не устанавливать их в виде Microsoft.CodeAnalysis.NetAnalyzersпакета NuGet. Включение анализаторов из пакета SDK для .NET гарантирует автоматическое получение исправлений анализатора и новых анализаторов после обновления пакета SDK. Дополнительные сведения об анализаторах см. в статье "Включение или установка сторонних анализаторов .NET".

Ошибки сборки

Чтобы применить правила во время сборки, с помощью сборок командной строки или непрерывной интеграции (CI) выберите один из следующих вариантов:

  • Создайте проект .NET 5.0 или более поздней версии, который включает анализ кода по умолчанию. Чтобы включить анализ кода для проектов, предназначенных для более ранних версий .NET, задайте для свойства EnableNETAnalyzers значение true.

  • Установите анализаторы в виде пакета NuGet. Если вы устанавливаете анализаторы в качестве расширения Visual Studio, предупреждения и ошибки анализатора не отображаются в отчете о сборке.

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

Снимок экрана: выходные данные MSBuild с нарушением правила в командной строке разработчика.

Важность правил

Если требуется настроить серьезность правила анализатора, необходимо установить анализатор в виде пакета NuGet. Невозможно настроить серьезность правил из анализаторов, установленных в качестве расширения Visual Studio.

Следующие шаги