Usando o Code Analyzers no Visual Studio para melhorar a qualidade de código
O que são Live Code Analyzers?
Analisadores são extensões que podem ser adicionadas ao projeto Visual Studio. Eles estão disponíveis no Visual Studio desde a versão 2015 com o compilador Roslyn e analisam o código ao vivo e verificam se há melhorias. "Live" nesse caso significa que ele encontra problemas enquanto você digita. Um recurso muito legal!
Quais analisadores estão disponíveis e como os consigo?
A maneira mais fácil de encontrá-los é procurar “analisadores” no gerenciador de pacotes do NuGet. Existem vários analisadores disponíveis, os mais interessantes na minha opinião são:
- Microsoft.AnalyzerPowerPack
- Microsoft.CodeAnalysis.FxCopAnalyzers
- codecracker.CSharp (feito por um brasileiro)
- SonarAnalyzer.CSharp
- StyleCop.Analyzers
- Microsoft.VisualStudio.Azure.CodeAnalysis
Como usar analisadores em seu projeto
Inicialmente, precisamos abrir o gerenciador de pacotes NuGet e encontrar o analisador de código certo para nós. Vou usar o SonarAnalyzer.CSharp nesse caso.
Podemos verificar as regras existentes no Solution Explorer, expandindo as "References" e depois os "Analyzers":
Além disso, podemos configurar o conjunto de regras que queremos usar. Basta clicar com o botão direito do mouse em "Analyzers" e selecionar "Open Active Rule Set".
Agora podemos selecionar as regras que queremos usar em nossa solution.
Se você deseja redefinir as regras para as regras padrão, é possível excluir o arquivo .rulesettings que foi criado.
Quais Analyzers são os corretos para mim?
Depende! Existem alguns analisadores de código específicos, por exemplo Microsoft.VisualStudio.Azure.CodeAnalysis para projetos do Azure ou AsyncUsageAnalyzers com práticas recomendadas para escrever código assíncrono. Procure-os e verifique se há algum que se encaixe no seu projeto.
Posso usar Analyzers no code review?
Deve! O code review acaba gerando inúmeras discussões entre a equipe, pois leva muito tempo a ser feita. E mesmo sendo uma etapa muito importante, às vezes ela acaba sendo eliminada por conta da pressão relacionada ao prazo de entrega. No entanto, é neste momento em que acaba acontecendo falhas humanas, fazendo com que diversas regras acordadas pelo time passem despercebidas. A consequência disso é refactoring e impactos significativos na qualidade do código. Para minimizar o tempo com code review podemos automatizar parte deste processo com os Analyzers.
Vitor Rossetto escreveu um excelente artigo sobre o uso de Analyzers para code review, o qual recomendo a leitura.