在VB.NET项目中实施代码契约的编译时检测

时间:2014-01-14 18:02:57

标签: vb.net visual-studio code-contracts compile-time static-code-analysis

我正在尝试在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),我应该得到编译时错误。但是,唉,我没有:

demo

我已从 Visual Studio Gallery 下载了加载项。
我在代码合同属性页上启用了静态代码分析:

PropertyPage

当我在C#中执行相同的步骤时,这是有效的:

working

还有什么可以遗漏?

1 个答案:

答案 0 :(得分:0)

我不熟悉“CodeContracts”,但我会尝试一下。

可能 因为你正在捣乱某些东西,但却把它分成同一行,所以“CodeContracts”可能会认为,“哦,这条线昏暗的东西,继续下一行。“

我的意思是,“CodeContract”正在寻找一个刚刚划分的实际代码行。例如:

result = 5 / 0

而不是:

result = Divide(5, 0)

这也可能就是你要划分的技术,但请记住,我之前从未使用过“CodeContracts”,所以这可能会有所不同,但希望这会有所帮助!