.NET Framework
Code-Verträge
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 ...
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 ...
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 ...
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
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.