2010-11-13 4 views
2

Я готов к развертыванию веб-приложения 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

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

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

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

+0

Спасибо @Darin за ваш ответ. Это хорошо. Считаете ли вы, что было бы хорошо продолжить развертывание с этим предупреждением? – 109221793

+2

В этом конкретном случае это нормально. Но с точки зрения читаемости и поддержания вашего кода я бы не оставил его. Поэтому, если у вас есть доступ к исходному коду, измените его. Это не займет много времени, и он удалит ненужный код, и чем меньше кода у вас будет меньше, чем можно беспокоиться :-) –

+0

Будет делать Дарин, спасибо за помощь! – 109221793

1

Что Дарин сказал.

Это особое предупреждение не повлияет на время исполнения, производительность или надежность. Тем не менее, я стараюсь избавиться от предупреждений, так что в разработке у меня нет предупреждающих сообщений, отвлекающих меня (как разработчика) от других сообщений, которые могут быть важными и актуальными.

Вы можете попробовать положить return null во вновь созданный филиал else вашего if. Он все равно никогда не будет выполнен, но если вы когда-либо измените true в if на false, у вас все равно будет правильный код. Вы также можете избавиться от предупреждения таким образом.

0

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

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

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

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

Уверен, что есть другие причины недостижимого кода.