【问题标题】:Code Contracts Ensures for ReSharper ExternalAnnotations代码契约确保 ReSharper ExternalAnnotations
【发布时间】:2013-06-23 03:51:30
【问题描述】:

有谁知道如何在 ReSharper ExternalAnnotations 中添加 Code Contracts Ensures?它不在最新的 v7.1.3 和最新的 v8 EAP 中,也没有在任何浮动的自定义 xml 中。

具体来说,它应该检测方法是否返回 null:Contract.Ensures(Contract.Result<T>() != null);

【问题讨论】:

  • 您所描述的不是可以通过外部注释来描述的。要让 R# 检测到这一点,您需要使用专门用于检测此类语句的分析器编写自己的插件。
  • @DmitriNesteruk:ReSharper v7 附带了自己的合同 (blogs.jetbrains.com/dotnet/2012/08/…),它扩展了注释 - 如果您的意见也基于此,那么添加一个答案,我会接受它。 .

标签: c# resharper code-contracts


【解决方案1】:

如果您试图简单地安抚分析引擎,最简单的使用方法是在方法声明前使用[NotNull]。您在上面发布链接的合同注释是一种更强大的机制,用于定义输入参数和返回值之间的关系,例如,[ContactAnnotation("null => null")]

但是,显式分析 Contract.Ensures 语句是一个完全不同的命题,因为无法通过 [ContractAnnotation] 或任何其他 ReSharper 注释属性为此语句定义自动分析。

【讨论】:

  • 是的,我知道这一切,是的,这毕竟是不可行的 - 只是因为属性需要以某种方式隐含在包含代码合同的方法中,而不是代码中的内容合同本身......哦,好吧,无论如何谢谢 - 请更正你的答案(Ensures而不是Requires)以免混淆人们,我会接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
相关资源
最近更新 更多