ASP .NET Core - Habilitando os Built-in .NET Analyzers


 Hoje veremos como habilitar os analisadores embutidos na ASP.NET Core 5.0.

A partir da versão 2.2 a ASP .NET Core fornece um pacote de analisadores destinados ao uso de projetos Web API que trabalham com controladores anotados com o atributo ApiController construindo convenções para as APIs.

O pacote de analisadores notifica você sobre qualquer ação do controlador que:

A partir da ASP .NET 3.0 os analisadores estão incluídos no SDK do .NET Core. Para habilitar o analisador em seu projeto, inclua a propriedade  IncludeOpenAPIAnalyzers no arquivo de projeto:

<PropertyGroup>
    <IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
</PropertyGroup>

Os documentos da OpenAPI contêm códigos de status e tipos de resposta que uma Action pode retornar. Na ASP.NET Core MVC, atributos como ProducesResponseTypeAttribute e ProducesAttribute são usados para documentar uma Action.

Nos projetos Web API da ASP.NET Core o Swagger/OpenAPI apresenta mais detalhes sobre como documentar sua API Web. Um dos analisadores no pacote inspeciona controladores anotados com ApiController e identifica ações que não documentam totalmente as respostas.

Para habilitar os analisadores em um projeto onde o ambiente possui o pacote .NET Core SDK 5.0 instalado basta incluir no arquivo de projeto (.cproj) o seguinte código:

<PropertyGroup>
     <OutputType>Exe</OutputType>
     <TargetFramework>net5.0</TargetFramework>
     <EnableNETAnalyzers>true</EnableNETAnalyzers>
      <AnalysisMode>AllEnabledByDefault</AnalysisMode>
      <AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>

Abaixo temos um exemplo de habilitação dos analisadores em um projeto Web API:

Se você não tiver o .NET 5.0 SDK instalado mas deseja usar os analisadores você deve instalar o pacote:

Install-Package Microsoft.CodeAnalysis.NetAnalyzers

E a seguir incluir as configurações abaixo no arquivo .csproj:

<PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>netcoreapp3.1</TargetFramework>
    <AnalysisMode>AllEnabledByDefault</AnalysisMode>
    <AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>

Depois de habilitar .NET Analyzers, você pode verificar se ele está funcionando, adicionando intencionalmente o código que irá acionar um aviso de análise de código, como o seguinte enum:

public enum Cores
{
     Verde = 1,     
     Azul = 2
}

Em caso de dúvida, reconstrua o projeto. Se tudo estiver funcionando conforme o esperado, você deverá ver o seguinte aviso de análise de código:

warning CA1008 :  Add a member to Cores that has a value of zero with a suggested name of ‘None’

E estamos conversados...

"Quanto ao mais, irmãos, tudo o que é verdadeiro, tudo o que é honesto, tudo o que é justo, tudo o que é puro, tudo o que é amável, tudo o que é de boa fama, se há alguma virtude, e se há algum louvor, nisso pensai."
Filipenses 4:8

Referências:


José Carlos Macoratti