Share via


Migrar de analisadores do FxCop para analisadores de .NET

A análise de origem por analisadores da .NET Compiler Platform ("Roslyn") substitui a análise herdada de código gerenciado. Muitas das regras da análise herdada (FxCop) já foram reescritas como analisadores de origem.

Antes do Visual Studio 2019 16.8 e do .NET 5.0, esses analisadores eram enviados como um Microsoft.CodeAnalysis.FxCopAnalyzerspacote NuGet.

A partir do Visual Studio 2019 16.8 e no .NET 5.0, esses analisadores são incluídos no SDK do .NET. Se você não quer mudar para o SDK do .NET 5+ ou se prefere um modelo no pacote NuGet, os analisadores também estão disponíveis no Microsoft.CodeAnalysis.NetAnalyzerspacote NuGet. Talvez você prefira um modelo baseado em pacote para atualizações de versão sob demanda.

Observação

Os analisadores do .NET internos são independentes da plataforma de destino. Ou seja, o projeto não precisa ser destinado a uma plataforma específica do .NET. Os analisadores funcionam para projetos direcionados a net5.0 e a versões anteriores do .NET, como netcoreapp, netstandard e net472.

Etapas da migração

A partir da versão 3.3.2, Microsoft.CodeAnalysis.FxCopAnalyzers o pacote NuGet foi preterido. Siga as etapas abaixo para migrar o projeto ou a solução de Microsoft.CodeAnalysis.FxCopAnalyzers para os analisadores do .NET:

  1. Desinstalar o pacote NuGet Microsoft.CodeAnalysis.FxCopAnalyzers

  2. Habilite ou instale analisadores do .NET. Observe que você não precisa alterar a plataforma de destino do projeto.

  3. Habilitar regras adicionais: Microsoft.CodeAnalysis.NetAnalyzers é muito mais conservador em comparação com Microsoft.CodeAnalysis.FxCopAnalyzers. Ao contrário do pacote FxCopAnalyzers, ele tem apenas algumas regras de correção habilitadas por padrão como avisos de build. Para habilitar regras adicionais, personalize a propriedade MSBuild AnalysisMode. Por exemplo, definir a propriedade como AllEnabledByDefault habilitará todas as regras de AC aplicáveis como avisos de build por padrão.

    <PropertyGroup>
      <AnalysisMode>AllEnabledByDefault</AnalysisMode>
    </PropertyGroup>