Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| 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.