Code verkennen met de roslyn-syntaxis visualiseren in Visual Studio

Dit artikel bevat een overzicht van het hulpprogramma Syntax Visualizer dat wordt geleverd als onderdeel van de .NET Compiler Platform (Roslyn) SDK. Syntaxis visualiseren is een hulpmiddelvenster waarmee u syntaxisstructuren kunt inspecteren en verkennen. Het is een essentieel hulpprogramma om inzicht te hebben in de modellen voor code die u wilt analyseren. Het is ook een hulpmiddel voor foutopsporing wanneer u uw eigen toepassingen ontwikkelt met behulp van de .NET Compiler Platform (Roslyn)SDK. Open dit hulpprogramma terwijl u uw eerste analyseprogramma's maakt. De visualizer helpt u inzicht te hebben in de modellen die door de API's worden gebruikt. U kunt ook hulpprogramma's zoals SharpLab of LINQPad gebruiken om code te inspecteren en syntaxisstructuren te begrijpen.

Installatie-instructies - Visual Studio Installer

Er zijn twee verschillende manieren om de .NET Compiler Platform SDK te vinden in het Visual Studio-installatieprogramma:

Installeren met behulp van het visual studio-installatieprogramma - weergave Workloads

De .NET Compiler Platform SDK wordt niet automatisch geselecteerd als onderdeel van de ontwikkelworkload van de Visual Studio-extensie. U moet het selecteren als een optioneel onderdeel.

  1. Visual Studio Installer uitvoeren
  2. Selecteer Wijzigen
  3. Controleer de workload Voor het ontwikkelen van de Visual Studio-extensie .
  4. Open het ontwikkelknooppunt visual Studio-extensie in de overzichtsstructuur.
  5. Schakel het selectievakje in voor .NET Compiler Platform SDK. U vindt deze als laatste onder de optionele onderdelen.

Desgewenst wilt u ook dat de DGML-editor grafieken weergeeft in het visualizer:

  1. Open het knooppunt Afzonderlijke onderdelen in de overzichtsstructuur.
  2. Schakel het selectievakje in voor DGML-editor

Installeren met behulp van het visual studio-installatieprogramma - tabblad Afzonderlijke onderdelen

  1. Visual Studio Installer uitvoeren
  2. Selecteer Wijzigen
  3. Selecteer het tabblad Afzonderlijke onderdelen
  4. Schakel het selectievakje in voor .NET Compiler Platform SDK. U vindt deze bovenaan in de sectie Compilers, buildhulpprogramma's en runtimes .

Desgewenst wilt u ook dat de DGML-editor grafieken weergeeft in het visualizer:

  1. Schakel het selectievakje voor DGML-editor in. U vindt deze in de sectie Codehulpprogramma's .

Maak uzelf vertrouwd met de concepten die worden gebruikt in de .NET Compiler Platform SDK door het overzichtsartikel te lezen. Het biedt een inleiding tot syntaxisstructuren, knooppunten, tokens en trivia.

Syntaxis visualiseren

Met Syntax Visualizer kunt u de syntaxisstructuur voor het C#- of Visual Basic-codebestand bekijken in het huidige actieve editorvenster in de Visual Studio IDE. Het visualizer kan worden gestart door te klikken op View>Other Windows>Syntax Visualizer. U kunt ook de werkbalk Snel starten in de rechterbovenhoek gebruiken. Typ 'syntaxis' en de opdracht voor het openen van syntaxis visualiseren wordt weergegeven.

Met deze opdracht opent u syntaxis visualiseren als een zwevend hulpmiddelvenster. Als u geen venster van de code-editor hebt geopend, is de weergave leeg, zoals wordt weergegeven in de volgende afbeelding.

Het taakvenster Syntaxis visualiseren

Dock dit hulpprogrammavenster op een handige locatie in Visual Studio, zoals aan de linkerkant. In Visualizer wordt informatie weergegeven over het huidige codebestand.

Maak een nieuw project met de opdrachtNieuw projectbestand>. U kunt een Visual Basic- of C#-project maken. Wanneer Visual Studio het hoofdcodebestand voor dit project opent, wordt de syntaxisstructuur voor dit project weergegeven. U kunt elk bestaand C#-/Visual Basic-bestand openen in dit Visual Studio-exemplaar, waarna de syntaxisstructuur van dat bestand wordt weergegeven. Als u meerdere codebestanden hebt geopend in Visual Studio, wordt in het visualizer de syntaxisstructuur weergegeven voor het momenteel actieve codebestand (het codebestand met toetsenbordfocus.)

Zoals in de voorgaande afbeeldingen wordt weergegeven, wordt in het venster van het hulpmiddel visualizer bovenaan de syntaxisstructuur en onderaan een eigenschappenraster weergegeven. In het eigenschappenraster worden de eigenschappen weergegeven van het item dat momenteel in de structuur is geselecteerd, inclusief het . NET-type en het type (SyntaxKind) van het item.

Syntaxisstructuren bestaan uit drie typen items: knooppunten, tokens en trivia. Meer informatie over deze typen vindt u in het artikel Werken met syntaxis . Items van elk type worden weergegeven met een andere kleur. Klik op de knop 'Legenda' voor een overzicht van de gebruikte kleuren.

Elk item in de structuur geeft ook een eigen spanwijdte weer. De span is de indexen (de begin- en eindpositie) van dat knooppunt in het tekstbestand. In het voorgaande C#-voorbeeld heeft het geselecteerde token UsingKeyword [0..5)" een span die vijf tekens breed is, [0..5). De notatie [..)" betekent dat de beginindex deel uitmaakt van het bereik, maar de eindindex niet.

Er zijn twee manieren om door de structuur te navigeren:

  • Vouw items in de structuur uit of klik erop. Het visualizer selecteert automatisch de tekst die overeenkomt met het bereik van dit item in de code-editor.
  • Klik of selecteer tekst in de code-editor. Als u in het voorgaande Visual Basic-voorbeeld de regel met Module Module1 selecteert in de code-editor, navigeert het visualizer automatisch naar het bijbehorende ModuleStatement-knooppunt in de structuur.

Het visualizer markeert het item in de structuur waarvan de spanwijdte het beste overeenkomt met de spanwijdte van de tekst die in de editor is geselecteerd.

De visualiseer vernieuwt de structuur zodat deze overeenkomt met wijzigingen in het actieve codebestand. Voeg een aanroep toe aan Console.WriteLine() in Main(). Terwijl u typt, vernieuwt het visualizer de structuur.

Onderbreek het typen zodra u hebt getypt Console.. De boom heeft een aantal items roze gekleurd. Op dit moment zijn er fouten (ook wel diagnostische gegevens genoemd) in de getypte code. Deze fouten zijn gekoppeld aan knooppunten, tokens en trivia in de syntaxisstructuur. In het visualizer ziet u welke items fouten bevatten, waarbij de achtergrond in roze wordt gemarkeerd. U kunt de fouten controleren op een item dat roze is gekleurd door de muisaanwijzer over het item te bewegen. Het visualizer geeft alleen syntactische fouten weer (die fouten met betrekking tot de syntaxis van de getypte code); er worden geen semantische fouten weergegeven.

Syntaxisgrafieken

Klik met de rechtermuisknop op een item in de structuur en klik op Gerichte syntaxisgrafiek weergeven.

De visualizer geeft een grafische weergave weer van de substructuur die is geroot op het geselecteerde item. Probeer deze stappen voor het knooppunt MethodDeclaration dat overeenkomt met de Main() methode in het C#-voorbeeld. In het visualizer wordt een syntaxisgrafiek weergegeven die er als volgt uitziet:

Een C#-syntaxisgrafiek weergeven

De syntaxisgrafiekviewer heeft een optie om een legenda weer te geven voor het kleurenschema. U kunt ook met de muis over afzonderlijke items in de syntaxisgrafiek bewegen om de eigenschappen weer te geven die overeenkomen met dat item.

U kunt syntaxisgrafieken voor verschillende items in de structuur herhaaldelijk weergeven en de grafieken worden altijd in hetzelfde venster in Visual Studio weergegeven. U kunt dit venster op een handige locatie in Visual Studio docken, zodat u niet tussen tabbladen hoeft te schakelen om een nieuwe syntaxisgrafiek weer te geven. De onderste, onder code-editorvensters, is vaak handig.

Dit is de koppelingsindeling die moet worden gebruikt met het hulpmiddel venster visualiseren en het venster syntaxisgrafiek:

Eén koppelingsindeling voor het venster visualizer en syntaxisgrafiek

Een andere optie is om het venster van de syntaxisgrafiek op een tweede monitor te plaatsen, in een installatie met twee beeldschermen.

Semantiek inspecteren

Syntaxis visualiseren maakt elementaire inspectie van symbolen en semantische informatie mogelijk. Typ double x = 1 + 1; in Main() in het C#-voorbeeld. Selecteer vervolgens de expressie 1 + 1 in het venster van de code-editor. Het visualizer markeert het knooppunt AddExpression in het visualizer. Klik met de rechtermuisknop op deze AddExpression en klik op View Symbol (indien aanwezig). U ziet dat de meeste menu-items de kwalificatie 'indien aanwezig' hebben. Syntaxis visualiseren inspecteert eigenschappen van een knooppunt, inclusief eigenschappen die mogelijk niet voor alle knooppunten aanwezig zijn.

Het eigenschappenraster in de visualizer wordt bijgewerkt zoals weergegeven in de volgende afbeelding: Het symbool voor de expressie is een SynthesizedIntrinsicOperatorSymbol met Type = Method.

Symbooleigenschappen in Syntax Visualizer

Probeer View TypeSymbol (indien aanwezig) voor hetzelfde AddExpression-knooppunt . Het eigenschappenraster in de visualizer wordt bijgewerkt zoals weergegeven in de volgende afbeelding, wat aangeeft dat het type van de geselecteerde expressie is Int32.

TypeSymbol-eigenschappen

Probeer Geconverteerde TypeSymbol weergeven (indien aanwezig) voor hetzelfde AddExpression-knooppunt . Het eigenschappenraster wordt bijgewerkt om aan te geven dat hoewel het type van de expressie is Int32, het geconverteerde type van de expressie is Double zoals weergegeven in de volgende afbeelding. Dit knooppunt bevat informatie over het geconverteerde type symbool omdat de Int32 expressie zich in een context bevindt waarin deze moet worden geconverteerd naar een Double. Deze conversie voldoet aan het Double type dat is opgegeven voor de variabele x aan de linkerkant van de toewijzingsoperator.

Geconverteerde TypeSymbol-eigenschappen

Probeer tot slot Constante waarde weergeven (indien aanwezig) voor hetzelfde knooppunt AddExpression . In het eigenschappenraster ziet u dat de waarde van de expressie een compilatietijdconstante is met de waarde 2.

Een constante waarde

Het voorgaande voorbeeld kan ook worden gerepliceerd in Visual Basic. Typ Dim x As Double = 1 + 1 een Visual Basic-bestand. Selecteer de expressie 1 + 1 in het venster van de code-editor. Het visualizer markeert het bijbehorende knooppunt AddExpression in het visualizer. Herhaal de voorgaande stappen voor deze AddExpression . Als het goed is, ziet u identieke resultaten.

Bekijk meer code in Visual Basic. Werk uw visual basic-hoofdbestand bij met de volgende code:

Imports C = System.Console

Module Program
    Sub Main(args As String())
        C.WriteLine()
    End Sub
End Module

Deze code introduceert een alias met de naam C die wordt toegewezen aan het type System.Console bovenaan het bestand en gebruikt deze alias in Main(). Selecteer het gebruik van deze alias, de C in C.WriteLine(), binnen de Main() methode. Het visualizer selecteert het bijbehorende IdentifierName-knooppunt in het visualizer. Klik met de rechtermuisknop op dit knooppunt en klik op Symbool weergeven (indien aanwezig). Het eigenschappenraster geeft aan dat deze id is gebonden aan het type System.Console , zoals wordt weergegeven in de volgende afbeelding:

Eigenschappen voor het symbool C in Syntax Visualizer

Probeer AliasSymbol weergeven (indien aanwezig) voor hetzelfde IdName-knooppunt . Het eigenschappenraster geeft aan dat de id een alias is met de naam C die is gebonden aan het System.Console doel. Met andere woorden, het eigenschapsraster biedt informatie met betrekking tot de AliasSymbol die overeenkomt met de id C.

AliasSymbol-eigenschappen

Controleer het symbool dat overeenkomt met een gedeclareerd type, methode of eigenschap. Selecteer het bijbehorende knooppunt in het visualizer en klik op Symbool weergeven (indien aanwezig). Selecteer de methode Sub Main(), inclusief de hoofdtekst van de methode. Klik op Symbool weergeven (indien aanwezig) voor het bijbehorende SubBlock-knooppunt in de visualizer. Het eigenschappenraster toont de MethodSymbol voor dit subblok heeft naam Main met het retourtype Void.

Weergavesymbool voor een methodedeclaratie

De bovenstaande Visual Basic-voorbeelden kunnen eenvoudig worden gerepliceerd in C#. Typ using C = System.Console; in plaats van Imports C = System.Console voor de alias. De voorgaande stappen in C# leveren identieke resultaten op in het venster visualizer.

Semantische inspectiebewerkingen zijn alleen beschikbaar op knooppunten. Ze zijn niet beschikbaar voor tokens of trivia. Niet alle knooppunten hebben interessante semantische informatie om te controleren. Wanneer een knooppunt geen interessante semantische informatie heeft, wordt er een leeg eigenschappenraster weergegeven wanneer u op Beeld * Symbool klikt (indien aanwezig).

Meer informatie over API's voor het uitvoeren van semantische analyses vindt u in het overzichtsdocument Werken met semantiek .

De syntaxis visualiseren sluiten

U kunt het venster visualizer sluiten wanneer u dit niet gebruikt om de broncode te onderzoeken. De weergave van het syntaxis visualiseren wordt bijgewerkt terwijl u door de code navigeert, de bron bewerkt en wijzigt. Het kan afleiden als u het niet gebruikt.