Suche…


Bemerkungen

Codeverträge ermöglichen die Analyse oder Analyse von Vor- und Nachbedingungen von Methoden sowie von unveränderlichen Bedingungen für Objekte. Diese Bedingungen können verwendet werden, um sicherzustellen, dass Anrufer und Rückgabewert mit gültigen Status für die Anwendungsverarbeitung übereinstimmen. Andere Verwendungen für Codeverträge umfassen die Dokumentationsgenerierung.

Voraussetzungen

Vorbedingungen ermöglicht es den Methoden, minimal erforderliche Werte für Eingabeparameter bereitzustellen

Beispiel...

void DoWork(string input)
{
    Contract.Requires(!string.IsNullOrEmpty(input));

    //do work
}

Statisches Analyseergebnis ...

Geben Sie hier die Bildbeschreibung ein

Nachbedingungen

Nachbedingungen stellen sicher, dass die zurückgegebenen Ergebnisse einer Methode mit der bereitgestellten Definition übereinstimmen. Dadurch erhält der Anrufer eine Definition des erwarteten Ergebnisses. Nachbedingungen können vereinfachte Implementierungen zulassen, da der statische Analysator einige mögliche Ergebnisse liefern kann.

Beispiel...

string GetValue()
{
    Contract.Ensures(Contract.Result<string>() != null);

    return null;
}

Statische Analyse Ergebnis ...

Geben Sie hier die Bildbeschreibung ein

Verträge für Schnittstellen

Mit Codeverträgen ist es möglich, einen Vertrag auf eine Schnittstelle anzuwenden. Dazu wird eine abstrakte Klasse deklariert, die die Schnittstellen implementiert. Die Schnittstelle sollte mit dem ContractClassAttribute und die Vertragsdefinition (die abstrakte Klasse) mit dem ContractClassForAttribute

C # Beispiel ...

[ContractClass(typeof(MyInterfaceContract))]
public interface IMyInterface
{
    string DoWork(string input);
}
//Never inherit from this contract defintion class
[ContractClassFor(typeof(IMyInterface))]
internal abstract class MyInterfaceContract : IMyInterface
{
    private MyInterfaceContract() { }

    public string DoWork(string input)
    {
        Contract.Requires(!string.IsNullOrEmpty(input));
        Contract.Ensures(!string.IsNullOrEmpty(Contract.Result<string>()));
        throw new NotSupportedException();
    }
}
public class MyInterfaceImplmentation : IMyInterface
{
    public string DoWork(string input)
    {
        return input;
    }
}

Statisches Analyseergebnis ...

Geben Sie hier die Bildbeschreibung ein

Codeverträge installieren und aktivieren

Während System.Diagnostics.Contracts im .NET Framework enthalten ist. Um Code Contracts verwenden zu können, müssen Sie die Visual Studio-Erweiterungen installieren.

Suchen Sie unter Extensions and Updates nach Code Contracts und installieren Sie dann die Code Contracts Tools

Code Contract Tools installieren

Nach der Installation der Tools müssen Sie Code Contracts in Ihrer Project-Lösung aktivieren. Zumindest möchten Sie wahrscheinlich die Static Checking aktivieren (Überprüfung nach dem Build). Wenn Sie eine Bibliothek implementieren, die von anderen Lösungen verwendet wird, möchten Sie möglicherweise auch die Runtime Checking aktivieren.

Projekt Einstellungen



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow