问题标签 [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.
.net - .NET Guard 类库?
我正在寻找提供保护方法(例如检查空参数)的库或源代码。显然,这很容易构建,但我想知道是否已经有任何 .NET 可用。一个基本的谷歌搜索并没有透露太多信息。
code-contracts - 基于契约的编程
有人可以解释一下 Spec# 可能会转移到 C# 4.0 中的关于代码合同的概念吗?
- 什么是代码合同(看起来是编译时检查模式)
- 我应该为此感到兴奋吗?
- 假设我们将运行时检查转移到编译时,我是否正确?
谢谢!
.net - 如何使用代码协定指示方法永远不会返回 null?
如何指示方法从不返回 null?目前这是我的代码。
第 19 行得到一条 Ensures notroved 消息,即使 CreateFunction 假定结果不是空的。
validation - Microsoft 代码合同框架有多成熟?
微软最近在 DevLabs 上发布了他们的Code Contracts框架,并获得了商业许可。我们有兴趣在我们的项目中使用它们(主要是 C#,一些 C++/CLI)来逐步替换所有自定义验证代码,但我很想知道在我们承诺之前其他人使用它的经验,具体来说:
您认为该框架对于大型复杂的商业项目是否足够成熟?
你在使用过程中遇到了什么问题?
你从中得到了什么好处?
目前是否比它的价值更痛苦?
我意识到这是一个有点主观的问题,因为它需要意见,但鉴于这个框架是 .NET 4.0 的一个非常重要的部分,并且会(可能)改变我们所有人编写验证代码的方式,我希望这个问题将被留下愿意收集有关该主题的经验,以帮助我对一个具体的、可回答的问题做出决定:
我们应该下个月开始使用它吗?
请注意,我们不提供代码 API,仅提供 Web 服务,因此对于大多数代码破坏兼容性而言,抛出的异常类型不是问题。然而,由于我希望更多的人能从这篇文章及其答案中受益,因此任何关于这个领域的细节都非常受欢迎。
.net - 您使用什么工具来进行合同设计?
我曾经使用Microsoft CodeContracts三周,现在我的一半代码只是合同。我有几十个未经证实的地方,我不能使用运行时检查,因为 IL 重写会阻止覆盖工具显示某些内容,并且编译时间少于可以接受的时间。
我不喜欢这个。现在似乎是寻求帮助的好时机。什么工具用于您的常规开发?
.net - 在我的 Web 项目中使用代码契约将如何影响部署?
如果在应用程序中使用代码契约,那么我们是否需要在生产服务器上安装任何东西(来自代码契约包),例如将程序集放入 GAC 或在生产服务器上运行代码契约安装包?
或者只是将库放在 bin 文件夹中会起作用?
c# - ReSharper - 使用 Microsoft.Contracts 时可能的空分配
有没有办法向 ReSharper 表明由于按合同设计需要检查而不会发生空引用?例如,以下代码将Possible 'null' assignment to entity marked with 'NotNull' attribute
在 ReSharper 中的第 7 行和第 8 行引发警告 ( ):
真正奇怪的是,如果您删除该Contract.Requires(...)
行,ReSharper 消息就会消失。
更新
我通过下面的 Mike 也提到的 ExternalAnnotations 找到了解决方案。下面是如何为 Microsoft.Contracts 中的函数执行此操作的示例:
- 在ReSharper 目录
Microsoft.Contracts
下创建一个名为的目录。ExternalAnnotations
- 接下来,创建一个名为
Microsoft.Contracts.xml
并填充的文件,如下所示:
- 重新启动 Visual Studio,消息消失!
.net - Microsoft 合同:程序集加载导致元数据导入警告
我正在尝试了解Microsoft Code Contracts库的方法,并且我具有以下简单功能:
尝试编译时,contracts 静态编译器会抛出以下警告消息:
然后立即放弃(并且不尝试进行任何进一步的合同处理)。如果我删除设置的代码,DefaultToolsVersion
则合同验证程序可以正常工作,但这毫无意义,因为它会导致代码不正确。
我在谷歌上找不到任何提及...有什么方法可以解决这个问题,还是只是合同库中的一个错误?(诚然,它处于预发布状态)
谢谢
c# - 带有代码合约的迭代器中的错误?
以下代码在前提条件下失败。这是代码合同中的错误吗?
asp.net - Microsoft 代码合同可以与 ASP.NET 网站一起使用吗?
我目前在 ASP.NET MVC 应用程序中使用Microsoft Code Contracts没有任何问题,但我似乎无法在基本的 ASP.NET 网站中完全运行它。我不完全确定它是否适用于这种类型的项目(尽管它不应该重要)所以我想把它带给每个人。
我可以很好地编译合同,但代码会跳过它们,因为我假设它没有像在其他项目类型(即 ASP.NET MVC)中那样通过属性页面启用。我已经在我的 ASP.NET 网站中访问了项目的属性页面(显示对话框而不是典型的属性页面),但它没有产生相同的菜单选项,因此没有专门的部分到代码合同。
此外,我在一个类库项目中正确启用了 Microsoft 代码合同,我用它来将我的业务逻辑与网站分开。合同编译得很好,但是当违反合同时,它会抛出一个相当无信息的"Exception of type 'System.ExecutionEngineException' was thrown"
错误,没有内部异常。我的合同指定了在违规时显示的消息,但它不在例外范围内。它只是停止进程的执行(我相信这是 Microsoft 代码合同的默认功能)。
我找不到任何明确说明特定项目类型可以或不能(或不应该)与合同一起使用的地方,所以我只是想看看是否有人遇到过这个问题。
谢谢你的帮助!