问题标签 [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 投票
2 回答
1297 浏览

c# - 使用 Contract.Assert(true) 并且方法必须返回一些东西时该怎么办?

我有一些具有以下逻辑的代码:

理论上,总有一个元素是什么,所以这种方法应该没有问题。无论如何,为了确定,我在方法的末尾添加了一个断言:

问题是这个方法必须返回一些东西,编译器不明白断言会破坏程序的执行。在使用 Contracts 之前,在这种情况下,我曾经抛出一个异常,从而解决了问题。你将如何使用 Contract.Assert() 处理这个问题?在 Contract.Assert() 调用之后返回 null 或 default(element_type) 知道它永远不会被调用并关闭编译器?或者还有其他更优雅的方法吗?

谢谢

0 投票
2 回答
608 浏览

c# - Contract.ValueAtReturn() 的使用看起来很尴尬

我正在设计一种将元素添加到内部列表的方法。类的结构大致如下:

现在,我正在考虑Contract.Ensures()通过此调用添加大约 _customers 的大小增加 1。问题是我最终得到了一些看起来很奇怪的代码:

Contract.ValueAtReturn()主要问题是属性实际上是方法,所以当使用它的唯一参数接受变量时,你不能直接引用它们out。如果我想达到同样的效果,情况会变得更加奇怪,但这次使用应该返回值的方法:

这似乎很笨拙:(

代码合同应该旨在让事情变得更清晰,这似乎恰恰相反。难道我做错了什么?

谢谢

0 投票
2 回答
600 浏览

c# - Contract.Exists 如何增加价值?

我刚刚开始了解 VS2010 标配的代码契约库。我马上遇到的一件事是某些合同条款的真正含义。

例如,这两种说法有何不同?

换句话说,Contract.Exists 在实际用途中做了什么,无论是对于使用我的函数的开发人员,还是对于静态代码分析系统?

0 投票
1 回答
8676 浏览

c# - 关于 [Pure] 方法的问题

以下方法纯吗?我会这么说,因为它在当前类中无论如何都不会改变,因此,我们现在可以在类中“看到”的所有内容,在运行此方法之前仍然会完全相同。我对么?

0 投票
6 回答
447 浏览

html - F# 和静态检查的联合案例

很快我和我的兄弟 Joel 将发布Wing Beats的 0.9 版。它是用 F# 编写的内部 DSL。有了它,您可以生成 XHTML。灵感来源之一是 Ocsigen 框架的XHTML.M模块。我不习惯 OCaml 语法,但我理解 XHTML.M 以某种方式静态检查元素的属性和子元素是否为有效类型。

我们无法在 F# 中静态检查同一件事,现在我想知道是否有人知道如何做?

我的第一个天真的方法是将 XHTML 中的每个元素类型表示为一个联合案例。但不幸的是,您不能像在 XHTML.M 中那样静态地限制哪些情况作为参数值是有效的。

然后我尝试使用接口(每个元素类型为每个有效的父元素实现一个接口)和类型约束,但如果不使用显式转换,我无法让它工作,这使得解决方案使用起来很麻烦。无论如何,它并不像是一个优雅的解决方案。

今天一直在看Code Contracts,但是好像和F# Interactive 不兼容。当我按 alt + enter 时,它会冻结。

只是为了让我的问题更清楚。这是同一问题的一个超级简单的人工示例:

我希望 writeVowel 只静态接受元音,而不是像上面那样,在运行时检查它。

我们怎样才能做到这一点?有人有什么主意吗?必须有一个聪明的方法来做到这一点。如果没有联合案例,也许有接口?我一直在为此苦苦挣扎,但被困在盒子里,无法在外面思考。

0 投票
1 回答
408 浏览

c# - 哪个第 3 方 Code-by-Contract 库最像 MS 的 .NET 4.0 库?

我想通过合同跳入编码。我得到了 VS2010(使用 C# 4.0 编译器),但我必须针对 3.5 框架。

合约库中的哪些第 3 方代码具有最类似于 .NET 4.0 的类和接口?

0 投票
3 回答
972 浏览

c# - “合同不能在尝试块中”是什么意思?

我正在为微软代码合同使用 3.5 库

我收到编译器消息:“方法‘Controller.RetrieveById(System.Int32)’中的 try 块中的错误 18 合同部分

更新:

在您的帮助下,我想通了:

  • 移至顶部
  • 检查 Contract.Result

    Contract.Ensures(Contract.Result() != null, "对象不能为空");

0 投票
3 回答
1857 浏览

c# - 那么 C#4.0 代码契约实际上有什么作用吗?

在阅读了System.Diagnostics.Contracts.Contract受 Spec# 影响的静态类之后,我激动不已,并立即开始在我的代码中调用Contract.Requires()Contract.Ensures().

我想这只是因为我的代码非常棒且没有错误,直到最近才出现检查这些调用是否确实做了一些事情。一个错误溜走了,我意识到这些调用没有做任何事情!我原以为他们至少会在违反条件但没有这样的运气时抛出异常。

我错过了什么吗?有谁知道这到底是什么意思?

0 投票
1 回答
535 浏览

.net-4.0 - CodeContracts:ccrewrite 失败,对象引用未设置为对象的实例

下面的代码让 ccrewrite 爆炸了!想法?顺便说一句,如果您注释掉 ActualClass,则 ccrewrite 成功...

提前致谢!

0 投票
4 回答
10161 浏览

.net - .NET 4.0 中代码契约的实际用法是什么?

为了充分理解和利用新的 .NET Framework 4.0 提供的新功能和增强功能,我想获得一个代码协定在实际应用中的示例。

  1. 任何人都有应用此功能的好例子吗?

我想获得一个带有简要说明的代码示例,以帮助我启动并运行它。