RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
 CTO der Fairmas GmbH in Berlin
 Community Leader DNUG Berlin
 Blogger / .NET Code Geek
 Sprecher
 MSDN Moderator
 Freier Autor
(Entwickler.de, Heise, DotNetPro, Informatik aktuell)
 Open Source
(SharpGL, Roslyn, FxCopAnalyzers)
Robin Sedlaczek
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
.NET Compiler Platform (“Roslyn”) | Überblick
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
OPEN SOURCE
 Roslyn ist Open Source!
https://github.com/dotnet/roslyn
 Verwaltet von der .NET Foundation
http://www.dotnetfoundation.org/projects
 Einblicke und Debugging des Codes
 Mitwirkung der Community
 Fork für eigene Zwecke
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
VISUAL STUDIO
 VS 2015: umfassender Umbau der IDE; Editor- und Sprachfeatures
basieren nun auf Roslyn
 .NET Compiler Platform SDK als VS-Extension verfügbar
 3 Projektvorlagen (Analyzer, Refactoring, Stand-Alone)
 Syntax Visualizer
 Visual Studio 2015 SDK vorausgesetzt
 Compiler/Workspace-APIs als NuGet-Packages verfügbar
 Scripting-API als NuGet-Package verfügbar
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.deAUFBAU EINES COMPILERS
Zerlegen des
Quelltextes in Tokens
Parsen der Tokens in
die Syntax, die von
der Grammatik
vorgegeben ist (AST)
Typdeklarationen aus
Code und Metadaten
zu benannten
Symbolen
(Symboltabelle)
Identifier in Code
abstimmen/verbinden
mit benannten
Symbolen
Plattformunabhängige
Optimierungen
Plattformabhängige
Optimierungen
All gesammelten
Informationen werden in
Binary/Assembly
ausgegeben
Tokenizer/
Lexer
Parser Symbols Binder
CodeGen
Preprocessor
Code Generator
CodeGen
Postprocessor
Lexikalische
Analyse
Syntaktische
Analyse
Semantische
Analyse
Synthese-
Phase
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
API 1 – COMPILER SERVICES
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
API 2 – WORKSPACES
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Real World Example | Breaking Changes
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
BREAKING CHANGES
v1
v2
v3
v4
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
SEMVER.ORG
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
VERFOLGEN VON API-ÄNDERUNGEN
 öffentliche APIs in separater Datei
 API-Änderungen durch Compiler prüfen lassen
 API-Änderung nicht in Definition  Kompilierfehler
 Code-Fix hilft
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
VERFOLGEN VON API-ÄNDERUNGEN
 Nutzen
 Änderungen und Erweiterungen von APIs werden durch Compiler und Tooling kontrolliert
 Dokumentation von API-Änderungen out-of-the-box
 Prozesssicherheit, da Prozess automatisch ist
 API-Liste kann im Review verwendet werden
 Inkompatible API-Änderungen können sofort erkannt werden
 Versionsvergleiche von Code-Dateien nicht mehr nötig
 Visual Studio Extension
 Roslyn.Diagnostics.Analyzers
 Analyzer und Code-Fix via NuGet verfügbar: https://www.nuget.org/packages/Microsoft.Net.RoslynDiagnostics/
(Microsoft.Net.RoslynDiagnostics)
 Quellcode ist Open Source auf GitHub: https://github.com/dotnet/roslyn-analyzers
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
02 | Visual Studio Extensibility
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.wordpress.com
RobinSedlaczek@live.de
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Real World Example | Critical Code
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
CRITICAL CODE
 Verwendung von kritischen Code visuell hervorheben
 kritischen Code markieren
 z.B. mit Marker-Interface
oder Attributen
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
CRITICAL CODE
 Nutzen
 Kritischer Code und seine Anwendung wird sichtbar
 Entwickler wird sensibilisiert im Umgang mit kritischen Code,
 Fehler und falscher Umgang können so reduziert werden
 In Code-Reviews kann gezielt kritischer Code unter die Lupe genommen werden, ohne diesen lange zu suchen
 Visual Studio Extension
 WaveDev.SensitiveCodeMarker von Robin Sedlaczek
 Quellcode ist Open Source auf GitHub: https://github.com/robinsedlaczek/WaveDev.SensitiveCodeMarker
 Demoprojekt auf GitHub: https://github.com/robinsedlaczek/WaveDev.RoomsReservationSystemDemo
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Real World Example | Alive
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
 Funktionsausführung direkt im Code-Editor
 Eingabe von Funktionsparametern via Popup
 Ergebnis und lokale Zustände werden direkt angezeigt
 direkt Anpassung lokaler Parameter möglich
ALIVE
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
ALIVE
 Nutzen
 Code-Ausführung ohne Anwendungsstart und Debugger
 Laufzeitverhalten von Code kann im Code-Editor direkt durchgespielt und analysiert werden
 Kontextwechsel zwischen Kodieren und Programmausführung fällt weg
 Ohne Kontextwechsel kann der Entwickler konzentrierter am Code arbeiten
 Ursache und Wirkung rücken dichter zusammen
 Direktes Feedback: Auswirkungen des Codes sind direkt am Entstehungsort sichtbar – im Editor
 Steigerung der Effizienz
 Reduktion von Entwicklungszeiten
 Visual Studio Extension
 ALIVE von Code Connect (http://blog.comealive.io/Three-Months-of-Alive/)
 CodeConnect gehört nun zu Microsoft (http://blog.comealive.io/Code-Connect-Joins-Microsoft/)
 Extension ist momentan leider nicht über die Visual Studio Gallery verfügbar!
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Real World Example | Application Scripting
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
APPLICATION SCRIPTING
 eigene Anwendung Script-fähig machen
 C# als Script-Sprache verwenden
 Roslyn bietet dafür die C# Scripting API
Fallbeispiel ModelR
 Kollaboratives 3D Modelling Tool
 Client-Server-Anwendung (basierend auf SignalR)
 Integriertes Scripting mit der C# Scripting API
 Script-Editor mit Syntax Highlighting
 Ausgabe von Kompilierfehlern
 Live Script Execution beim Tippen
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
APPLICATION SCRIPTING
 Script erlaubt direkten Zugriff auf Anwendungsobjekte
 es können aber auch eigene Objekte erzeugt werden
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
APPLICATION SCRIPTING
 Nutzen für Benutzer
 Flexibilität – Anwendung kann in sich erweitert werden, ohne Neukompilierung durch den Benutzer
 Erweiterbarkeit – Anwendung kann von allen Benutzer beliebig erweitert werden
 Effektivität – komplexe wiederkehrende Prozesse können vom Benutzer automatisiert werden
 Anpassbarkeit – ein Nutzer kann sich die Anwendung nach seinen Vorstellungen/Vorgaben anpassen
 Nutzen für Entwickler
 Beliebige APIs können dem Scripting zur Verfügung gestellt werden
 APIs sind dann zur Anwendungslaufzeit verfügbar und können dort ausprobiert werden
 Kontextwechsel zwischen Kodieren und Programmausführung fällt weg
 Code kann dort geschrieben werden, wo er seine Auswirkung hat
 Direktes Feedback der Auswirkungen sichtbar
 Steigerung der Effizienz
 Reduktion von Entwicklungskosten
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
APPLICATION SCRIPTING
 Fallbeispiel ModelR
 WaveDev.ModelR von Robin Sedlaczek
 Quellcode ist Open Source auf GitHub: https://github.com/robinsedlaczek/ModelR
 Clonen, Kompilieren, Ausführen: WaveDev.ModelR.Server zuerst starten, danach WaveDev.ModelR
 4 vordefinierte ModelR-Benutzer: Robin (PW: robin), Sarah (PW: sarah), Jan (PW: jan), Sebastian (PW: sebastian)
 Script-Kontext über globale Eigenschaft „ModelR“ bereitgestellt
 Über den Script-Kontext kann auf die Anwendungsobjekte zugegriffen werden (Users, SceneObjects)
 Neue Objekte werden aus Script ausgelesen und automatisch in die Szene übernommen
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Real World Example | Force Feedback Programming
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
FORCE FEEDBACK PROGRAMMING
 Force Feedback Programming soll helfen, sauberen (Clean) Code zu schreiben
 Sauberkeit muss zuerst sichtbar gemacht werden
 Anwendung von Metriken (z.B. Anzahl Zeilen von Methoden)
 Ergebnisse werden direkt im Code visualisiert
 Entwickler erhält damit direktes Feedback zur Code-Qualität
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
FORCE FEEDBACK PROGRAMMING
Wer nicht hören will, muss fühlen! Es wird
anstrengend, wenn man versucht, unsauberen
Code noch zu erweitern…
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
FORCE FEEDBACK PROGRAMMING
 Nutzen
 Unterstützung bei dem Vorhaben, Clean Code zu schreiben
 Direktes Feedback zur Code-Qualität – genau dort, wo der Code entsteht (in-time, in-place)
 Entwickler werden gezwungen darüber nachzudenken, was sauberer Code ist
 Erschwertes Tippen zwingt den Entwickler, mehr sauberen Code zu schreiben
 Trainingswerkzeug für Einsteiger, Auszubildende und Junior-Entwickler
 Sauberer Code erhöht die Wartbarkeit und Erweiterbarkeit
 Steigerung der Entwicklereffizienz
 Reduktion von Entwicklungskosten
 Visual Studio Extension
 Force Feedback Programming von Ralf Westphal und Robin Sedlaczek
 Quellcode ist Open Source auf GitHub: https://github.com/robinsedlaczek/ForceFeedbackProgramming
 Extension via Visual Studio Gallery verfügbar: https://visualstudiogallery.msdn.microsoft.com/d909888c-fdf0-492c-bfd9-
6596e56530a8
RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek@live.de
Dream-Team: Roslyn & Visual Studio Extensions
„Nun seid Ihr dran!“
RobinSedlaczek.com
RobinSedlaczek
RobinSedlaczek@live.de

#ADC 2016 - Roslyn & Visual Studio Extensions

Hinweis der Redaktion