VB无法访问代码错误/警告

时间:2009-03-31 13:21:52

标签: vb.net compiler-construction

我大部分时间都在使用VB.Net超过一年,并且注意到了这个

我是疯了,还是VB.Net 有“无法访问的代码”警告?

以下编辑非常愉快地发出警告或错误,即使两个写线调用之间有回复。

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

我错过了什么吗?是否有某种方法可以将其切换为我无法找到的。

如果没有,是否有充分理由将其遗漏? (或者我认为这是一种悲惨的事态我是对的)

原谅这个问题的咆哮,这不是咆哮,我想要一个答案。

由于


我在MS Connect上提出了这个问题,因为错误#428529

更新

我从VB团队项目经理

收到以下内容
  

感谢您抽出宝贵时间进行举报   这个问题。编译器有限   支持这种情况,就像你一样   指出我们没有警告   无法访问的代码。有一些   我们的流量分析场景   算法确实处理,如   以下内容:

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

在这种情况下,你会收到警告   从未分配过x。为了   你提到的情况我们会有   看看为实现这一点   未来发布。

4 个答案:

答案 0 :(得分:4)

我的猜测是,这是编译器的疏忽。流控制是一个非常难以在任何语言中得到纠正的问题,尤其是在像VB这样具有许多不同流控制机制的语言中。例如,

  • 例外
  • 后藤
  • On Error(Resume,Goto等)
  • 退出电话

如果您对此问题表示强烈不满,Connect上提交错误。我们非常重视通过Connect提交的错误,并尽可能多地修复。

答案 1 :(得分:1)

他们在以下帖子中提到了这一点:

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

见最后一篇文章。

我想您可以使用FXCop来检查您的代码,或者从以下位置获取Resharper的副本:

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

答案 2 :(得分:1)

我想谈谈贾里德的回答。

他提出的大多数问题对数据流分析都没有问题。

一个例外是“On Error / Resume”。他们搞乱数据流分析非常糟糕。

然而,缓解这是一个非常简单的问题:

如果在方法中使用了多个“On Error”语句,或者使用了“Resume next”语句,则可以关闭数据流分析并报告一般警告。一个好的可能是“On Error / Resume被弃用,而是使用异常”。 :)

在只有一个“On Error”语句和没有“resume”语句的常见情况下,您几乎可以进行正常的数据流分析,并且应该从中获得合理的结果。

最大的问题在于现有DFA代码的实现方式。它不使用控制流图,因此更改它最终会非常昂贵。我想如果你想解决这些问题,你真的需要删除现有的DFA代码,并用一些使用控制流图的代码替换它。

答案 3 :(得分:0)

AFAIK,你是正确的,VB.NET不会给你一个警告。但是,C#确实如此。