6. 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
7. 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
14. 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
19. 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
22. 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!
24. 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
26. 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
27. 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
29. 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
31. 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