Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller en översikt över verktyget Syntax Visualizer som levereras som en del av .NET Compiler Platform ("Roslyn") SDK. Syntaxvisualiseraren är ett verktygsfönster som hjälper dig att inspektera och utforska syntaxträd. Det är ett viktigt verktyg för att förstå de modeller för kod som du vill analysera. Det är också ett felsökningshjälpmedel när du utvecklar egna program med hjälp av .NET Compiler Platform ("Roslyn") SDK. Öppna det här verktyget när du skapar dina första analysverktyg. Visualiseraren hjälper dig att förstå de modeller som används av API:erna. Du kan också använda verktyg som SharpLab eller LINQPad för att inspektera kod och förstå syntaxträd.
Installationsinstruktioner – Visual Studio Installer
Det finns två olika sätt att hitta .NET Compiler Platform SDK i Visual Studio Installer:
Installera med vyn Arbetsbelastningar i Visual Studio Installer
.NET Compiler Platform SDK väljs inte automatiskt som en del av arbetsbelastningen för utveckling av Visual Studio-tillägget. Du måste välja den som en valfri komponent.
- Starta Visual Studio Installer
- Välj Ändra
- Kontrollera arbetsuppgiften Visual Studio-tilläggsutveckling.
- Öppna noden Visual Studio-tilläggsutveckling i översiktsträdet.
- Markera kryssrutan för .NET Compiler Platform SDK. Du hittar den sist under de valfria komponenterna.
Du vill också att DGML-redigeraren ska visa grafer i visualiseraren:
- Öppna noden Enskilda komponenter i sammanfattningsträdet.
- Markera kryssrutan för DGML-redigeraren
Installera med hjälp av fliken Installationsprogram för Visual Studio – enskilda komponenter
- Starta Visual Studio Installer
- Välj Ändra
- Välj fliken Enskilda komponenter
- Markera kryssrutan för .NET Compiler Platform SDK. Du hittar den längst upp under avsnittet Kompilatorer, byggverktyg och körning.
Du vill också att DGML-redigeraren ska visa grafer i visualiseraren:
- Markera kryssrutan för DGML-redigeraren. Du hittar den under avsnittet Kodverktyg .
Bekanta dig med de begrepp som används i .NET Compiler Platform SDK genom att läsa översiktsartikeln . Det ger en introduktion till syntaxträd, noder, token och trivia.
Syntaxvisualisering
Syntaxvisualiseraren möjliggör kontroll av syntaxträdet för C#- eller Visual Basic-kodfilen i det aktuella aktiva redigeringsfönstret i Visual Studio IDE. Visualiseraren kan startas genom att klicka på Visa>annanWindows-syntaxvisualiserare>. Du kan också använda verktygsfältet Snabbstart i det övre högra hörnet. Skriv "syntax" och kommandot för att öppna Syntaxvisualiseraren ska visas.
Det här kommandot öppnar syntaxvisualiseraren som ett flytande verktygsfönster. Om du inte har ett fönster för kodredigeraren öppet är visningen tom, som du ser i följande bild.
Docka det här verktygsfönstret på en lämplig plats i Visual Studio, till exempel till vänster. Visualiseraren visar information om den aktuella kodfilen.
Skapa ett nytt projekt med kommandot Arkiv>nytt projekt . Du kan skapa antingen ett Visual Basic- eller C#-projekt. När Visual Studio öppnar huvudkodfilen för det här projektet visar visualiseraren syntaxträdet för det. Du kan öppna en befintlig C#-/Visual Basic-fil i den här Visual Studio-instansen och visualiseraren visar filens syntaxträd. Om du har flera kodfiler öppna i Visual Studio visar visualiseraren syntaxträdet för den aktuella aktiva kodfilen (kodfilen som har tangentbordsfokus.)
Som du ser i föregående bilder visar visualiserarverktygets fönster syntaxträdet längst upp och ett egenskapsrutnät längst ned. Egenskapsfönstret visar egenskaperna för det objekt som för närvarande är markerat i trädet, inklusive .NET Typ och Kind (SyntaxKind) av objektet.
Syntaxträd består av tre typer av objekt – noder, token och trivia. Du kan läsa mer om dessa typer i artikeln Arbeta med syntax . Objekt av varje typ representeras med en annan färg. Klicka på knappen Förklaring för att få en översikt över de färger som används.
Varje objekt i trädet visar också sitt eget spann. Spannet är indexen (start- och slutpositionerna) för noden i textfilen. I föregående C#-exempel har den markerade token "UsingKeyword [0..5)" ett spann som är fem tecken brett, [0..5). Notationen "[..)" innebär att startindexet är en del av intervallet, men det är inte slutindexet.
Det finns två sätt att navigera i trädet:
- Expandera eller klicka på objekt i trädet. Visualiseraren väljer automatiskt den text som motsvarar objektets intervall i kodredigeraren.
- Klicka eller välj text i kodredigeraren. Om du i föregående Visual Basic-exempel väljer raden som innehåller Modulmodul1 i kodredigeraren navigerar visualiseraren automatiskt till motsvarande ModuleStatement-nod i trädet.
Visualiseraren markerar objektet i trädet vars intervall bäst matchar intervallet för den text som valts i redigeraren.
Visualiseraren uppdaterar trädet så att det matchar ändringarna i den aktiva kodfilen. Lägg till ett anrop i Console.WriteLine() inuti Main(). När du skriver uppdaterar visualiseraren trädet.
Pausa skrivningen när du har skrivit Console.. Trädet har några objekt färgade i rosa. I det här läget finns det fel (kallas även "Diagnostik") i den inskrivna koden. Dessa fel är kopplade till noder, token och trivia i syntaxträdet. Visualiseraren visar vilka objekt som har fel kopplade till dem som markerar bakgrunden i rosa. Du kan kontrollera felen på alla objekt som färgas rosa genom att hovra över objektet. Visualiseraren visar endast syntaktiska fel (de fel som är relaterade till syntaxen för den inskrivna koden); Det visar inga semantiska fel.
Syntaxgraf
Högerklicka på ett objekt i trädet och klicka på Visa riktat syntaxdiagram.
Visualiseraren visar en grafisk representation av underträdet som är rotat på det markerade objektet. Prova de här stegen för noden MethodDeclaration som motsvarar Main() metoden i C#-exemplet. Visualiseraren visar ett syntaxdiagram som ser ut så här:
Visningsprogrammet för syntaxdiagram har ett alternativ för att visa en förklaring för färgschemat. Du kan också hovra över enskilda objekt i syntaxdiagrammet med musen för att visa de egenskaper som motsvarar objektet.
Du kan visa syntaxdiagram för olika objekt i trädet upprepade gånger och graferna visas alltid i samma fönster i Visual Studio. Du kan docka det här fönstret på en lämplig plats i Visual Studio så att du inte behöver växla mellan flikar för att visa ett nytt syntaxdiagram. Längst ned, under kodredigerarens fönster, är det ofta praktiskt.
Här är dockningslayouten som ska användas med visualiserarverktygets fönster och syntaxdiagramfönstret:
Ett annat alternativ är att placera syntaxdiagramfönstret på en andra bildskärm, i en dubbel bildskärmskonfiguration.
Granska semantiken
Syntaxvisualiseraren möjliggör rudimentär kontroll av symboler och semantisk information. Skriv double x = 1 + 1; i Main() i C#-exemplet. Välj sedan uttrycket 1 + 1 i kodredigerarens fönster. Visualiseraren markerar noden AddExpression i visualiseraren. Högerklicka på AddExpression och välj Visa symbol (om tillgänglig). Observera att de flesta menyalternativen har kvalificeraren "om någon". Syntaxvisualiseraren inspekterar egenskaperna för en nod, inklusive egenskaper som kanske inte finns för alla noder.
Egenskapsrutnätet i visualiseraren uppdateras enligt följande bild: Symbolen för uttrycket är en SynthesizedIntrinsicOperatorSymbol med Kind = Method.
Högerklicka på samma AddExpression-nod och välj Visa TypeSymbol (om någon). Egenskapsrutnätet i visualiseraren uppdateras enligt följande bild, vilket indikerar att typen av det valda uttrycket är Int32.
Högerklicka på samma AddExpression-nod och välj Visa konverterad TypeSymbol (om någon). Egenskapsrutnätet uppdateras och visar att även om uttryckets typ är Int32, så är den konverterade typen av uttrycket Double, som visas i följande bild. Den här noden innehåller information om konverterad typsymbol eftersom Int32 uttrycket inträffar i en kontext där den måste konverteras till en Double. Den här konverteringen uppfyller den Double typ som angetts för variabeln x till vänster om tilldelningsoperatorn.
Högerklicka slutligen på samma AddExpression-nod och välj Visa konstant värde (om någon). Egenskapsrutnätet visar att uttryckets värde är en kompileringstidskonstant med värdet 2.
Föregående exempel kan också replikeras i Visual Basic. Skriv Dim x As Double = 1 + 1 i en Visual Basic-fil. Välj uttrycket 1 + 1 i kodredigerarens fönster. Visualiseraren markerar motsvarande AddExpression-nod i visualiseraren. Upprepa föregående steg för denna AddExpression så bör du se identiska resultat.
Granska mer kod i Visual Basic. Uppdatera din huvudsakliga Visual Basic-fil med följande kod:
Imports C = System.Console
Module Program
Sub Main(args As String())
C.WriteLine()
End Sub
End Module
Den här koden introducerar ett alias med namnet C som mappar till typen System.Console överst i filen och använder det här aliaset i Main(). Välj användning av det här aliaset C i C.WriteLine() inuti Main()-metoden. Visualiseraren väljer motsvarande IdentifierName-nod i visualiseraren. Högerklicka på den här noden och klicka på Visa symbol (om någon). Egenskapsrutnätet anger att den här identifieraren är bunden till typen System.Console enligt följande bild:
Högerklicka på samma IdentifierName-nod och välj Visa AliasSymbol (om någon). Egenskapsrutnätet anger att identifieraren är ett alias med ett namn C som är bundet System.Console till målet. Med andra ord innehåller egenskapsrutnätet information om AliasSymbol som motsvarar identifieraren C.
Inspektera symbolen som motsvarar någon deklarerad typ, metod, egenskap. Välj motsvarande nod i visualiseraren och högerklicka för att komma åt Visa symbol (om någon). Välj metoden Sub Main(), inklusive metodens brödtext. Högerklicka på motsvarande SubBlock-nod i visualiseraren och välj Visa symbol (om någon). Egenskapsrutnätet visar att MethodSymbol för den här SubBlock har namnet Main med returtypen Void.
Ovanstående Visual Basic-exempel kan enkelt replikeras i C#. Skriv using C = System.Console; i stället Imports C = System.Console för för aliaset. Föregående steg i C# ger identiska resultat i visualiserarfönstret.
Semantiska inspektionsåtgärder är endast tillgängliga på noder. Dessa är inte tillgängliga på token eller trivia. Alla noder har inte intressant semantisk information att inspektera. När en nod inte har intressant semantisk information, högerklickar du och väljer Visa * Symbol (om någon) visar ett tomt egenskapsrutnät.
Du kan läsa mer om API:er för att utföra semantisk analys i översiktsdokumentet Arbeta med semantik .
Stänga syntaxvisualiseraren
Du kan stänga visualiseringsfönstret när du inte använder det för att undersöka källkoden. Syntaxvisualiseraren uppdaterar sin visning när du navigerar genom kod, redigerar och ändrar källan. Det kan bli distraherande när du inte använder det.