project roslyn - icse conference s2013.icse-conferences.org/documents/publicity/topi-ws...project...

1

Upload: phungdieu

Post on 15-Mar-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Project RoslynExposing the C# and Visual Basic compilers’ code analysis

Dustin CampbellSenior Program ManagerMicrosoft

Page 2: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Project Codename “Roslyn”

• Scope• Managed compilers & language services

• Code analysis APIs

• Scripting APIs

• Language service extensibility

• Read-Eval-Print-Loop (REPL)

• Ship Date• v.Next + n, where n > 0

Page 3: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Syntax Tree API Symbol APIBinding and Flow Analysis

APIsEmit APIParser

Metadata Import

Binder IL Emitter

Symbols

Language Service

Compiler API

Compiler Pipeline

Form

atter

Co

lorizer

Ou

tlinin

g

Navigate To

Ob

ject Bro

wser

Co

mp

letion

List

Find

All

Referen

ces

Ren

ame

Qu

ick Info

Signatu

re Help

Extract Meth

od

Go

To D

efinitio

n

Edit an

d C

on

tinu

e

Page 4: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Design Choices

Resilient

Immutable Complete

Efficient

Page 5: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Demo: Compiler APIs

Page 6: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersSyntax Nodes

class C{

void M(){}

}// C▫

CompilationUnit

TypeDeclaration

MethodDeclaration

ParameterList Block

SyntaxTreeGetRoot

Page 7: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersSyntax Tokens

class C{

void M(){}

}// C▫

CompilationUnit

TypeDeclaration

MethodDeclaration

ParameterList Block

SyntaxTreeGetRoot

EOF

class C { }

void M

( ) { }

Page 8: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersSyntax Tokens

EOF

class C

{

}

void M ( )

{

}

class∙C{∙∙∙∙void∙M()∙∙∙∙{∙∙∙∙}}// C▫

Page 9: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersSyntax “Trivia”

EOF

class C

{

}

void M ( )

{

}

SP EOL

EOL

EOL

EOL

EOL

EOL

class∙C{∙∙∙∙void∙M()∙∙∙∙{∙∙∙∙}}// C▫

// C

SPx4

SPx4

SPx4

SP

Page 10: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

SyntaxTrees

References

Compilation• Symbols

• Diagnostics

• Emit

Major PlayersCompilations, References and Symbols

Page 11: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersSemantics

Compilation

SemanticModel

• Binding Information

• Conversion Classification

• Flow Analysis

• Overload Resolution

• Etc.

GetSemanticModel(tree)

Page 12: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Major PlayersWorkspace, Solutions, Projects and Documents

Apply

Edit Edit

SyntaxTree

Compilation

Events (e.g. key presses)

Page 13: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

Demo: Building a Quick Fix

Page 14: Project Roslyn - ICSE conference s2013.icse-conferences.org/documents/publicity/TOPI-WS...Project Codename “Roslyn” •Scope •Managed compilers & language services •Code analysis

• Install the Roslyn CTP

• Try out the APIs

• Give us feedback!

Next Steps

Dev Center:http://msdn.com/roslyn

Forum:http://social.msdn.microsoft.com/forums/en-us/roslyn

Email:[email protected]