Часто задаваемые вопросы о анализе кода в Visual Studio

Эта страница содержит ответы на некоторые часто задаваемые вопросы об анализе кода на основе .NET Compiler Platform в Visual Studio.

Сравнение анализа кода и EditorConfig

Следует ли использовать анализ кода или EditorConfig для проверки стиля кода?

Анализ кода и файлы EditorConfig тесно связаны друг с другом. При определении стилей кода в файле EditorConfig или на странице параметров текстового редактора вы фактически настраиваете анализаторы кода, встроенные в Visual Studio. Файлы EditorConfig можно использовать для включения или отключения правил анализатора, а также для настройки пакетов анализаторов NuGet.

Сравнение EditorConfig и наборов правил

Следует ли настраивать анализаторы с помощью набора правил или файла EditorConfig?

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

Однако файлы EditorConfig предоставляют дополнительные способы настройки правил:

Кроме наборов правил и файлов EditorConfig, некоторые анализаторы настраиваются с помощью текстовых файлов, помеченных в качестве дополнительных файлов для компиляторов C# и VB.

Примечание.

  • Файлы EditorConfig можно использовать только для включения правил и настройки их важности в Visual Studio 2019 версии 16.3 и более поздних.
  • Файлы EditorConfig не подходят для настройки анализа прежних версий, а наборы правил подходят.

Анализ кода в сборках непрерывной интеграции (CI)

Работает ли анализ кода на основе .NET Compiler Platform в сборках непрерывной интеграции (CI)?

Да. Для анализаторов, устанавливаемых из пакета NuGet, эти правила принудительно применяются во время сборки, включая время сборки CI. Анализаторы, используемые в сборках CI, учитывают конфигурацию правил как из наборов правил, так и из файлов EditorConfig. Сейчас анализаторы кода, встроенные в Visual Studio, недоступны в качестве пакета NuGet, поэтому эти правила не могут быть применены в сборке CI.

Сравнение анализаторов IDE и StyleCop

В чем разница между анализаторами кода Visual Studio IDE и анализаторами StyleCop?

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

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

Сравнение анализаторов кода и анализа прежних версий

В чем разница между анализом прежних версий и анализом кода на основе .NET Compiler Platform?

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

Анализаторы FxCop и анализаторы .NET

Какова разница между анализаторами FxCop и анализаторами .NET?

Анализаторы FxCop и анализаторы .NET относятся к реализации правил ЦС FxCop для платформы компилятора .NET (Roslyn). До Visual Studio 2019 16.8 и .NET 5.0 эти анализаторы поставляются как Microsoft.CodeAnalysis.FxCopAnalyzers пакет NuGet. Начиная с Visual Studio 2019 16.8 и .NET 5.0, эти анализаторы включены в пакет SDK для .NET. Они также доступны в виде Microsoft.CodeAnalysis.NetAnalyzers пакета NuGet. Рекомендуется перенести анализаторы FxCop в анализаторы .NET.

Обработка предупреждений как ошибок

В моем проекте используется параметр сборки для обработки предупреждений как ошибок. После перехода с анализа прежних версий на анализ исходного кода все предупреждения анализа кода отображаются как ошибки. Как предотвратить это?

Чтобы предотвратить обработку предупреждений анализа кода как ошибок, сделайте следующее:

  1. Создайте файл PROPS со следующим содержимым:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Добавьте в файл проекта CSPROJ или VBPROJ строку, чтобы импортировать файл PROPS, созданный на предыдущем шаге. Эта строка должна быть помещена перед любыми строками, импортируемыми файлами props анализатора. Например, если файл PROPS имеет имя codeanalysis.props:

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Страница свойств решения анализа кода

Где находится страница свойств Анализа кода для решения?

Страница свойств Анализа кода на уровне решения была удалена в пользу более надежной группы общих свойств. Для управления анализом кода на уровне проекта страница свойств анализа кода по-прежнему доступна. (Для управляемых проектов также рекомендуется перенести из наборов правил в EditorConfig для конфигурации правила.) Для совместного использования наборов правил для нескольких проектов в решении или репозитории рекомендуется определить группу свойств с свойством CodeAnalysisRuleSet в общем файле props/targets или файле Directory.props/Directory.targets. Если у вас нет таких общих реквизитов или целевых объектов, которые импортируются во всех проектах, следует добавить такую группу свойств в файл Directory.props или Directory.targets в каталог решения верхнего уровня, который автоматически импортируется во всех файлах проекта, определенных в каталоге или его вложенных каталогах.