CodeContracts v1.10.20606.1 Release Notes

Release Date: 2016-06-06 // over 4 years ago
  • Summary

    ๐Ÿš€ Second community-driven release of the DotNet CodeContracts that is mostly focused on minor bug fixes.

    ๐Ÿ“ฆ Nuget Package

    ๐Ÿ“ฆ DotNet.CodeContracts at nuget.org

    ๐Ÿ› Bug fixes

    • #221 - [VS2015] ccrewrite fails with CC1004: Malformed contract. Found Requires after assignment in method
    • #339 - string.IsNullOrWhiteSpace() not considered Pure by Requires() or Invariant() when running on .NET 4.6.1
    • #340 - ccrewrite fails to read assembly that has non-escaped comma in nested type names
    • #346 - Invalid contract for System.Xml.Schema.XmlSchemaSet
    • #349 - Possible invalid contract in System.Linq.Expression.NewExpression
    • #351 - Invalid contract for System.Dynamic.BindingRestrictions
    • #352 - Add contracts for System.Drawing.Imaging.EncoderParameters
    • #365 - Access to instance members in async postconditions lead to invalid IL
    • #410 - For 64-bit assemblies, preserve the imagebase value when rewriting.
    • #414 - BCL: System.Type.GetMethods() is missing on ensures
    • #424 - Static checker cannot prove compiler-generated Expressions are created safely.
    • #423 - cccheck: Cached analysis gets horrendously slow over time

    Acknowledgements

    ๐Ÿš€ Thank you goes to all of the following users, who contributed feedback, bug reports, code submissions, testing, and reviews which helped in this release. In alphabetical order by username.


Previous changes from v1.10.10126.2

  • Summary

    ๐Ÿš€ This is the first major community-driven release of the DotNet CodeContracts. This release addresses a lot of pending issues with installer, new IL patterns introduced by Roslyn Csc compiler, and more reasonable implementation of the postconditions in async methods, a lot of changes in the BCL contracts and more.

    ๐Ÿ“ฆ Nuget Package

    ๐Ÿ“ฆ DotNet.CodeContracts at nuget.org

    ๐Ÿ‘Œ Improvements and new features

    • Proper implementation of async methods postconditions. Now async postconditions are implemented via call to ContinueWith method that checks a postcondition only when task finishes successfully (more details at #278).
    • ๐Ÿ”€ Postcondition for async method now runs synchronously to reduce additional overhead (#275).

    โšก๏ธ Updated contracts for BCL types

    • โž• Added missing contracts in System.Linq.Expressions.Expression (#171)
    • Contracts for System.Reflection.CustomAttributeExtensions (#180)
    • String.IndexOfAny contract incorrect (#200)
    • False contract assumption encountered on System.Decimal.op_Explicit (#203)
    • โž• Added missing contracts in Directory class (#251)
    • โž• Add missing contracts in System.Windows.Input.InputManager (#285)
    • โž• Add missing contracts in System.Windows.Data.MultiMinding (#286)
    • Extend postcondition on Path.GetTempFileName (#305)
    • Contracts for System.Version (#318)
    • Contract reference assemblies for .NET Framework (#291)
    • โšก๏ธ Update System.Threading.Tasks.Task for NET4.5/4.6 (#296)
    • โž• Add contracts for System.OperatingSystem (#306)

    ๐Ÿ› Bug fixes

    Installation + VS Integration issues

    • โšก๏ธ Update/uninstall leaves VS2013 extension behind (#7)
    • Installer creates a C:\VS11Root folder (#8)
    • โš  Static checker warnings showing in the wrong pane is VS2015 (#166)

    Async + Iterators + VS2015 issues

    • Async/iterator issue in async without await (#172)
    • Static checker: recognizing cached anonymous delegate fields produced by Roslyn (#182)
    • ccrewrite produces an incorrect type name in
    • Static checker can't prove ForAll on Roslyn-compiled inline arrays (#204)
    • BadImageFormatException when using Contract.Ensures in async method, that returns task without any await (#235)
    • NullReferenceException in ccrewrite-generated code (#191)
    • ๐Ÿ“š Contract.Require(x != null) gets translated in!(x <= null)` in the documentation rewritten by CC (#307)
    • Using capturing precondition in async method in struct lead to invalid IL (#168)

    ๐Ÿ›  Other bug fixes

    • Sql exceptions: String or binary data would be truncated (#165)
    • Malformed Contract. Found Requires after assignment (#29)
    • Bad application of visibility rules on method parameter attribute (#273)

    Misc

    • ๐Ÿ’… Code was reformatted to follow well-known .NET coding conventions using StyleCopAnalyzers
    • โœ… All unit tests were migrated from MS Test to Xunit
    • ๐Ÿ“ฆ CodeContracts as NugetPackage (#13)

    Acknowledgements

    ๐Ÿš€ Thank you goes to all of the following users, who contributed feedback, bug reports, code submissions, testing, and reviews which helped in this release. In alphabetical order by username.