Upload
paulo-cesar-ortins-brito
View
186
Download
2
Embed Size (px)
DESCRIPTION
Slides da minha palestra sobre Roslyn no The Developer's Conference 2014 em São Paulo na trilha de .NET.
Citation preview
Globalcode – Open4education
.NET– Utilizando a API do RoslynPaulo Ortins
@pauloortins
Sócio na OnceDev e Mestrando na UFBA
Globalcode – Open4education
Salvador, Bahia
Globalcode – Open4education
Quem sou eu?
Desenvolvedor C#
ASP.NET, Xamarin, Coaching, Trainning e Consultoria
Mestrando na UFBA, na área de Engenharia de SoftwareExtração e Visualização de Métricas de Código
Globalcode – Open4education
CodeMetricsSonar
NDepend
Globalcode – Open4education
Código Compilado
Globalcode – Open4education
Build de todos os projetos que eu conheço e dos que eu não conheço.
Globalcode – Open4education
Roslyn…
Globalcode – Open4education
Old, but (not) gold compiler
Globalcode – Open4education
Globalcode – Open4education
Desenvolvido há 15 anos
Código escrito em C#, VB.NET e C++
Codebase enorme/desorganizada
Cada vez mais difícil adicionar features
Globalcode – Open4education
Globalcode – Open4education
Pipeline de Compilação
Globalcode – Open4education
Análise Sintática
Análise Semântica
Globalcode – Open4education
Análise Sintática
Globalcode – Open4education
É o processo de analisar uma sequência de entrada afim de determinar sua estrutura
gramatical, conforme uma gramática formal pré-definida – Wikipédia
Globalcode – Open4education
Exemplo de Análise Sintática
Classe
Propriedade
MétodoExpressão
Identificador
Globalcode – Open4education
Análise Semântica
Globalcode – Open4education
É a camada do compilador responsável por analisar a utilização dos identificadores e ligar cada uma delas a sua declaração -
Wikipédia
Globalcode – Open4education
Exemplo de Análise Semântica
System.Console.WriteLine(string)
Globalcode – Open4education
E por quê isso é importante para nós, desenvolvedores ?
Globalcode – Open4education
Syntax Highlighting
Globalcode – Open4education
Intellisense
Globalcode – Open4education
Go to Definition (F12)
Rename ( Ctrl + R, Ctrl + R)
Organize Usings
Globalcode – Open4education
Mas o compilador é uma caixa preta, as ferramentas não tem acesso a essas informações
Globalcode – Open4education
E como elas fazem?
Globalcode – Open4education
O time do R# implementa o seu
time do CodeRush implementa o seu
MonoDevelop… XamarinStudio…
Globalcode – Open4education
Cada um implementa o seu
Globalcode – Open4education
Mas o Visual Studio não, ele tem acesso…
Globalcode – Open4education
Cada um implementa o seu
Globalcode – Open4education
Globalcode – Open4education
E se você fosse um aluno de mestrado querendo implementar um extrator de
métricas?
Globalcode – Open4education
#FAIL
Globalcode – Open4education
Roslyn!
Codebase totalmente nova e teoricamente menos complexa
Maior velocidade na evolução da linguagem
e… Open Source !
Globalcode – Open4education
Globalcode – Open4education
Diminui o esforço necessário para a criação e manutenção de coding tools
Globalcode – Open4education
Open Source?
Globalcode – Open4education
Meu mestrado se tornou viável!
Globalcode – Open4education
Roslyn APIs
Compiler APIsSyntax Analysis
Semantic Analysis
Service APIsWorkspace API
Editor Service APIs
Scripting APIs
Globalcode – Open4education
E a Performance disso?C++ >> C#
Globalcode – Open4education
Performance
40% mais lento
Novas formas de compilação podem ser testadasEx: Cache de compilação
Globalcode – Open4education
Sim, temos exemplos
Extração da árvore sintática
Análise Semântica
Compilação de código via C#
Criação de novas keywords
Criação de uma ferramenta de code fix
Globalcode – Open4education
E o que dá pra fazer mais?
Geração de código
Ferramentas de Refactoring
Extração de Métricas
Criação de DSLs
Navegação código
Globalcode – Open4education
Quer saber mais?
1. Mais Exemploshttps://github.com/pauloortins/RoslynTDC
2. Entrevista com Dustin Campbell 2012http://channel9.msdn.com/events/Ch9Live/Channel-9-Live-at-Tech-Ed-Europe-2012/Dustin-Campbell-Roslyn
3. Entrevista com Dustin Campbell 2014http://channel9.msdn.com/Blogs/funkyonex/-NET-Compiler-Platform-Roslyn-for-the-Rest-of-Us
4. Repositório do Roslyn https://roslyn.codeplex.com/wikipage?title=Samples%20and%20Walkthroughs&referringTitle=Documentation
5. Roslyn... Hmmmm... What?http://vimeo.com/43536444
6. Introducing Roslyn http://vimeo.com/97537019
Globalcode – Open4education
Obrigado!
Paulo Ortins@pauloortins