Pregunta

Estoy a punto de desplegar una aplicación web MVC que me han encargado de la gestión (no creé la aplicación). El proyecto está compilando en modo de producción sin errores, sin embargo, tengo algunas advertencias - 9 para ser precisos

.

Ahora 6 tienen que ver con el proyecto de prueba que está muy bien, sin embargo hay dos que consiste el proyecto Web. estos errores son:

Código Inalcanzable detecta

En ambos casos estas advertencias se lanzan en el valor de retorno, por ejemplo.

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
    if (true)
    {
        return new ValidationResult("Passwords don't match", new string[] { OriginalProperty });
    }

    return null;
}

En el ejemplo anterior, la línea de "retorno nulo" lanza la advertencia de código inalcanzable.

Esto podría ser una pregunta tonta (así que por favor vaya fácil ;-)), pero lo importante son estas advertencias a la funcionalidad de la aplicación? Obviamente ellos están allí por una razón, pero no son errores, por lo que iba a ser relativamente bien hacer caso omiso de ellos y desplegar?

¿Fue útil?

Solución

Su condición if da siempre como resultado true (if (true)) por lo que este método es equivalente a:

protected override ValidationResult IsValid(object value, 
    ValidationContext validationContext)
{
    return new ValidationResult("Passwords don't match", 
        new string[] { OriginalProperty });
}

Y por eso se entiende la advertencia del compilador. La última línea, que devuelve un valor nulo no podría ser golpeado. En lo que se refiere a ignorar las advertencias que os recomiendo que no ignorarlos. Hay casos en que una advertencia podría conducir en un comportamiento inesperado durante el tiempo de ejecución. Personalmente he comprobado la opción de VS que trata advertencias como errores para asegurarse de que nunca más te una advertencia.

Otros consejos

Lo que dijo Darin.

Esta advertencia particular no afectará el tiempo de ejecución, rendimiento o la fiabilidad. Sin embargo, intento de deshacerse de las advertencias para que, en el desarrollo, no tengo mensajes de advertencia distraerme (como desarrollador) de otros mensajes que podría ser importante y relevante.

Usted podría intentar poner el return null en una rama else recientemente creado de su if. Será todavía no ejecutar, pero si alguna vez cambia true en el if a false, todavía tendrá código correcto. También puede deshacerse de la advertencia de esa manera.

Puede eliminar el código inalcanzable sin cambiar cómo funciona el programa actualmente.

El problema con el código inalcanzable es que podría revelar un error.

En lugar de if(something-that's-always-true) if(something-else-that's-sometimes-false), tal vez el programador en realidad quería decir. En ese caso, puede que tenga que reparar su condicional. O bien, el error puede ser en realidad una "característica" ahora que los usuarios han llegado a apreciar y el cambio que podría hacer que se alteran.

O tal que en realidad quería decir utilizar el if(something-that's-always-true) pero no se dio cuenta que siempre se evalúa como true, por lo que escribió el código inalcanzable "por si acaso". En ese caso, es probable que sólo elimina el código inalcanzable.

Estoy seguro de que hay otras razones para el código inalcanzable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top