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 | MSTEST0079 |
| Title | Uso del atributo ArchitectureCondition en lugar de comprobaciones en tiempo de ejecución |
| 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 se ProcessArchitecture compara con un Architecture valor y, a continuación, devuelve las primeras llamadas Assert.Inconclusiveo , en lugar de usar el [ArchitectureCondition] atributo .
Descripción de la regla
Los métodos de prueba que comparan RuntimeInformation.ProcessArchitecture y, a continuación, devuelven o llaman Assert.Inconclusive temprano deben usar el [ArchitectureCondition] atributo en su lugar. El atributo es más declarativo y detectable, y notifica la prueba como omitida en lugar de superada, lo que no es un retorno anticipado.
[TestMethod]
public void TestMethod()
{
if (RuntimeInformation.ProcessArchitecture != Architecture.X64) return; // Violation
}
El analizador solo reconoce la protección cuando es la primera instrucción del método, sin else rama, y cuando el miembro al que se hace referencia tiene una marca coincidente TestArchitecturesArchitecture.
Cómo corregir infracciones
Reemplace la comprobación en tiempo de ejecución por el [ArchitectureCondition] atributo .
[TestMethod]
[ArchitectureCondition(TestArchitectures.X64)]
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 en tiempo de ejecución es más compleja que una protección simple de primera instrucción o si necesita lógica condicional que [ArchitectureCondition] 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 MSTEST0079
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0079
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.MSTEST0079.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.