Configuración de errores y advertencias en C#
La configuración de errores y advertencias en C# es un aspecto crucial para mantener un código robusto y fiable. En C#, el compilador y los analizadores de Roslyn proporcionan advertencias para alertar a los desarrolladores de posibles problemas en su código. Al configurar estas advertencias para que se traten como errores, los desarrolladores pueden aplicar normas de codificación más estrictas, lo que garantiza que los problemas menores se solucionen antes de que se conviertan en problemas más importantes.
Derek Comartin, en su canal de YouTube CodeOpinion, ofrece información valiosa sobre cómo se pueden configurar estas advertencias para que se traten como errores y, de este modo, aplicar normas de codificación más estrictas. Este artículo, inspirado en el vídeo de Derek "Configuración de errores y advertencias en C#", ofrece una guía completa para aplicar estas prácticas y garantizar un proceso de desarrollo más sólido.
Comprensión de advertencias y errores
En el vídeo, Derek introduce el concepto de informar de las advertencias del compilador o del analizador Roslyn como errores. Explica que es un proceso sencillo que puede ayudar a prevenir futuros problemas. Por ejemplo, cuando se trabaja con métodos asíncronos, olvidarse de utilizar la palabra clave await puede dar lugar a posibles errores. Derek demuestra un escenario donde su método SaveChangesAsync genera una advertencia porque no se espera. Subraya la importancia de abordar estas advertencias en una fase temprana para evitar que se conviertan en problemas mayores.
Este enfoque ayuda a mejorar la calidad del código, la capacidad de mantenimiento y la estabilidad general del sistema. Ya se trate de archivos de configuración, gestión de excepciones o ajustes del sistema, comprender cómo gestionar estos avisos de forma eficaz es clave para crear aplicaciones resistentes.
Convertir advertencias en errores
Para convertir las advertencias en errores, Derek sugiere modificar el archivo del proyecto (.csproj). Él muestra cómo agregar un elemento <WarningsAsErrors> dentro de la <PropertyGroup> del archivo del proyecto. Específicamente, para la advertencia CS4014 (generada cuando falta el await), agregar este elemento convierte la advertencia en un error, causando que la compilación falle si el problema persiste. Este enfoque impone normas de codificación más estrictas y ayuda a detectar posibles errores en una fase temprana del proceso de desarrollo de aplicaciones.
<PropertyGroup>
<WarningsAsErrors>CS4014</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<WarningsAsErrors>CS4014</WarningsAsErrors>
</PropertyGroup>
Aplicación del concepto a los analizadores Roslyn
Derek extiende este enfoque a los analizadores Roslyn, que también producen advertencias. Utiliza como ejemplo el paquete Microsoft Visual Studio Threading Analyzer.

Al añadir este paquete al proyecto y reintroducir el problema de async, Derek destaca cómo las advertencias del analizador de Roslyn también pueden convertirse en errores. Esto es especialmente útil para los equipos que confían en estos analizadores para hacer cumplir las normas y prácticas de codificación. Al tratar estas advertencias como errores, los desarrolladores pueden asegurarse de que el código se adhiere a las directrices definidas por el marco y evitar posibles problemas en la producción.
<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>
Ignorar advertencias específicas
Hay situaciones en las que ciertas advertencias pueden no ser relevantes para su proyecto. Derek discute cómo ignorar tales advertencias usando el elemento <NoWarn> en el archivo del proyecto. Utiliza el ejemplo de una advertencia de convención de nombres asincrónica (VSTHRD200), con la cual no está de acuerdo y opta por ignorar agregándola a <NoWarn>. Esta característica permite a los desarrolladores adaptar el sistema de avisos y notificación de errores a sus necesidades específicas, centrándose en los problemas más importantes para su proyecto e ignorando los que no lo son.
<PropertyGroup>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
<PropertyGroup>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
Configuración de toda la solución
Como consejo adicional, Derek demuestra cómo aplicar estas configuraciones a toda la solución usando un archivo Directory.Build.props. Este enfoque asegura que las configuraciones sean consistentes en todos los proyectos dentro de la solución, ahorrando tiempo y manteniendo la uniformidad. Al colocar las configuraciones en este archivo centralizado, los equipos pueden aplicar los mismos valores y normas de codificación en múltiples proyectos, garantizando que todas las bases de código se adhieran a las mismas directrices. Esto puede ser especialmente útil para equipos grandes u organizaciones con múltiples proyectos en desarrollo.
<Project>
<PropertyGroup>
<WarningsAsErrors>CS4014;VSTHRD103</WarningsAsErrors>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
</Project>
<Project>
<PropertyGroup>
<WarningsAsErrors>CS4014;VSTHRD103</WarningsAsErrors>
<NoWarn>VSTHRD200</NoWarn>
</PropertyGroup>
</Project>
Conclusión
Siguiendo los diversos pasos de configuración descritos por Derek Comartin, podrá gestionar eficazmente las advertencias del compilador y del analizador Roslyn en sus proyectos de C#. Configurar las advertencias como errores ayuda a mantener una alta calidad del código y evita que se cuelen posibles problemas. Para un recorrido más detallado, puedes ver el vídeo completo de Derek video titulado "Configuring Errors and Warnings in C#" en su CodeOpinion YouTube channel.
