我正在尝试在VB.NET项目中设置Code Contracts。
这是一个真正简单的方法,应该确保传入的除数参数不为零:
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#中执行相同的步骤时,这是有效的:
还有什么可以遗漏?
答案 0 :(得分:0)
我不熟悉“CodeContracts”,但我会尝试一下。
可能 因为你正在捣乱某些东西,但却把它分成同一行,所以“CodeContracts”可能会认为,“哦,这条线昏暗的东西,继续下一行。“
我的意思是,“CodeContract”正在寻找一个刚刚划分的实际代码行。例如:
result = 5 / 0
而不是:
result = Divide(5, 0)
这也可能就是你要划分的技术,但请记住,我之前从未使用过“CodeContracts”,所以这可能会有所不同,但希望这会有所帮助!