vb.net - 在 VB.NET 项目中强制执行代码契约的编译时检测

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

我正在尝试设置 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),我应该会收到编译时错误。但可惜的是,我不:

demo

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

PropertyPage

当我在 C# 中执行相同的步骤时,这会起作用:

working

还可能缺少什么?

最佳答案

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

可能是因为您正在调暗某些内容,但将其划分在同一行中,因此“CodeContracts”可能会认为,“哦,这一行正在调暗某些内容,请转到下一行。”

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

result = 5 / 0

代替:

result = Divide(5, 0)

这也可能只是您进行划分的技术,但请记住,我以前从未使用过“CodeContracts”,所以这可能还很遥远,但希望这会有所帮助!

关于vb.net - 在 VB.NET 项目中强制执行代码契约的编译时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120688/

相关文章:

vb.net - 如何关闭锁定的 PC (vb.net)?

vb.net - 如何清除vb.net中的组合框内容

vb.net - VB.net如何设置DataGridView的大小

c# - 如何在 VS 2010 中为 XAML 设计器初始化类?

c# - 代码约定的条件属性异常

.net - .NET 中的代码约定、测试、断言和异常,何时使用?

javascript msgbox if 语句

c# - 如何实现不按字母顺序排列的接口(interface)属性

c# - 如何在 .NET Core 中正确使用代码契约