我正在尝试设置 Code Contracts在 VB.NET 项目中。
这是一个真正简单的方法,应确保传入的除数参数不为零:
Public Function Divide(ByVal numerator As Integer, ByVal divisor As Integer) As Double
Contract.Requires(Of ArgumentOutOfRangeException)(divisor <> 0, "Divide By Zero Not Allowed")
Return numerator / divisor
End Function
如果我调用 Divide(5, 0)
,我应该会收到编译时错误。但可惜的是,我不:
我已从 Visual Studio Gallery 下载了该加载项。
我在代码契约属性页上启用了静态代码分析:
当我在 C# 中执行相同的步骤时,这会起作用:
还可能缺少什么?
最佳答案
我不熟悉“CodeContracts”,但我会尝试一下。
可能是因为您正在调暗某些内容,但将其划分在同一行中,因此“CodeContracts”可能会认为,“哦,这一行正在调暗某些内容,请转到下一行。”
我的意思是,“CodeContract”正在寻找刚刚分割的实际代码行。例如:
result = 5 / 0
代替:
result = Divide(5, 0)
这也可能只是您进行划分的技术,但请记住,我以前从未使用过“CodeContracts”,所以这可能还很遥远,但希望这会有所帮助!
关于vb.net - 在 VB.NET 项目中强制执行代码契约的编译时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120688/