我大部分时间都在使用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。为了 你提到的情况我们会有 看看为实现这一点 未来发布。
答案 0 :(得分:4)
我的猜测是,这是编译器的疏忽。流控制是一个非常难以在任何语言中得到纠正的问题,尤其是在像VB这样具有许多不同流控制机制的语言中。例如,
如果您对此问题表示强烈不满,请在Connect上提交错误。我们非常重视通过Connect提交的错误,并尽可能多地修复。
答案 1 :(得分:1)
他们在以下帖子中提到了这一点:
https://stackoverflow.com/questions/210187/usage-statistics-c-versus-vb-net
见最后一篇文章。
我想您可以使用FXCop来检查您的代码,或者从以下位置获取Resharper的副本:
答案 2 :(得分:1)
我想谈谈贾里德的回答。
他提出的大多数问题对数据流分析都没有问题。
一个例外是“On Error / Resume”。他们搞乱数据流分析非常糟糕。
然而,缓解这是一个非常简单的问题:
如果在方法中使用了多个“On Error”语句,或者使用了“Resume next”语句,则可以关闭数据流分析并报告一般警告。一个好的可能是“On Error / Resume被弃用,而是使用异常”。 :)
在只有一个“On Error”语句和没有“resume”语句的常见情况下,您几乎可以进行正常的数据流分析,并且应该从中获得合理的结果。
最大的问题在于现有DFA代码的实现方式。它不使用控制流图,因此更改它最终会非常昂贵。我想如果你想解决这些问题,你真的需要删除现有的DFA代码,并用一些使用控制流图的代码替换它。
答案 3 :(得分:0)
AFAIK,你是正确的,VB.NET不会给你一个警告。但是,C#确实如此。