CodeContracts v1.10.20606.1 Release Notes
Release Date: 2016-06-06 // almost 9 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 usingContract.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.
- Proper implementation of async methods postconditions. Now async postconditions are implemented via call to