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 | MSTEST0083 |
| Title | Utilice [ExecutableCondition] en lugar de comprobaciones File.Exists antes de Process.Start |
| Categoría | Usage |
| La corrección es problemática o no problemática | Non-breaking |
| Habilitado de forma predeterminada | Sí |
| 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# |
Importante
Este analizador está planeado para MSTest 4.4 y solo está disponible en compilaciones en versión preliminar hasta que se publique MSTest 4.4.0.
Causa
Un método de prueba comprueba primero si existe un archivo ejecutable y devuelve o llama a Assert.Inconclusive si no existe; a continuación, llama a Process.Start con la misma ruta de acceso del ejecutable.
Descripción de la regla
Use [ExecutableCondition] para declarar que una prueba requiere un ejecutable. El atributo notifica la prueba como omitida cuando MSTest no puede resolver el archivo ejecutable. Un retorno anticipado indica erróneamente que la prueba ha pasado, y una comprobación imperativa oculta el requisito a las herramientas de detección y generación de informes.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
El analizador reconoce una condición de protección en la primera instrucción sin una rama else significativa cuando tanto File.Exists como el posterior Process.Start utilizan la misma ruta de ejecutable constante.
Cómo corregir infracciones
Sustituya la condición por [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
Una corrección de código de C# reemplaza la protección por el atributo . Visual Basic notifica el diagnóstico, pero no proporciona una corrección automática.
Cuándo suprimir las advertencias
Suprima la regla cuando la comprobación de archivos valide los datos en lugar de un requisito previo ejecutable o cuando la prueba necesite un comportamiento que ExecutableConditionAttribute 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 MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
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.MSTEST0083.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.