Mittlerweile ist auch das vierte (und damit letzte) Video zu der Webcast-Reihe "Codequalität" verfügbar, mein Review zum vorangegangenen Teil ist über diesen Link einsehbar. Die Dauer des Webcasts beträgt dieses Mal 01:10 Stunden, der eigentliche Vortrag beginnt ab Minute 05:20 bzw. ab Minute 09:00 wenn man die Retrospektive außer Acht lässt. Der Vortrag beleuchtet diesmal im Wesentlichen einige Analyse-Programme für Visual Studio.
Zunächst führt Herr Roden vor, wie Visual Studio automatisch mit Druck auf die Enter-Taste einrückt und überflüssige Leerzeichen entfernt. An sich eine Sache die keiner expliziten Vorführung bedarf, weil jeder Entwickler damit konfrontiert wird. Erwähnenswert ist die Tastenkombination Strg k, Strg d für explizites Ausführen der Auto-Formatierung.
Herr Roden rät dazu, alle Entwickler die gleichen Visual-Studio-Einstellungen verwenden zu lassen und dementsprechend sollte die Funktion Tools/Import and Export Settings bzw. Extras/Einstellungen importieren und exportieren im Team verwendet werden. Ergänzend zeigt er auf wo sich die Einstellungen dazu befinden - unter Tools/Options bzw. Extras/Optionen - und erklärt die wesentlichen Texteditor-Einstellungen. In den Formatierungs-Einstellungen dort kann bspw. auch zwischen dem Allman- (voreingestellt) und dem 1TBS-Klammern-Stil umgeschaltet werden. Die verschiedenen Klammern-Stile werden auf Wikipedia gut erklärt.
Als nächstes stellt der Referent das Addin ReSharper vor. ReSharper bietet die Tastenkombination Alt + Enter als Ersatz für das Smart Tag-Menü von Visual Studio an (welches übrigens auch über Strg + . geöffnet werden kann). Wenn man daher z. b. einen Befehl eines anderen Namespace eingibt, der Namespace aber noch nicht mit using eingebunden wurde, wird mit Eingabe von Alt + Enter (nach der Eingabe des Kommandos) die entsprechende Using-Klausel automatisch oben eingefügt. Ansonsten müsste man erst durch das Smart Tag-Menü navigieren und bestätigen.
Anschließend werden exemplarisch grundlegende Refactoring-Möglichkeiten von ReSharper vorgestellt, wie das Umbenennen von Methoden und das Extrahieren des ausgewählten Quellcodes in eine neue Methode. Außerdem kann mit der Tastenkombination Strg + T ein kleines Eingabe-Fenster geöffnet werden, wo man einfach den Namen eines Typs eingibt und anschließend mit Druck auf Enter dieser Typ angesprungen wird. Als weitere Funktion von ReSharper wird aufgezeigt wie ein Icon für ein Smart Tag im Editor angezeigt wird sobald man eine Klasse markiert hat - in dem sich öffnenden Menü wird z. b. angeboten, eine abgeleitete Klasse der gewählten zu erstellen.
Bei der Auswahl einer Deklaration eines generischen Typs - im Video am Beispiel eines Dictionary aufgezeigt - bietet ReSharper über ein Smart Tag die Möglichkeit, die explizite Deklaration in einen anonymen Typ umzuwandeln. Das ist eine Neuerung in C#3, ein solcher anonymer Typ bietet zwei Vorteile, der erste ist an diesem Beispiel ersichtlich:
var Person = new { Vorname = "Hans", Name = "Graf", Schuhgröße = 40 };
Hier wird die Variable Person instanziiert ohne das eine Klasse als Typ von Person angegeben wäre - mit dem Schlüsselwort var ist es ein anonymer Typ und somit muss keine Deklaration der Klasse Person mehr vorliegen, stattdessen wird die Klasse Person on-the-fly angelegt mit den Properties Vorname, Name und Schuhgröße, wobei auch schon konkret Werte für diese Eigenschaften zugewiesen werden.
Als zweiter Vorteil dieser anonymen Typen ist zu nennen, das mit ihnen auch bereits vorhandene Klassen instanziiert und ihnen Werte zugewiesen werden können:
Person meinePerson = new Person() { Vorname = "Hans", Name = "Graf", Schuhgröße = 40 };
Das Beispiel stammt aus der Wikipedia, wobei die Werte-Zuweisung in den geschweiften Klammern mit der Instanziierung wohl als Sub-Element oder Sub-Charakteristika der anonymen Typen gesehen werden müssen; die anonymen Typen bestehen demnach nicht allein aus dem var-Schlüsselwort.
Zurück zu ReSharper: Herr Roden führt als nächstes Beispiel auf, wie Tooltips unter Variablen erscheinen welche deklariert sind, aber nicht weiter verwendet werden. Unbenutzte using-Klauseln werden ausgegraut und können mittels eines Smart Tag-Menüs entfernt werden. Auffällig ist auch, das ReSharper neben der Scroll-Leiste des Editor-Fensters ein gelbes oder rotes Kästchen anzeigt, welches unter dem Mauspfeil einen Hinweis zu den Warnungen bzw. Fehlern in Form von Tooltips offenbart, ohne das eine erneute Compilierung notwendig wäre.
Als weiteres Tool wird .NET Reflector (Pro) vorgestellt. Die Basis-Version dieses Programms ist ein kostenloser Dekompilierer, der Assemblies weitgehend korrekt in den Ursprungs-Quellcode zurückverwandelt, sofern der Quellcode nicht verfremdet (obfuskiert) wurde. Die erweiterte (kostenpflichtige) Pro-Version macht den dekompilierten Quellcode erstmals dem Debugger von Visual Studio zugänglich, wie Herr Roden eindrucksvoll vorführt. Dazu sollte im Vorfeld über den Menüpunkt Choose Assemblies to Debug die verwendete Assembly dekompiliert werden.
Anschließend zeigt der Referent den Umgang mit dem kostenlosen Tool FxCop von Microsoft. FxCop integriert sich nicht in Visual Studio sondern muss extern gestartet werden. Nach der Analyse einer Assembly bietet das Programm zahlreiche Hinweise auf Verstöße gegen die allgemeinen MSDN-Kodierungs-Richtlinien an. Dazu wird die entsprechende Datei mitsamt Zeilennummer des Befehls aufgelistet, und ein Link zu der MSDN zeigt die Definition dieser MSDN-Kodierungs-Richtlinie auf. Leider wird an der Stelle nicht ganz korrekt verlinkt, aus
http://msdn2.microsoft.com/library/ms245046(VS.90).aspx
muss beispielsweise (VS.90) und die 2 vorne (msdn2) entfernt werden, damit der Link funktioniert. Übrigens wird mit dem Link dann auch praktischerweise die Regel direkt auf deutsch erklärt.
Dann erwähnt Herr Roden, das im Zuge der Continous Integration FxCop auch über Kommandozeile aufgerufen und so in den Build-Vorgang eingebunden werden kann. Außerdem können eigene Regeln für FxCop erstellt werden. Visual Studio 2010 bindet mit Codeanalysis FxCop direkt ein (Engine angeblich identisch zu FxCop), dazu wird aber die Team-Edition benötigt - FxCop ist dagegen separat weiterhin kostenlos verfügbar.
Ergänzend will ich von meiner Seite aus erwähnen das es von Microsoft auch das kostenlose Tool StyleCop gibt, das ähnlich wie FxCop den Quellcode analysieren kann, aber direkt in Visual Studio eingebunden wird. Ein Unterschied scheint zu sein, das für StyleCop keine eigenen Regeln erstellt oder auch keine bestimmten außer Kraft gesetzt werden können.
Damit habe ich dann diese Webcast-Reihe endlich vollständig durchgearbeitet. Insgesamt ist dieser Vortrag ebenfalls sehr informativ, aber nicht so anspruchsvoll wie der dritte Teil der Reihe. Lobenswert ist natürlich für alle Webcasts, das sie kostenlos verfügbar sind.