Thema: Werkzeuge für Software-QS und -Test

14:00 - 15:30

Statische Code Analyse für .Net mit den Roslyn Compiler APIs

Ralf Beckers, Microsoft

In der Vergangenheit waren Compiler geschlossene Systeme, die Quellcode verarbeiten und bei Erfolg Binärdateien erzeugen. Microsofts Compiler-as-a-Service (CAAS) Projekt mit dem Arbeitstitel “Roslyn” soll diese Blackbox aufbrechen. Hierzu werden die Interna der Compiler durch Schnittstellen offengelegt. Alle wichtigen Teile der Compiler-Pipeline werden hierdurch für Entwickler zugänglich gemacht. Roslyn wird aller Voraussicht nach in einer zukünftigen Version von Visual Studio die bisherigen Compiler für C# und Visual Basic ersetzen. Die Visual Studio IDE selbst wird die APIs für die Basisfunktionen wie IntelliSense oder das Syntax Highlighting benutzen. Auch weitergehende Funktionalitäten wie Code-Refactoring werden Roslyn nutzen. Somit ist die Qualität und Vollständigkeit der APIs bereits während der Entwicklung belegt.

Die eigene statische Analyse von .Net Programmen setzte bisher eine Transformation des Quelltextes in Syntax-Bäume voraus. Dabei mussten auch interne Transformationen der .NET Compiler nachvollzogen werden. Diese Transformationen sind häufig nicht dokumentiert und können sich von Version zu Version verändern. Weiterhin musste die eigene Analyse oft mit der Erweiterung der Sprache angepasst werden. Mit den neuen Compiler APIs entfällt der Bedarf der eigenen Transformation  vollständig. Der Beitrag zeigt anhand einfacher Programmbeispiele wie Entwickler und Tester Erweiterungen für Visual Studio ohne großen Aufwand selbst implementieren und für andere Entwickler bereitstellen können. Diese Erweiterungen demonstrieren die einfache Integration eigener Fehlermeldungen und Warnungen in Visual Studio, sowie das Bereitstellen automatischer Korrekturen, die per Mausklick ausgeführt werden können.

Diese Erweiterungen lassen sich dazu nutzen Probleme im Quelltext durch statische Analyse zu identifizieren oder firmeneigene Coding-Vorschriften zu überprüfen.

Ralf Beckers, Microsoft

Ralf Beckers arbeitete bei Microsoft in den letzten Jahren als Entwickler im „Managed Languages Team“ an der Neuentwicklung der C# und VB Compiler mit dem Arbeitstitel „Project Roslyn“ in Redmond. Mit diesem Project wird die Vision eines „Compiler-as-a-Service“ (CAAS) verwirklicht und die Interna durch APIs veröffentlicht. Anschließend hat er unter Verwendung der vorhergenannten APIs das am häufigsten verwendete Code Refactoring „Umbenennen“ in Visual Studio neu entworfen und implementiert. Das neue System bietet nun erstmalig die Möglichkeit, Konflikte im Vorhinein zu erkennen und die meisten automatisch zu beheben. Die hiermit erreichte Qualität der Ergebnisse ist bisher in keinem anderen Werkzeug zu finden.