问题标签 [code-contracts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
208 浏览

linq - 如何在查询中使用代码合同?

我对代码合同相当陌生......我遇到了一个问题。

我有一个方法 LINQ 查询,它是这样的:

我想在我的项目中实现代码合同。我做的一切都很好,直到我到了这一点。当我运行静态检查器时,它建议我需要添加一些关于在查询中定义的变量 p 和 fAttr 的先决条件(Contract.Requires)。而且,我还有一些未经证实的要求。

我该如何解决这个问题?有任何想法吗?

MyClass 还包含两个前提条件:

提前致谢 :)

0 投票
3 回答
1653 浏览

c# - 使用 CodeContracts 强制执行 INotifyPropertyChanged 的​​正确实施 - “需要未经证实”

我正在寻找一种简单的方法来强制执行 INotifyPropertyChanged 的​​正确实现,即当 PropertyChanged 被引发时,它必须引用实际定义的属性。我尝试使用 Microsoft 的新 CodeContract 工具执行此操作,但我不断收到警告“CodeContracts:需要未经证实”。这是我的代码...

反正有没有让这个工作?

0 投票
2 回答
439 浏览

c# - 代码契约和类型转换

我尝试使用 Microsoft DevLabs Code Contracts 静态分析器,但遇到了我实际上不知道是我还是他们的情况。所以这里是代码:

静态分析器坚持认为无法证明评论后的条件和断言。我看不出它什么时候会出错。

编辑即使我用假设后置条件替换断言仍然未经证实。

0 投票
2 回答
1512 浏览

c# - .Net 4 Code Contracts 静态分析器的任何替代品?

与 .NET 4.0 代码合同一起使用的静态分析器似乎仅适用于 Visual Studio 的团队套件版本 - 这远远超出了我团队的预算。

是否有任何替代方案(开源、免费或价格合理)为按合同样式代码(不一定使用 .net 代码合同)的设计提供类似的静态分析。我猜答案是否定的,因为只有当 BCL 本身有合同时才能获得全部价值——但有没有一部分可以参与其中?

0 投票
2 回答
2293 浏览

c# - Microsoft.Contracts 命名空间

在 asp.net 中有什么必要的 Microsoft.Contracts 命名空间?

我的意思是,在什么情况下我可以写using Microsoft.Contracts;

0 投票
1 回答
755 浏览

msbuild - 如何在 C++/CLI 项目中使用代码协定?

我最近偶然发现了代码契约,并开始在我的 C# 项目中使用它们。但是,我也有一些用 C++/CLI 编写的项目。

对于 C# 和 VB,代码契约在项目属性对话框中提供了一个方便的配置面板。对于 C++/CLI 项目,没有这样的面板。

从文档中,我得到的印象是,将代码契约支持添加到 C++/CLI 项目应该很简单,只需调用一些外部工具作为构建过程的一部分(即ccrefgen.execccheck.execcrewrite.exe)。但是,命令行选项的数量和有关调用顺序的限制让我有些害怕。

任何人都可以指出一种简单的方法来运行代码合同工具作为 Visual Studio 中构建过程的自动化部分吗?

0 投票
1 回答
1000 浏览

visual-studio-2010 - C# 中的单元测试接口契约

使用 VS2010 Beta 2 中提供的 Code Contracts 工具,我定义了一个接口、该接口的一个契约类和两个实现该接口的类。

现在,当我来测试代码时,我想测试实现类,这样我就知道它们的功能是正确的,我想测试合约代码,这样我就知道我的条件是正确的。

我可以在 2 个实现类中的每一个中测试每个合同声明,但这显然是多余的。我可以只在其中一个实现类上编写测试,但这似乎有点错误,如何在它们之间进行选择,在更改合同时记住要更新哪个等。

我想测试实际的接口契约类,但是得到各种编译时警告,我想测试的接口方法在接口契约类上不可用。我知道实际将合同代码注入我的实现类(我可以在 ILDASM 中看到)中发生了编译后魔法,但是当我检查接口合同类方法时,它们在 MISL 中,但为空。

我错过了一些东西,或者是我想做的事情是不可能的。如果不是,那么“最佳实践”是什么?

===编辑===

这里的一个建议是在一个类(测试程序集内部)中实现接口,其目的仅仅是测试接口契约,听起来合理吗?

0 投票
2 回答
144 浏览

.net - 这是静态合同检查器中的错误吗?

如果我写这个:

静态合约检查器可以证明所有断言。

但如果我改写这个:

它声称后置条件owner == null || count > 0未经证实。

我想我可以证明第二种形式不违反这个后置条件:

我的证明有问题吗?

我在证明中添加了断言作为Contract.Assert对代码的调用,我得出的结论是,如果我只添加这个断言,它就可以证明后置条件:

但是,如果我现在将相同的断言更改为“更自然”的方式,它会失败:

预计这两个断言是等价的,但静态检查器对它们的处理方式不同。

(顺便说一下,我使用的是 VS10 的 beta 2)

0 投票
5 回答
3251 浏览

c# - 为什么我在 C# 代码中得到格式错误的合同?

当我在下面编写此合同时,Visual Studio 显示错误。

Error 20 Malformed contract section in method '....get_Page'

if块的问题吗?

编辑

Lasse V. Karisen 发表评论:

怎么样:Contract.Ensures(result == null || result >= 0);

是的,Karisen,我以前试过这个,它可以编译。if但是问题仍然存在:在使用合约时是不是可以有s ?

我遇到的另一个问题是无能为力(主要考虑上面的例子),还涉及使用结果:

0 投票
1 回答
815 浏览

.net - 我需要安装什么才能使代码合同适用于 vs 2010

我的机器上安装了 vs 2008 和 vs 2010 以及来自 devlabs 的代码合同(版本 1.2.21023.14)。它适用于 vs 2008。但是,对于 vs 2010,没有“代码合同”选项卡。有什么我应该安装的吗?