Анализатор обнаружил код, который никогда не будет выполнен. Возможно, допущена ошибка в логике программы.
Данная диагностика находит блоки кода, до которых никогда не дойдёт управление.
Рассмотрим пример:
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. |