MSTEST0080: uso del atributo CICondition en lugar de comprobaciones de entorno

Propiedad Value
Identificador de la regla MSTEST0080
Title Uso del atributo CICondition en lugar de comprobaciones de entorno
Category Usage
La corrección es disruptiva o no disruptiva Non-breaking
Habilitado de forma predeterminada Yes
Gravedad predeterminada Información
introducido en la versión 4.4.0 (versión preliminar)
¿Hay una corrección de código? Sí, solo para C#

Causa

La primera instrucción de un método de prueba comprueba el resultado de Environment.GetEnvironmentVariable("CI") y, a continuación, devuelve las llamadas anticipadas o llama a Assert.Inconclusive, en lugar de usar el [CICondition] atributo .

Descripción de la regla

Pruebe los métodos que comprueban null la CI variable de entorno y, a continuación, la devolución anticipada o la llamada Assert.Inconclusive deben usar el [CICondition] atributo en su lugar. El atributo reconoce todos los proveedores de integración continua que MSTest conoce y notifica la prueba como omitida en lugar de superada, lo que no es una devolución anticipada.

[TestMethod]
public void TestMethod()
{
    if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}

El analizador se limita deliberadamente a la variable de uso CI general que todos los conjuntos de proveedores principales. Una protección en una variable específica del proveedor, como TF_BUILD, significa "omitir en Azure Pipelines", mientras que [CICondition] significa "omitir en cualquier CI", por lo que el analizador no sugiere reemplazar una comprobación específica del proveedor.

Cómo corregir infracciones

Reemplace la comprobación de variables de entorno por el [CICondition] atributo .

[TestMethod]
[CICondition(ConditionMode.Include)]
public void TestMethod() { }

Una corrección de código de C# reemplaza la protección por el atributo automáticamente. Visual Basic código tiene este diagnóstico, pero no tiene una corrección automática; aplique el atributo a mano.

Cuándo suprimir las advertencias

Puede suprimir esta advertencia si la comprobación del entorno es más compleja que una comprobación simple de null de primera instrucción, o si necesita lógica condicional que [CICondition] no pueda expresarse.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

#pragma warning disable MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0080.severity = none

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.

Véase también