Visual Studio 2010 Beta 1 wird mit Code Contracts in mscorlib.dll geliefert, sodass der entsprechende Namensraum von Haus aus verfügbar ist. Um jedoch die Vorteile der Integration in Visual Studio nutzen zu können, muss man das Code Contracts-Paket herunterladen und installieren. (Es gibt eine akademische und eine kommerzielle Lizenz, die beide kostenlos sind.)
Als Nächstes sollte sichergestellt sein, dass eine Referenz auf die Code-Contracts-Assembly hinzugefügt ist. Klassen, die Code Contracts verwenden, sollten eine Referenz auf den Namensraum System.Diagnostics.Contracts hinzufügen.
Und schließlich wird man feststellen, dass unter den Projekteigenschaften nun eine Registerkarte für Code Contracts hinzugekommen ist. Auf dieser Eigenschaftenseite kann man Code Contracts für die Laufzeitüberprüfung und statische Analysen aktivieren und deaktivieren. Darüber hinaus lassen sich die Einstellungen dieser beiden Systeme auf der Eigenschaftenseite vornehmen.
Wichtige Hinweise: Die Konfiguration ist mit den Kompilierungseinstellungen verknüpft. Das bedeutet, dass man bestimmte Funktionen für Release Builds selektiv deaktivieren kann, sodass der Produktionscode keinen Code enthält, der noch nicht produktionsreif ist (Code Contracts ist noch kein endgültiges Release). Darüber hinaus benötigt die Validierung auch einiges an Rechenressourcen, und ihr standardmäßiges Verhalten (wie im Folgenden beschrieben) ist in den meisten Produktionsanwendungen nicht erwünscht.
Wer will, kann die Vorteile von Contract.Requires() auch nutzen, ohne irgendwelchen Code unter vielen Umständen schreiben zu müssen. Falls man eine Methode hat, bei der die ersten Anweisungen aus einer Gruppe von if/then/throw-Anweisungen ohne else-Klauseln bestehen, und diese Anweisungen die Anforderungen von Contract.Requires() erfüllen, kann ein Aufruf von Contract.EndContractBlock() nach der Anweisungsgruppe hinzufügen. Code Contracts wird diese Gruppe von Anweisungen als Vorbedingungen behandeln, genauso wie mit Contract.Requires().
Bei Invarianten sollten alle Eigenschaften, die für die Validierung verwendet werden, ausdrücklich deklariert werden. Und der zugrunde liegende Wert (nicht die Eigenschaft) sollte getestet werden. Bei Tests hat sich gezeigt, dass andernfalls die Validierung bereits einsetzt, noch ehe alle erforderlichen Eigenschaften festgelegt wurden.
Sie erlauben eine Remotecodeausführung. Betroffen sind alle unterstützten Versionen von Adobe Reader und Acrobat für…
Betroffen sind Chrome für Windows, macOS und Linux. Das von den Anfälligkeiten ausgehende Risiko stuft…
Der Gerichtshof der Europäischen Union entscheidet „endgültig“ über den Rechtsstreit. Dem Urteil zufolge sind von…
Sie betrifft ältere Versionen von Windows 10. Ein weiterer kritischer Bug steckt aber auch in…
Der Downloader nimmt Windows-Rechner ins Visier. RansomHub festigt seine Position als führende Ransomware-Gruppe weltweit.
Britische Bestattungsunternehmen haben bereits reagiert und weisen darauf hin, dass ihre Beerdigungen nicht gelivestreamt werden.