Información general sobre el análisis de código fuente

Los analizadores de .NET Compiler Platform (Roslyn) inspeccionan el estilo, la calidad, el mantenimiento y el diseño del código de C# o de Visual Basic, además de otros problemas. Esta inspección o análisis se realiza durante el tiempo de diseño en todos los archivos abiertos.

Los analizadores se pueden dividir en los grupos siguientes:

Niveles de gravedad de los analizadores

Cada analizador tiene uno de los niveles de gravedad siguientes:

Gravedad (Explorador de soluciones) Gravedad (archivo .editorconfig) Comportamiento en tiempo de compilación Comportamiento del editor
Error error Las infracciones aparecen como Errores en la Lista de errores y en la salida de compilación de la línea de comandos, e impiden que las compilaciones se lleven a cabo. El código infractor se subraya con un subrayado ondulado de color rojo y se marca con un pequeño cuadro rojo en la barra de desplazamiento.
Advertencia warning Las infracciones aparecen como Advertencias en la Lista de errores y en la salida de compilación de la línea de comandos, pero no impiden que las compilaciones se lleven a cabo. El código infractor se subraya con un subrayado ondulado de color verde y se marca con un pequeño cuadro verde en la barra de desplazamiento.
Información suggestion Las infracciones aparecen como Mensajes en la Lista de errores, pero no se incluyen en la salida de compilación de la línea de comandos. El código infractor se subraya con un subrayado ondulado de color gris y se marca con un pequeño cuadro gris en la barra de desplazamiento.
Hidden silent No es visible para el usuario. No es visible para el usuario, pero el diagnóstico se notifica al motor de diagnóstico del IDE.
Ninguno none Se suprime por completo. Se suprime por completo.
Default default Corresponde a la gravedad predeterminada de la regla. Para averiguar cuál es el valor predeterminado de una regla, consulte la ventana Propiedades. Corresponde a la gravedad predeterminada de la regla.

Si un analizador detecta infracciones de reglas, se notifican en el editor de código (como un subrayado ondulado bajo el código infractor) y en la ventana Lista de errores.

Infracción de analizadores en la ventana Lista de errores

Las infracciones de analizadores informadas en la lista de errores coincide con el valor del nivel de gravedad de la regla. Las infracciones de analizadores también se muestran en el editor de código como subrayados ondulados debajo del código infractor. En la imagen siguiente se muestran tres infracciones—un error (subrayado ondulado rojo), una advertencia (subrayado ondulado verde) y una sugerencia (tres puntos grises):

Subrayados ondulados en el editor de código en Visual Studio

Muchas reglas de los analizadores, o diagnósticos, tienen una o más correcciones de código asociadas que se pueden aplicar para corregir la infracción de la regla. Las correcciones de código se muestran en el menú del icono de bombilla junto con otros tipos de Acciones rápidas. Para obtener información sobre estas correcciones de código, vea Acciones rápidas comunes.

Infracción de analizador y corrección de código de Acción rápida

Configuración de los niveles de gravedad de los analizadores

Puede configurar la gravedad de las reglas de los analizadores, o diagnósticos, en un archivo EditorConfig o desde el menú de bombilla.

Los analizadores también se pueden configurar para inspeccionar el código tanto en tiempo de compilación como en tiempo real, a medida que escribe. El análisis de código activo se puede configurar para que su ámbito de ejecución sea el documento actual, todos los documentos abiertos o toda la solución. Vea Cómo: Configurar el ámbito del análisis de código activo.

Sugerencia

Los errores y las advertencias de tiempo de compilación de los analizadores de código se muestran solo si los analizadores están instalados como paquetes NuGet. Los analizadores integrados (por ejemplo, IDE0067 e IDE0068) nunca se ejecutan durante una compilación.

Paquete NuGet frente a extensión VSIX

Los analizadores de terceros se pueden instalar por proyecto a través de un paquete NuGet. Algunos de estos analizadores están disponibles también como una extensión de Visual Studio, en cuyo caso son válidos en cualquier solución que se abra en Visual Studio. Hay algunas diferencias de comportamiento fundamentales entre estos dos métodos de instalación de analizadores.

Ámbito

Si instala analizadores como una extensión de Visual Studio, se aplican en el nivel de solución y en todas las instancias de Visual Studio. Si instala los analizadores como un paquete NuGet, que es el método recomendado, se aplican únicamente al proyecto donde se ha instalado el paquete NuGet. En entornos de equipo, los analizadores instalados como paquetes NuGet son para todos los desarrolladores que trabajan en ese proyecto.

Errores de compilación

Para aplicar las reglas en tiempo de compilación, lo que incluye por medio de la línea de comandos o como parte de una compilación de integración continua (CI), puede elegir una de las opciones siguientes:

  • Cree un proyecto de .NET 5.0 o posterior que incluya analizadores de forma predeterminada en el SDK de .NET. De forma predeterminada, el análisis de código está habilitado para los proyectos que tienen como destino .NET 5.0 o una versión posterior. Puede habilitar el análisis de código en los proyectos que tengan como destino versiones anteriores de .NET estableciendo la propiedad EnableNETAnalyzers en true.

  • Instale los analizadores como paquete NuGet. Los errores y las advertencias del analizador no se muestran en el informe de compilación si instala los analizadores como una extensión.

En la siguiente imagen se muestra la salida de compilación de línea de comandos de la compilación de un proyecto que contiene una infracción de regla de analizador:

Salida de MSBuild con infracción de regla

Gravedad de las reglas

No se puede configurar la gravedad de las reglas de los analizadores que se han instalado como una extensión de Visual Studio. Para configurar la gravedad de las reglas, instale los analizadores como paquetes NuGet.

Pasos siguientes

Vea también