Roslyn: Wizualizacja drzewa

Sporo pisałem w ostatnich wpisach o drzewie jako reprezentacji kodu. Za pomocą LINQ albo CSharpSyntaxWalker jesteśmy w stanie wyświetlić jakikolwiek element kodu. Wszelkie metody reprezentowane są za pomocą  MethodDeclarationSyntax,  klasy  z kolei ClassDeclarationSyntax.

Problem w tym, że tych obiektów jest na tyle dużo, że czasami trudno domyślić się na jaki należy rzutować generyczny SyntaxNode, aby odczytać konkretne dane. Na szczęście w raz z instalacją Roslyn, do dyspozycji w Visual Studio będziemy mieli Roslyn Syntax Visualizer.

Plugin standardowo instalujemy z galerii:

https://visualstudiogallery.msdn.microsoft.com/0f18f8c3-ec79-468a-968f-a1a0ee65b388

Z menu głównego wybieramy View –> Other Windows –> Roslyn Syntax Visualizer:

image

Załóżmy, że mamy następujący kod:

using System; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; namespace ConsoleApplication9 { class Program { static void Main(string[] args) { SyntaxTree tree = CSharpSyntaxTree.ParseText(@" public class Class1 { public void TestMethod1() { } public void TestMethod1(string a, string b, int c) { if(c==5) { ; ; } } } "); Console.WriteLine(tree.ToString()); } } }

Umieszczając kursor na deklaracji klasy dostaniemy:

image

Analogicznie klikając na elemencie w TreeView, w kodzie zostanie podświetlony dany element:

image

Niebieski kolor to SyntaxNode a zielony SyntaxToken. Jeśli pojęcia nie są jasne to zapraszam do mojego pierwszego wpisu o Roslyn.

Leave a Reply

Your email address will not be published.