VB Недоступный код ошибки / предупреждения - PullRequest
5 голосов
/ 31 марта 2009

Я больше года работаю с VB.Net и только что заметил это

Я схожу с ума, или VB.Net НЕ имеет предупреждение "Код недоступен"?

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

Sub Main()
    Console.WriteLine("Hello World")
    Return
    Console.WriteLine("Unreachable code, will never run")
End Sub

Я что-то упустил? Есть ли способ включить это, что я не могу найти.

Если нет, есть ли веская причина для этого упущения? (то есть, или я прав, считая, что это плачевное положение вещей)

Извините, напыщенная речь об этом вопросе, это не напыщенная речь, я хотел бы получить ответ.

Спасибо


Я поднял это на MS Connect , как ошибка # 428529

Update

Я получил следующее от менеджера программы VB Teams

Спасибо, что нашли время сообщить Эта проблема. Компилятор ограничил поддержка этого сценария, и, как вы указать, что у нас нет предупреждений для недостижимый код. Есть некоторые сценарии, что наш анализ потока алгоритм обрабатывает, такие как следующее:

Sub Main()
    Dim x As Integer
    Return
    x = 4
End Sub

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

Ответы [ 4 ]

4 голосов
/ 31 марта 2009

Я предполагаю, что это упущение в компиляторе. Управление потоками - очень сложная проблема, которую можно исправить на любом языке, но особенно на языке, подобном VB, который имеет так много различных механизмов управления потоком. Например,

  • Исключения
  • Goto
  • При ошибке (Resume, Goto и т. Д.)
  • Выездные звонки

Если вы серьезно относитесь к этой проблеме, , пожалуйста, сообщите об ошибке на Connect . Мы очень серьезно относимся к ошибкам, поданным через Connect, и делаем все возможное, чтобы исправить как можно больше.

1 голос
/ 01 апреля 2009

Я хотел бы ответить на ответ Джареда.

Большинство вопросов, которые он поднимает, не являются проблемными для анализа потока данных.

Единственное исключение - «Ошибка / Возобновление». Они плохо анализируют поток данных.

Однако решить проблему довольно просто:

Если в методе используется более одного оператора «On Error» или используется оператор «Resume next», вы можете просто отключить анализ потока данных и выдать общее предупреждение. Хорошим может быть что-то вроде «On Error / Resume устарели, вместо этого используйте исключения». :)

В обычном случае только одного оператора "On Error" и отсутствия оператора "resume" вы можете в значительной степени выполнять обычный анализ потока данных и получать из него разумные результаты.

Большая проблема заключается в способе реализации существующего кода DFA. Он не использует граф потока управления, и поэтому его изменение оказывается очень дорогим. Я думаю, что если вы хотите решить подобные проблемы, вам действительно нужно вырвать существующий код DFA и заменить его чем-то, что использует граф потока управления.

1 голос
/ 31 марта 2009

Они упоминают об этом в следующем посте:

https://stackoverflow.com/questions/210187/usage-statistics-c-versus-vb-net

см. Последнее сообщение.

Полагаю, вы могли бы использовать FXCop для проверки своего кода или получить копию Resharper из:

http://www.jetbrains.com/resharper/

0 голосов
/ 31 марта 2009

AFAIK, вы правы, что VB.NET не предупреждает вас. C # делает, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...