代码之家  ›  专栏  ›  技术社区  ›  Binary Worrier

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

  •  5
  • Binary Worrier  · 技术社区  · 17 年前

    我在VB.Net上工作了一年多,刚刚注意到这一点

    是否有“无法访问代码”警告?

    下面的编译非常愉快,没有任何警告或错误,即使两个writeline调用之间有返回。

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

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

    谢谢


    这是我提出来的 MS Connect ,作为bug#428529

    我从VB团队项目经理处收到以下消息

    这个问题。编译器限制了 对该场景的支持,以及 请指出,我们没有警告 无法访问的代码。有一些 我们的流程分析中需要的场景 算法不处理,例如 以下:

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

    在这种情况下,您将得到一个警告 从未分配过x。对于 你提到的案例,我们将有 要想在未来几年内实现这一点 未来版本。

    4 回复  |  直到 17 年前
        1
  •  4
  •   JaredPar    17 年前

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

    • 例外情况
    • 错误时(恢复、转到等…)

    提交错误 Connect . 我们非常认真地对待通过Connect提交的bug,并尽最大努力修复尽可能多的bug。

        2
  •  1
  •   Community Mohan Dere    9 年前

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

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

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

        3
  •  1
  •   Scott Wisniewski    17 年前

    我想谈谈杰瑞德的回答。

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

    唯一的例外是“出错/恢复”。他们把数据流分析搞得一团糟。

    如果一个方法中使用了多个“On Error”语句,或者使用了“Resume next”语句,则可以关闭数据流分析并报告一般警告。一个好的例子可能类似于“当错误/恢复被弃用时,请改用异常。”:)

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

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

        4
  •  0
  •   Jakob Christensen    17 年前

    好吧,你是对的,VB.NET没有给你一个警告。不过,C#做了。