根据此功能矩阵 ,Visual Studio 2010 Premium(RC)包括“静态代码分析”。

但是,在我的方法开头添加对 Contract.Requires 的调用似乎没有任何效果。如果合同被违反,我不会得到运行时异常。如果无法证明合同,我不会收到编译器警告。我也找不到“代码合同”。项目设置中的选项卡。

我是否遗漏了一些显而易见的内容,或者此功能仅在Ultimate版本中提供?

有帮助吗?

解决方案

对于VS2010的beta 2,甚至VS2010本身的框架中是否包含Code Contracts,似乎确实存在一些混淆。 代码合同论坛(特别是这个帖子有几个提及到目前为止还没有答案。


我不认为Code Contracts属于静态代码分析的标题。我认为静态代码分析涉及其他代码分析工具,如FxCop。

我尝试在VS2010 beta 2终极版中使用 Contract.Requires ,但我得到了与你相同的行为。如果查看“代码分析”选项卡下的项目属性,则可以启用代码分析,但这与代码约定无关。

根据Melitta(来自基类库团队)对连接文章使专业版中的数据合同静态检查

  

...但静态分析工具的限制代表即将发布的版本。它使代码分析故事保持一致,因为静态分析工具需要VSTS。

这表明您(将)必须拥有团队系统版本才能获得代码合同的编译时版本。

其他提示

要在Beta 2中进行静态分析,您必须从 MSDN DevLabs 。然后在项目属性下,现在会有一个Code Contracts选项卡......从这里你可以打开静态分析......

您所看到的行为是因为Code Contracts API位于mscorlib程序集中,它允许断言起作用,但没有别的。

我认为RTM不需要这样做。

您需要在项目属性中打开代码合同运行时检查。如果该设置窗格不存在,则需要安装Microsoft的Code Contracts下载(尽管框架中存在Contract.Requires)。

专业版仅提供运行时检查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top