CodeContractsRemover 1.0.8
See the version list below for details.
dotnet add package CodeContractsRemover --version 1.0.8
NuGet\Install-Package CodeContractsRemover -Version 1.0.8
<PackageReference Include="CodeContractsRemover" Version="1.0.8" />
paket add CodeContractsRemover --version 1.0.8
#r "nuget: CodeContractsRemover, 1.0.8"
// Install CodeContractsRemover as a Cake Addin #addin nuget:?package=CodeContractsRemover&version=1.0.8 // Install CodeContractsRemover as a Cake Tool #tool nuget:?package=CodeContractsRemover&version=1.0.8
Introduction
Tool for removing .NET Code Contracts from source code. Currently only C# is supported. I will gladly accept PR with VB support.
.NET 4.7.1 is required to run this application.
Installation
Install-Package CodeContractsRemover
or
Download and un-zip from https://www.nuget.org/api/v2/package/CodeContractsRemover
Usage
Tool is located at "PROJECT_DIR/packages/CodeContractsRemover.VERSION/tools/".
CodeContractsRemover.exe <Convert|Stats> <directoryPath> [--searchPattern *.cs *.csproj] [--encoding utf-8] [--ignorePattern .svn/ ]
Example
CodeContractsRemover.exe Convert ./myproject
To run using mono on Mac OS X
/Library/Frameworks/Mono.framework/Commands/mono code_contracts_remover.exe Convert ./myproject
To run using mono on Linux
/usr/bin/mono code_contracts_remover.exe Convert ./myproject
Modes
Mode - Convert
- Converts all Contract.Requires to "if(!x) throw new ArgumentException()" pattern at the beginning of method/property/constructor.
- Converts all Contract.Ensures to "if(!x) throw new InvalidOperationException()" pattern before each return incide method/property/constructor.
- Converts all Contract.Assert and Contract.Assume to "if(!x) throw new ArgumentException()" pattern.
- Invokes invariant methods before each return incide method/property/constructor.
- Preserves all other Contract invocations (including Attributes and Contract classes).
- Removes CodeContract properties and constants from project files
#### Mode - Remove
- Removes any Contract invocations.
- Invariant methods are preserved
- Attributes and Contract classes are removed
- Removes CodeContract properties and constants from project files
Mode - Stats
- Collects statistics about how Contracts are used. Example of result:
[ContractClassFor] 1
[ContractInvariantMethod] 2
Contract.Assert 1
Contract.Ensures 6
Contract.Invariant 2
Contract.Requires 6
Contract.Result 5
Annotation modes
In Convert mode Jet Brains annotations ([NotNull]) can be added to class members. Jet Brains annotations are added using JetBrains.Annotations NuGet package.
Mode - None
Don't add annotations
Mode - Add
Include annotations only for work in Visual Studio/Rider before compilation. When project is compiled, annotations would be removed. When dll is referenced into other project, Rider/Re# wouldn't show hints. This mode is recommended for applications. Read more on Jet Brains site.
Mode - IncludeIntoBinaries
Annotations will be included into binaries, so Rider/Re# would show hints before and after compilation (when binary is referenced into other project). This mode is recommended for packages. Read more on Jet Brains site.
Contributors
- @ishatalkin
- @mgaffigan
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.7.2
- ConsoleApp.CommandLine (>= 1.3.4)
- Microsoft.Build (>= 16.6.0)
- Microsoft.CodeAnalysis (>= 3.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.