Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building with Code Contracts?

I have the following method:

private void DoSomething(CoolClass coolClass)
{
    if (coolClass == null)
    {
        throw new ArgumentNullException("coolClass");
    }
    coolClass.Name = "Pepe";
}

With Code Contracts we can write it like this:

private void DoSomething(CoolClass coolClass)
{
    Contract.Requires<ArgumentNullException>(coolClass != null, "IS NULLL!");
    coolClass.Name = "Pepe";
}

The second method is shorter and simpler. The problem that I have is that when you build it, in runtime it does not throw the exception, it shows this:

Description: An assembly (probably "CodeContractsTest") must be rewritten using the code contracts binary rewriter (CCRewrite) because it is calling Contract.Requires and the CONTRACTS_FULL symbol is defined. Remove any explicit definitions of the CONTRACTS_FULL symbol from your project and rebuild. CCRewrite can be downloaded from http://go.microsoft.com/fwlink/?LinkID=169180. After the rewriter is installed, it can be enabled in Visual Studio from the project's Properties page on the Code Contracts pane. Ensure that "Perform Runtime Contract Checking" is enabled, which will define CONTRACTS_FULL.

Unless with VS you download the CodeContracts for .net from here.

And then you check the "Runtime check" in the project, so that when you build it in runtime, the exception is thrown.

Our app is build with Jenkins with PowerShell scripts. Is there any way to check in runtime and throw the exception, with a simple command or attribute, or something easy?

like image 810
elranu Avatar asked Sep 13 '13 19:09

elranu


People also ask

What are code contracts?

Code Contracts provide a language-agnostic way to express coding assumptions in . NET programs. The contracts take the form of preconditions, postconditions, and object invariants. Contracts act as checked documentation of your external and internal APIs.

Which of the following methods is used in pre conditions and post conditions for code contracts in net?

NET 4.0. Code Contracts API includes classes for static and runtime checks of code and allows you to define preconditions, postconditions, and invariants within a method.

What is Design by Contract in software engineering?

Design By Contract (DbC) is a software correctness methodology. It uses preconditions and postconditions to document (or programmatically assert) the change in state caused by a piece of a program. Design by Contract is a trademarked term of BertrandMeyer and implemented in his EiffelLanguage as assertions.


1 Answers

By changing following project properties I could eliminate getting this exception while running.

Right click on project -> Properties -> Code Contract (Tab) change the assembley mode to "Standard Contract Requires" also select checkbox - Perform Runtime contract checking

like image 169
NidhinSPradeep Avatar answered Sep 23 '22 16:09

NidhinSPradeep