代码合同静态检查

时间:2014-08-06 22:44:47

标签: c# .net-4.5 code-contracts

我有一段使用代码合同的代码,我希望在编译时失败

...
int myInt = -1;
Contract.Ensures(myInt > 0);
...

使用合同的行显示为灰色,我得到一个工具提示,“跳过方法调用。编译器不会生成方法调用,因为该方法是有条件的,或者是没有实现的部分方法。”

以下是该项目属性的代码合同的屏幕截图:http://screencast.com/t/Q0famE8TR2

我正在使用.net 4.5。

1 个答案:

答案 0 :(得分:1)

该消息来自ReSharper,即使你没有提及,我也认为你正在使用它。 ReSharper不了解Code Contracts的工作原理。

具体而言,它不知道“合同”页面设置会导致CONTRACTS_FULL自动定义。如果要删除这些警告,则需要在项目的正常“构建属性”页面上将CONTRACTS_FULL显式添加到条件定义列表中。