2

一旦我为代码合同打开代码重写器,我开始发现以前可以工作的代码存在问题。

我有一个protected volatile bool成员字段,它在从我的继承的类中的其他程序集中可见。在我的程序集上启用 ccrewrite 后,对该字段的访问现在会引发 MissingFieldException。

我知道以这种方式公开字段是不好的风格。一旦我更改为公开属性和/或删除易失性标记,问题就会消失。

我目前没有 100% 的代码覆盖率。

我的问题是,我怎样才能仍然依赖代码合同,但让我的代码像以前一样工作?如何找到行为发生变化的所有地方?

代码合同版本 1.4.50327.0

Microsoft (R) .NET Contract Rewriter Version 1.4.50327.0

编辑代码合同中已经完成了一些工作,但发行说明并不出色。具体来说,目前尚不清楚修复了什么。我引用:

发布 1.4.51019.0(2012 年 10 月 19 日)修复了 VS2012 中任务管理器的更多问题。修复了 CCDoc 中的一个错误。其他杂项错误修复。

发布 1.4.50910.0(2012 年 9 月 10 日)修复了任务管理器,使其在 VS2012 中正确运行:静态检查器现在在后台运行,绘制曲线,并且合同建议出现在错误列表中。更新了安装程序,以便在安装后不再需要手动运行“devenv /setup”。它现在作为安装的一部分自动完成。(这使得安装需要更长的时间......)修复了CCDoc中的几个错误。

版本 1.4.50813.1(2012 年 8 月 13 日)错误修复(无处不在!)。性能改进(静态检查器)。精度改进(静态检查器)。修复安装程序和构建文件。

发布 1.4.50327.0(2012 年 3 月 27 日)VS2012 支持!(但您需要在安装后手动运行“devenv /setup”!)错误修复。

4

1 回答 1

1

我在内部版本中修复了这个问题。它将出现在 CodeContracts 的下一个版本中。

编辑 以下是代码合同网站的发行说明:

版本 1.5.60502.11(2013 年 5 月 2 日)

  • 构建脚本修复以不警告 C/C++ 互操作项目缺少合同参考程序集
  • 修复 VB 构造函数提取
  • 从合约调用时,正确处理接口合约中的泛型方法。
  • 修复非空分析中的拆箱处理(避免空解引用)
  • 在静态检查器中更好地处理可空和装箱约束
  • 修复在 F12 上显示 setter 合约(转到元数据)
  • 更强大的编辑器扩展实现检查
  • 减少 ccrewrite 的内存消耗和启动时间
  • 在非空分析中处理 MEF 导入属性
  • 保留对重写器中易失性字段的跨程序集访问。
  • 修复构造函数中存在闭包时合同提取器中的错误。
  • 修复缩写器方法具有静态通用闭包方法时重写器中的错误。
  • 在 4.5 之前的框架版本上支持异步。
于 2013-04-24T21:16:41.003 回答