Mehr als ReSharper und StyleCop
Code-Analyse für jedermann
Über Coding Style lässt sich bekanntlich streiten. Manchen hilft ein einheitlicher Stil – andere wollen gerade die Vielfalt. Hier gibt es je nach Projekt individuelle Regeln und Vorgehensweisen. Zumindest bei der statischen Code-Analyse sind sich aber alle weitgehend einig: Sie hilft schon im Vorfeld, Probleme zu erkennen, die vielleicht erst zur Laufzeit zu kritischen Fehlern führen würden. Damit ist sie ein wichtiges Hilfsmittel für jeden Entwickler. Die statische Code-Analyse, aber auch die Coding-Style-Prüfung ist zum Beispiel mithilfe von StyleCop und unterstützt durch ReSharper inzwischen in der .NET-Welt angekommen und etabliert. Doch selbst ein .NET-Entwickler arbeitet oft nicht mehr isoliert und muss damit rechnen, bei seinen Projekten die gewohnte Umgebung zu verlassen oder mit nicht vertrauten Tools zu arbeiten. Dies kann unterschiedliche Gründe haben: Vielleicht sind die Kosten für ReSharper-Lizenzen für das gesamte Team zu teuer, sodass auf kostenlose Alternativen ausgewichen werden muss. Bei heterogenen Teams wie in Open-Source-Projekten werden generell frei verfügbare Tools bevorzugt, um die Mitarbeit am Projekt zu vereinfachen.
Ähnlich sieht es aus, wenn Teile eines Projekts auf anderen Plattformen entwickelt werden oder Visual Studio generell nicht zum Einsatz kommt. Gerade in den Bereichen Mobile und Embedded kann dieser Fall eintreten, doch auch bei der Entwicklung von plattformunabhängigen .NET-Core-Anwendungen wird dies in Zukunft vermehrt vorkommen.
Code-Analyse auch ohne ReSharper
Bei der Suche nach Code-Analyse-Tools, die im besten Fall kostenlos und Cross-Platform sind, bieten sich natürlich viele Produkte an – abhängig von der verwendeten Programmiersprache und von den individuellen Vorlieben. Daher werden in diesem Artikel nur einige Tools beispielhaft genannt und beschrieben.
In jedem Fall ist aber besonderes Augenmerk auf die Einbindung in die Entwicklungsoberfläche zu legen. Denn in der Praxis zeigt sich: Code-Analyse wird nur genutzt, wenn die Ausführung und Ergebnispräsentation möglichst einfach und komfortabel ist.
Für C# kann natürlich weiterhin die native Visual-Studio-Code-Analyse zusammen mit StyleCop genutzt werden. Ab Visual Studio 2015 gibt es zudem die Möglichkeit, die Open-Source-.NET-Compiler-Plattform Roslyn und die damit verbundenen Roslyn Analyzer einzusetzen. Diese werden einfach als NuGet-Paket eingebunden und können während des Programmierens Tooltipps und Code Fixes liefern (Bild 1).
Hierfür gibt es im Solution Explorer unter References den neuen Unterpunkt Analyzers, in dem alle Regeln eines Analyzers aufgelistet sind und deren Gewichtung (Fehler, Warnung, Ausgeschaltet, …) gewählt werden kann. Ändert man die Standardgewichtung, so wird eine Regelsatzdatei im Projekt erzeugt und eingebunden.
Die gefundenen Fehler werden analog zu der nativen Code-Analyse in der Error List angezeigt – live während des Programmierens und beim Bauen. Im Bereich Webentwicklung hat man mit diversen Sprachen zu tun, unter anderem HTML, JavaScript, JSX, CSS, CoffeeScript und TypeScript. Visual Studio Extension Web Analyzer [1] integriert für diese Sprachen (außer HTML) folgende Tools: ESLint [2], CSSLint [3], CoffeeLint [4], TSLint [5]. Dies scheint so erfolgreich zu sein, dass Microsoft diese Extension fest in das .NET-Core-Tooling-Paket für Visual Studio 2015 integriert hat.
Aktuelle Version zum Zeitpunkt der Erstellung des Artikels: Preview 1, 1.0.0 RC2. Jedes darin enthaltene Tool kann individuell konfiguriert werden – für den aktuellen Benutzer oder auf Projekt- und Solution-Ebene. Wenn Sie eine kompatible Datei öffnen oder speichern, wird das passende Tool ausgeführt und die Fehler werden in der Error List angezeigt. Per Rechtsklick auf kompatible Dateien können Sie Run Web Code Analysis im Kontextmenü auswählen, um die Analyse manuell zu starten. Bei der Integration ins .NET-Core-Tooling-Paket gingen aber ein paar Features verloren. Zum Beispiel lassen sich einzelne Tools nicht mehr ausschalten oder die manuelle Analyse für ganze Ordner, Projekte und Solutions ausführen. Es wird sich zeigen, ob dies in einer späteren Version wieder verfügbar sein wird….