Compartir a través de


Análisis de código de MSTest

Las reglas de análisis de MSTest ("MSTESTxxxx") inspeccionan el código de C# o Visual Basic en busca de incidencias de seguridad, rendimiento, diseño y de otro tipo.

Sugerencia

Si usa Visual Studio, muchas reglas de analizador tienen correcciones de código asociadas que se pueden aplicar para corregir el problema. Las correcciones de código se muestran en el menú del icono de bombilla.

Las reglas se organizan en categorías como el uso del rendimiento...

A partir de MSTest.TestFramework 3.7, el paquete NuGet MSTest.Analyzers es una dependencia del marco. Para versiones anteriores, debe utilizar el metapaquete MSTest o agregar una referencia de paquete para MSTest.Analyzers explícitamente.

MSTestAnalysisMode

A partir de MSTest 3.8, hay disponible una propiedad de MSBuild denominada MSTestAnalysisMode para determinar qué analizadores están habilitados en qué gravedad.

Sugerencia

Para ver qué reglas están habilitadas en qué gravedad para cada modo, puede ir al paquete de la versión de interés en la caché de NuGet, buscar el directorio globalconfigs y abrir el archivo .globalconfig correspondiente al modo de análisis. Para obtener más información sobre cómo buscar el directorio de caché de NuGet, consulte Administración de los paquetes globales, la caché y las carpetas temporales. En ese directorio, busque el directorio mstest.analyzers, luego la versión (3.8 y versiones posteriores), y después globalconfigs. Como alternativa, puede descargar el paquete NuGet de la versión de interés de nuget.org y verlo en el Explorador de paquetes NuGet (aplicación de Windows) o ver directamente en la versión de la aplicación web de del Explorador de paquetes NuGet.

Los valores disponibles para esta propiedad:

None

Este valor establece todos los analizadores con gravedad none, lo que deshabilita todos ellos. Después, puede habilitar analizadores individuales mediante archivos .editorconfig o .globalconfig.

Default

Esta configuración sigue el comportamiento documentado predeterminado para cada regla.

  • Las reglas habilitadas de forma predeterminada usarán su gravedad predeterminada.
  • Las reglas que están deshabilitadas de forma predeterminada tendrán una severidad de none.

Nota:

Las reglas que están habilitadas de forma predeterminada como advertencias son infracciones que se espera que causen problemas en tiempo de ejecución.

Este es el modo que esperamos que la mayoría de los desarrolladores usen. Las reglas habilitadas predeterminadamente con gravedad Info (suggestion) se escalan a advertencias. Además, ciertas reglas pueden escalarse a errores tanto en modo Recommended como All. Por ejemplo, MSTEST0003: Los métodos de prueba deben tener un diseño válido se escala a error en los modos Recommended y All.

All

Este modo es más agresivo que Recommended. Todas las reglas están habilitadas como advertencias. Como se mencionó para el modo Recommended, ciertas reglas se pueden escalar a errores en ambos modos Recommended y All. Por ejemplo, MSTEST0003: Los métodos de prueba deben tener un diseño válido se escala a error en los modos Recommended y All.

Categorías

Reglas de diseño

Las reglas de diseño le ayudarán a crear y mantener conjuntos de pruebas que se adhieren al diseño adecuado y a los procedimientos recomendados.

Reglas de rendimiento

Las reglas de rendimiento soportan pruebas de alto rendimiento.

Reglas de supresión

Reglas que admiten la supresión de diagnósticos de otras reglas.

Reglas de uso

Las reglas de uso admiten el uso adecuado de .NET.

MSTESTEXP

Varias API de MSTest están representadas con el ExperimentalAttribute. Este atributo indica que la API es experimental y se puede quitar o cambiar en versiones futuras de MSTest. El atributo se usa para identificar las API que aún no son estables y es posible que no sean adecuadas para su uso en producción.

El diagnóstico de MSTESTEXP le avisa para usar una API experimental en el código. Para suprimir este diagnóstico con SuppressMessageAttribute, agregue el código siguiente al proyecto:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("MSTESTEXP", "Justification")]

Como alternativa, puede suprimir este diagnóstico con la directiva de preprocesador agregando el código siguiente al proyecto:

#pragma warning disable MSTESTEXP
        // API that is causing the warning.
#pragma warning restore MSTESTEXP