Обнаружен недоступный код - PullRequest
2 голосов
/ 13 ноября 2010

Я готов развернуть веб-приложение MVC, которое мне поручено управлять (я не создавал приложение).Сейчас проект компилируется в производственном режиме без ошибок, однако у меня есть несколько предупреждений - 9, если быть точным.

Теперь 6 относятся к тестовому проекту, что нормально, однако есть два, которые связаны с Интернетом.проект.эти ошибки:

Обнаружен недоступный код

В обоих случаях эти предупреждения выводятся на возвращаемое значение, например

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

    return null;
}

В приведенном вышеНапример, строка «return null» выдает предупреждение о недоступном коде.

Это может быть глупый вопрос (поэтому, пожалуйста, будьте спокойны ;-)), но насколько важны эти предупреждения для функциональности приложения?Очевидно, что они существуют по какой-то причине, но они не являются ошибками, так что я могу относительно спокойно проигнорировать их и развернуть?

Ответы [ 3 ]

3 голосов
/ 13 ноября 2010

Ваше условие if всегда оценивается как true (if (true)), поэтому этот метод эквивалентен:

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

И именно поэтому вы получаете предупреждение компилятора.Последняя строка, которая возвращает ноль, никогда не может быть нажата.Что касается игнорирования предупреждений, я бы порекомендовал вам никогда не игнорировать их.В некоторых случаях предупреждение может привести к неожиданному поведению во время выполнения.Лично я проверил опцию в VS, которая рассматривает предупреждения как ошибки, чтобы никогда не пропустить предупреждение.

1 голос
/ 13 ноября 2010

То, что сказал Дарин.

Это конкретное предупреждение не повлияет на время выполнения, производительность или надежность.Однако я стараюсь избавиться от предупреждений, чтобы в процессе разработки у меня не было предупреждающих сообщений, отвлекающих меня (как разработчика) от других сообщений, которые могут быть важными и актуальными.return null во вновь созданную else ветку вашего if.Он по-прежнему никогда не будет выполняться, но если вы когда-нибудь измените true в if на false, у вас все равно будет правильный код.Вы также можете избавиться от предупреждения таким образом.

0 голосов
/ 13 ноября 2010

Вы можете безопасно удалить недоступный код, не изменяя при этом работу программы.

Проблема с недоступным кодом заключается в том, что он может выявить ошибку.

Вместо этогоif(something-that's-always-true), возможно, программист действительно имел в виду if(something-else-that's-sometimes-false).В этом случае вам, возможно, придется исправить свое условие.Или, на самом деле, ошибка может быть «функцией» теперь, когда пользователи стали ценить ее, и ее изменение может расстроить их.

Или, может быть, они действительно хотели использовать if(something-that's-always-true), но не осознавали этоговсегда оценивается как true, поэтому они написали недоступный код «на всякий случай».В этом случае вы, вероятно, просто удалите недоступный код.

Я уверен, что существуют другие причины недоступного кода.

...