Delen via


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 taakvenster waarmee u syntaxisstructuren kunt inspecteren en verkennen. Het is een essentieel hulpmiddel om inzicht te hebben in de modellen voor code die u wilt analyseren. Het is ook een foutopsporingshulp wanneer u uw eigen toepassingen ontwikkelt met behulp van de .NET Compiler Platform ('Roslyn'-SDK). Open dit hulpprogramma terwijl u uw eerste analyses 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 Installatieprogramma van Visual Studio:

Installeren met de Visual Studio Installer - Workloads-weergave

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 ontwikkelworkload van de Visual Studio-extensie .
  4. Open het ontwikkelknooppunt van de Visual Studio-extensie in de overzichtsstructuur.
  5. Schakel het selectievakje voor .NET Compiler Platform SDK in. U vindt deze laatste onder de optionele onderdelen.

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

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

Installeren met behulp van het tabblad Afzonderlijke onderdelen van Visual Studio Installer

  1. Visual Studio Installer uitvoeren
  2. Selecteer Wijzigen
  3. Het tabblad Afzonderlijke onderdelen selecteren
  4. Schakel het selectievakje voor .NET Compiler Platform SDK in. Je vindt het bovenaan in de sectie Compilers, bouwtools en runtimes.

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

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

Maak kennis 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 syntaxis visualiseren kunt u de syntaxisstructuur voor het C#- of Visual Basic-codebestand controleren in het huidige actieve editorvenster in de Visual Studio IDE. De 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 om de syntaxis visualiseren te openen, moet worden weergegeven.

Met deze opdracht opent u de syntaxis visualiseren als een zwevend taakvenster. 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

Plaats dit hulpprogrammavenster op een handige locatie in Visual Studio, zoals aan de linkerkant. In Visualizer ziet u informatie over het huidige codebestand.

Maak een nieuw project via de opdracht Bestand>Nieuw Project. 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 in dit Visual Studio-exemplaar openen en de visualr geeft de syntaxisstructuur van dat bestand weer. Als u meerdere codebestanden hebt geopend in Visual Studio, geeft de visualizer de syntaxisstructuur weer voor het huidige actieve codebestand (het codebestand met de toetsenbordfocus.)

Zoals in de voorgaande afbeeldingen wordt weergegeven, wordt in het venster visualisatieprogramma de syntaxisstructuur bovenaan en een eigenschappenraster onderaan weergegeven. In het eigenschappenraster worden de eigenschappen weergegeven van het item dat momenteel is geselecteerd in de boom, inclusief de .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. Het span is de indices en hun begin- en eindposities van dat knooppunt in het tekstbestand. In het voorgaande C#-voorbeeld heeft het geselecteerde token UsingKeyword [0..5) een spanwijdte van vijf tekens breed, [0..5). De notatie [..)" betekent dat de beginindex deel uitmaakt van de periode, maar de eindindex niet.

Er zijn twee manieren om door de structuur te navigeren:

  • Klik op items in de boomstructuur of vouw ze uit. De visualisatiefunctie selecteert automatisch de tekst die overeenkomt met het bereik van dit item in de code-editor.
  • Klik op 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 de visualizer automatisch naar het bijbehorende ModuleStatement-knooppunt in de structuur.

De visualisatie 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 visualizer vernieuwt de boomstructuur om aanpassingen in het actieve codebestand weer te geven. Voeg een aanroep toe aan Console.WriteLine() binnen Main(). Terwijl u typt, vernieuwt de visualizer de boom.

Pauzeer het typen zodra u hebt getypt Console.. De boom heeft een aantal items gekleurd in roze. Op dit moment zijn er fouten (ook wel diagnostische gegevens genoemd) in de getypte code. Deze fouten worden gekoppeld aan knooppunten, tokens en trivia in de syntaxisstructuur. In de visualisatie ziet u welke items fouten bevatten die aan de items zijn gekoppeld, 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. De 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 De grafiek Met gerichte syntaxis weergeven.

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

Een C#-syntaxisgrafiek weergeven

De viewer voor syntaxisgrafieken heeft een optie om een legenda weer te geven voor het kleurenschema. U kunt ook met de muis de muisaanwijzer 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 weergegeven in hetzelfde venster in Visual Studio. U kunt dit venster op een handige locatie in Visual Studio vastzetten, zodat u niet hoeft te schakelen tussen tabbladen om een nieuwe syntaxisgrafiek weer te geven. De onderste, onder code-editorvensters, is vaak handig.

Hier ziet u de dockingindeling die u kunt gebruiken met het venster van het hulpprogramma Visualizer en het venster syntaxisgrafiek:

Eén dockingindeling voor het venster visualisatie en syntaxisgrafiek

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

Semantiek inspecteren

De 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. De visualizer markeert het knooppunt AddExpression in de visualizer. Klik met de rechtermuisknop op deze AddExpression en klik op Beeldsymbool (indien aanwezig). U ziet dat de meeste menu-items de kwalificatie 'indien aanwezig' hebben. De syntaxis visualiseren inspecteert eigenschappen van een knooppunt, inclusief eigenschappen die mogelijk niet aanwezig zijn voor alle knooppunten.

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

Symbooleigenschappen in syntaxis visualiseren

Klik met de rechtermuisknop op hetzelfde knooppunt AddExpression en selecteer TypeSymbol weergeven (indien aanwezig). Het eigenschappenraster in de visualisatie wordt bijgewerkt, zoals wordt weergegeven in de volgende afbeelding, waarmee wordt aangegeven dat het type van de geselecteerde expressie is Int32.

Eigenschappen van Typesymbool

Klik met de rechtermuisknop op hetzelfde knooppunt AddExpression en selecteer Geconverteerde TypeSymbol weergeven (indien aanwezig). De eigenschappenlijst wordt bijgewerkt om aan te geven dat hoewel het type van de expressie Int32 is, het geconverteerde type van de expressie Double is, zoals te zien is in de volgende afbeelding. Dit knooppunt bevat informatie over geconverteerde typesymbolen omdat de Int32 expressie plaatsvindt in een context waarin het 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.

Eigenschappen van TypeSymbol geconverteerd

Klik ten slotte met de rechtermuisknop op hetzelfde knooppunt AddExpression en selecteer Constante waarde weergeven (indien aanwezig). In het eigenschappenraster ziet u dat de waarde van de expressie een compile-tijdconstante met een waarde 2 is.

Een constante waarde

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

Bekijk meer code in Visual Basic. Werk het belangrijkste Visual Basic-bestand 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 is toegewezen aan het type System.Console boven aan het bestand en gebruikt deze alias binnen Main(). Selecteer het gebruik van deze alias, de C in C.WriteLine(), in de Main() methode. De visualizer selecteert het bijbehorende IdentifierName-knooppunt in de visualizer. Klik met de rechtermuisknop op dit knooppunt en klik op Beeldsymbool (indien aanwezig). Het eigenschappenraster geeft aan dat deze ID is gebonden aan het type System.Console zoals weergegeven in de volgende afbeelding.

Eigenschappen voor het symbool C in Syntax Visualizer

Klik met de rechtermuisknop op hetzelfde IdName-knooppunt en selecteer AliasSymbol weergeven (indien aanwezig). Het eigenschappenvenster geeft aan dat de identifier een alias is met naam C die is gebonden aan het System.Console doel. Met andere woorden, het eigenschappenmatrix biedt informatie over de AliasSymbol die overeenkomt met de identificator C.

AliasSymbol-eigenschappen

Inspecteer het symbool dat overeenkomt met elk gedeclareerd type, methode, eigenschap. Selecteer het bijbehorende knooppunt in de visualizer en klik met de rechtermuisknop om het weergavesymbool (indien van toepassing) te openen. Selecteer de methode Sub Main(), inclusief de hoofdtekst van de methode. Klik met de rechtermuisknop op het bijbehorende SubBlock-knooppunt in de visualizer en selecteer Symbool weergeven (indien aanwezig). In het eigenschappenraster wordt de MethodSymbol voor deze SubBlock weergegeven met de naam Main en 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 als alias. De voorgaande stappen in C# leveren identieke resultaten op in het visualisatievenster.

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 bevat, klikt u met de rechtermuisknop en selecteert u, indien aanwezig, Weergave * Symbool, dan wordt een leeg eigenschappenraster getoond.

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

De syntaxis-visualizer sluiten

U kunt het visualisatievenster sluiten wanneer u het niet gebruikt om de broncode te onderzoeken. De syntax visualizer werkt zijn weergave bij terwijl u door de code navigeert, de broncode bewerkt en wijzigt. Het kan afleiden wanneer u het niet gebruikt.