Configurando erros e avisos em C#
Configurar erros e avisos em C# é um aspecto crucial para manter um código robusto e confiável. Em C#, o compilador e os analisadores Roslyn fornecem avisos para alertar os desenvolvedores sobre possíveis problemas em seu código. Ao configurar esses avisos para serem tratados como erros, os desenvolvedores podem impor padrões de codificação mais rigorosos, garantindo que problemas menores sejam resolvidos antes que se transformem em problemas mais significativos.
Derek Comartin, em seu canal CodeOpinion no YouTube, oferece informações valiosas sobre como esses avisos podem ser configurados para serem tratados como erros, reforçando assim padrões de codificação mais rigorosos. Este artigo, inspirado no vídeo de Derek " Configurando erros e avisos em C# ", oferece um guia completo para implementar essas práticas e garantir um processo de desenvolvimento mais robusto.
Entendendo avisos e erros
No vídeo, Derek apresenta o conceito de reportar avisos do compilador ou do analisador Roslyn como erros. Ele explica que é um processo simples que pode ajudar a prevenir problemas futuros. Por exemplo, ao trabalhar com métodos assíncronos, esquecer de usar a palavra-chave await pode levar a possíveis erros. Derek demonstra um cenário onde seu método SaveChangesAsync aciona um aviso porque não é aguardado. Ele enfatiza a importância de abordar esses alertas precocemente para garantir que eles não se transformem em problemas maiores no futuro.
Essa abordagem ajuda a melhorar a qualidade do código, a facilidade de manutenção e a estabilidade geral do sistema. Seja lidando com arquivos de configuração, tratamento de exceções ou configurações do sistema, entender como gerenciar esses avisos de forma eficaz é fundamental para criar aplicativos resilientes.
Convertendo avisos em erros
Para converter avisos em erros, Derek sugere modificar o arquivo de projeto (.csproj). Ele mostra como adicionar um elemento <WarningsAsErrors> dentro do <PropertyGroup> do arquivo do projeto. Especificamente, para o aviso CS4014 (gerado quando o await está ausente), adicionar este elemento converte o aviso em um erro, fazendo com que a compilação falhe se o problema persistir. Essa abordagem impõe padrões de codificação mais rigorosos e ajuda a detectar possíveis erros logo no início do processo de desenvolvimento do aplicativo.
<PropertyGroup>
<WarningsAsErrors>CS4014</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<WarningsAsErrors>CS4014</WarningsAsErrors>
</PropertyGroup>
Aplicando o conceito aos analisadores Roslyn
Derek estende essa abordagem aos analisadores Roslyn, que também geram avisos. Ele usa o pacote Microsoft Visual Studio Threading Analyzer como exemplo.

Ao adicionar este pacote ao projeto e reintroduzir o problema de assincronia, Derek destaca como os avisos do analisador Roslyn também podem ser transformados em erros. Isso é particularmente útil para equipes que dependem desses analisadores para aplicar padrões e práticas de codificação. Ao tratar esses avisos como erros, os desenvolvedores podem garantir que o código esteja em conformidade com as diretrizes definidas pela estrutura e evitar possíveis problemas em produção.
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="16.10.56" />
</ItemGroup>
<PropertyGroup>
<WarningsAsErrors>VSTHRD103</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="16.10.56" />
</ItemGroup>
<PropertyGroup>
<WarningsAsErrors>VSTHRD103</WarningsAsErrors>
</PropertyGroup>
Ignorando avisos específicos
Existem cenários em que certos avisos podem não ser relevantes para o seu projeto. Derek discute como ignorar tais avisos usando o elemento <NoWarn> no arquivo do projeto. Ele usa o exemplo de um aviso de convenção de nomenclatura assíncrona (VSTHRD200), com o qual ele discorda e opta por ignorar, adicionando-o ao <NoWarn>. Essa funcionalidade permite que os desenvolvedores personalizem o sistema de avisos e relatórios de erros de acordo com suas necessidades específicas, concentrando-se nos problemas mais importantes para o projeto e ignorando aqueles que não são relevantes.
<PropertyGroup>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
<PropertyGroup>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
Configuração de toda a solução
Como uma dica extra, Derek demonstra como aplicar essas configurações em toda a solução usando um arquivo Directory.Build.props. Esta abordagem garante que as configurações sejam consistentes em todos os projetos dentro da solução, economizando tempo e mantendo a uniformidade. Ao colocar as configurações nesse arquivo centralizado, as equipes podem aplicar os mesmos valores e regras de padrões de codificação em vários projetos, garantindo que todas as bases de código sigam as mesmas diretrizes. Isso pode ser particularmente útil para equipes maiores ou organizações com vários projetos em desenvolvimento.
<Project>
<PropertyGroup>
<WarningsAsErrors>CS4014;VSTHRD103</WarningsAsErrors>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
</Project>
<Project>
<PropertyGroup>
<WarningsAsErrors>CS4014;VSTHRD103</WarningsAsErrors>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
</Project>
Conclusão
Seguindo os vários passos de configuração descritos por Derek Comartin, você pode gerenciar com eficácia os avisos do compilador e do analisador Roslyn em seus projetos C#. Configurar avisos como erros ajuda a manter a alta qualidade do código e evita que problemas potenciais passem despercebidos. Para um passo a passo mais detalhado, você pode assistir ao vídeo completo de Derek intitulado "Configurando erros e avisos em C#" em seu canal do YouTube CodeOpinion .
