Анализатор обнаружил код, который никогда не будет выполнен. Возможно, допущена ошибка в логике программы.
Данная диагностика находит блоки кода, до которых никогда не дойдёт управление.
Рассмотрим пример:
static void Foo() { Environment.Exit(255); Console.WriteLine("Hello World!"); }
Функция 'Console.WriteLine (....)' недостижима, так как функция 'Exit()' не возвращает управление. Как правильно исправить код, зависит от того, какую логику поведения задумывал программист изначально. Возможно, нарушен порядок выражений и корректный код должен быть таким:
static void Foo() { Console.WriteLine("Hello World!"); Environment.Exit(255); }
Рассмотрим ещё один пример:
static void ThrowEx() { throw new Exception("Programm Fail"); } public void SetResponse(int response) { ThrowEx(); Debug.Assert(false); //should never reach here }
В данном примере межпроцедурный анализ проверяет метод 'ThrowEx' и предупреждает, что код после вызова метода недостижим. Если такое поведение ожидаемо - вы можете отметить предупреждение как ложное.
public void SetResponse(int response) { ThrowEx(); Debug.Assert(false); //should never reach here //-V3142 }
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3142. |