© S&S Media, © iStockphoto.com/Big_Ryan
Hilfe durch den Compiler - next Level

Produktiver mit Roslyn


Mit dem Projekt „Roslyn“ hat Microsoft den Compiler aufgebohrt. Damit ist nicht nur Open Source gemeint. Vielmehr bietet Microsoft C# und VB.NET als Compiler as a Service an. In diesem Artikel wird gezeigt, wie dieser Service für Entwickler direkt produktivitätssteigernd eingesetzt werden kann.

Mit der Microsoft .NET-Compiler-Plattform, bekannt unter dem Namen „Roslyn“, öffnet der Softwarehersteller aus Redmond seine Compiler für C# und Visual Basic.NET. Öffnen bedeutet auf der einen Seite, dass Microsoft das Projekt in der Öffentlichkeit entwickelt. Der komplette Quellcode und das Projektmanagement werden auf GitHub [1] gehostet. Das erlaubt einen Blick in den Code, aber auch das Mitwirken durch die Community an ihm. Aber darum soll es in diesem Artikel nicht gehen. Denn auf der anderen Seite hat das Öffnen des Compilers noch eine zweite Bedeutung.

Ein offener Compiler?

Die Blackbox wird aufgebrochen und die Ergebnisse der einzelnen Kompilierphasen werden über ein API und wohldefinierte Objektmodelle verfügbar gemacht. Compiler-as-a-Service ist das Zauberwortkonglomerat. So liefert die Syntaxanalyse z. B. den Syntaxbaum, der mit dem Syntaxbaum-API analysiert werden kann. Die semantische Analyse, bestehend aus Symbolanalyse und dem Binder, wird über das Symbol-API, das Binding- und die Flow-Analyse-APIs instrumentalisierbar gemacht. Auch auf die Codegenerierung kann mithilfe des Emit-API zugegriffen werden. Abbildung 1 veranschaulicht die Compilerpipeline und die darauf aufgesetzten APIs.

sedlaczek_roslyn_1.tif_fmt1.jpgAbb. 1: Die Roslyn-Compiler-APIs

Im Sinne der Beweisführung hat Microsoft sogleich einen Großteil von Visual Studio umgebaut. Viele Funktionalitäten setzen nun auf die APIs von Roslyn auf. Das zum einen, um zu beweisen, dass die Microsoft-Compiler-Plattform hervorragende Dienste leistet und zugleich die Performance stimmt. Auf der anderen Seite ist es natürlich sinnvoll, auf neue Funktionalitäten zurückzugreifen. Denn wozu alles doppelt parsen und analysieren? Abbildung 1 veranschaulicht dies ebenfalls. Viele Language-Services bedienen sich des Compiler-API. Der Syntaxbaum spiegelt die Struktur des Quellcodes wider, also z. B. Klassen, ihre Methoden, Bedingungsausdrücke und Schleifen. Mit diesen Informationen wird es möglich, z. B. eine Quellcodedatei zu formatieren. Aber auch das Syntax-Highlighting setzt darauf auf. Ist bekannt, wo welche Symbole, also z. B. Typen oder Events, definiert sind, können Funktionen wie Navigate To oder der Objektbrowser darauf basierend im...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang