Robin Sedlaczek Fairmas GmbH

Interessant wird es, wenn man die Roslyn-APIs nutzt, um spezifische Probleme im Code ausfindig zu machen bzw. dem Entwickler proaktives Feedback zu vermitteln.

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 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.

Abb. 1: Die Roslyn-Compiler-APIs

Abb. 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 implementiert werden. Abbildung 1 zeigt lediglich ein paar dieser Sprachdienste, die auf Roslyn fußen. Schaut man in das Git Repository, findet man dort eine ganze Reihe weiterer Sprachdienste, die Microsoft für Visual Studio neu implementiert hat.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 1.17 - "Produktiver entwickeln"

Alle Infos zum Heft
579750582Compiler-as-a-Service: Produktivitätssteigerung mit Roslyn
X
- Gib Deinen Standort ein -
- or -