Robin Sedlaczek | Chief Technical Officer Fairmas GmbH
robinsedlaczek
robinsedlaczek.wordpress.com
Über mich
 CTO der Fairmas GmbH in Berlin
 Community Leader DNUG Berlin
 Blogger / .NET Code Geek
 Sprecher
 MSDN Moderator
 Freier Autor
(Entwickler.de, Autor)
 Open Source
(SharpGL, Roslyn, FxCopAnalyzers)RobinSedlaczek
RobinSedlaczek.wordpress.com
Robin Sedlaczek
RobinSedlaczek@live.de
TheBerlinMicrosoftConnection
Was ist Roslyn
 Aufbrechen der klassischen Blackbox
 Bereitstellung einer API-Schicht über dem Compiler
 Bereitstellung der Compiler-Ergebnisse über Objektmodelle
Phase 1 Phase 2 Phase 3 Phase 4
Blackbox wird zur Plattform:
.NET Compiler Platform
robinsedlaczek
robinsedlaczek.wordpress.com
Open Source
 Roslyn ist Open Source!
https://github.com/dotnet/roslyn
 Verwaltet von der .NET Foundation
http://www.dotnetfoundation.org/projects
 Erlaubt Einblicke und Debugging des Codes
 Mitwirkung bei Entwicklung durch Community
 Repository kann geforkt werden
robinsedlaczek
robinsedlaczek.wordpress.com
Visual Studio
 Auf Roslyn basierte C#/VB-Sprachfeatures und IDE-Features ab Visual
Studio 2015 enthalten
 Projektvorlagen: .NET Compiler Platform SDK
 Bibliotheken: NuGet Roslyn compiler package
 Syntax Visualizer: Syntax Visualizer VSIX package
robinsedlaczek
robinsedlaczek.wordpress.com
Aufbau 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.wordpress.com
APIs – Compiler Services robinsedlaczek
robinsedlaczek.wordpress.com
APIs - Workspaces robinsedlaczek
robinsedlaczek.wordpress.com
Syntaxanalyse
var tree = CSharpSyntaxTree.ParseText(sourceCode);
var node = tree.GetRoot();
 SyntaxTree ist abstrakt
 Parsing über sprachspezifische Ableitung
 SyntaxTree ist immutable
robinsedlaczek
robinsedlaczek.wordpress.com
Syntaxanalyse
node.ChildNodes()
node.ChildTokens()
node.GetLeadingTrivia()
node.GetTrailingTrivia()
node.DescendantNodes()
node.DescendantTokens()
node.DescendantTrivia()
token.LeadingTrivia
token.TrailingTrivia
trivia.GetStructure()
trivia.GetStructure()
Traversierung des Syntaxbaums
robinsedlaczek
robinsedlaczek.wordpress.com
Syntax Types
 Syntaxtypen für alle Syntaxelemente (sprachspezifisch)
 Namespace: Microsoft.CodeAnalysis.CSharp.Syntax (214 Klassen)
 Namespace: Microsoft.CodeAnalysis.VisualBasic.Syntax (275 Klassen)
public.void.Do(string.what).
{.
....var.so.=.true;.
.
#if.DEBUG.
....so.=.false;.
#endif.
.
....if.(so.==.what).
........DontDo();.
}.
2
3
1
4
1 – MethodDeclarationSyntax
2 – ParameterListSyntax
3 – VariableDeclarationSyntax
4 – IfStatementSyntax
robinsedlaczek
robinsedlaczek.wordpress.com
Semantische Versionierung
v1
v2
v3
v4
semver.org
Roslyn Refactorings, Analyzer und Code Fixes selbst gebaut
RobinSedlaczek
RobinSedlaczek.wordpress.com
Vielen Dank für Eure
Aufmerksamkeit!

BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut

  • 1.
    Robin Sedlaczek |Chief Technical Officer Fairmas GmbH robinsedlaczek robinsedlaczek.wordpress.com
  • 2.
    Über mich  CTOder Fairmas GmbH in Berlin  Community Leader DNUG Berlin  Blogger / .NET Code Geek  Sprecher  MSDN Moderator  Freier Autor (Entwickler.de, Autor)  Open Source (SharpGL, Roslyn, FxCopAnalyzers)RobinSedlaczek RobinSedlaczek.wordpress.com Robin Sedlaczek RobinSedlaczek@live.de TheBerlinMicrosoftConnection
  • 3.
    Was ist Roslyn Aufbrechen der klassischen Blackbox  Bereitstellung einer API-Schicht über dem Compiler  Bereitstellung der Compiler-Ergebnisse über Objektmodelle Phase 1 Phase 2 Phase 3 Phase 4 Blackbox wird zur Plattform: .NET Compiler Platform robinsedlaczek robinsedlaczek.wordpress.com
  • 4.
    Open Source  Roslynist Open Source! https://github.com/dotnet/roslyn  Verwaltet von der .NET Foundation http://www.dotnetfoundation.org/projects  Erlaubt Einblicke und Debugging des Codes  Mitwirkung bei Entwicklung durch Community  Repository kann geforkt werden robinsedlaczek robinsedlaczek.wordpress.com
  • 5.
    Visual Studio  AufRoslyn basierte C#/VB-Sprachfeatures und IDE-Features ab Visual Studio 2015 enthalten  Projektvorlagen: .NET Compiler Platform SDK  Bibliotheken: NuGet Roslyn compiler package  Syntax Visualizer: Syntax Visualizer VSIX package robinsedlaczek robinsedlaczek.wordpress.com
  • 6.
    Aufbau eines Compilers Zerlegendes 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.wordpress.com
  • 7.
    APIs – CompilerServices robinsedlaczek robinsedlaczek.wordpress.com
  • 8.
    APIs - Workspacesrobinsedlaczek robinsedlaczek.wordpress.com
  • 9.
    Syntaxanalyse var tree =CSharpSyntaxTree.ParseText(sourceCode); var node = tree.GetRoot();  SyntaxTree ist abstrakt  Parsing über sprachspezifische Ableitung  SyntaxTree ist immutable robinsedlaczek robinsedlaczek.wordpress.com
  • 10.
  • 11.
    Syntax Types  Syntaxtypenfür alle Syntaxelemente (sprachspezifisch)  Namespace: Microsoft.CodeAnalysis.CSharp.Syntax (214 Klassen)  Namespace: Microsoft.CodeAnalysis.VisualBasic.Syntax (275 Klassen) public.void.Do(string.what). {. ....var.so.=.true;. . #if.DEBUG. ....so.=.false;. #endif. . ....if.(so.==.what). ........DontDo();. }. 2 3 1 4 1 – MethodDeclarationSyntax 2 – ParameterListSyntax 3 – VariableDeclarationSyntax 4 – IfStatementSyntax robinsedlaczek robinsedlaczek.wordpress.com
  • 12.
  • 13.
  • 14.
    Roslyn Refactorings, Analyzerund Code Fixes selbst gebaut RobinSedlaczek RobinSedlaczek.wordpress.com Vielen Dank für Eure Aufmerksamkeit!

Hinweis der Redaktion