Megosztás a következőn keresztül:


Kód felfedezése a Roslyn szintaxisábrázolóval a Visual Studióban

Ez a cikk áttekintést nyújt a .NET Fordítóplatform ("Roslyn") SDK részeként szállított szintaxisábrázoló eszközről. A Szintaxisábrázoló egy eszközablak, amellyel megvizsgálhatja és felfedezheti a szintaxisfákat. Ez egy alapvető eszköz az elemezni kívánt kódmodellek megértéséhez. Hibakeresési támogatás is, ha saját alkalmazásokat fejleszt a .NET Fordítóplatform ("Roslyn") SDK használatával. Nyissa meg ezt az eszközt az első elemzők létrehozásakor. A vizualizáció segít megérteni az API-k által használt modelleket. A kódvizsgálathoz és a szintaxisfák megértéséhez olyan eszközöket is használhat, mint a SharpLab vagy a LINQPad .

Telepítési útmutató – Visual Studio Installer

A Visual Studio Installerben kétféleképpen keresheti meg a .NET Fordítóplatform SDK-t:

Telepítés a Visual Studio Installer – Számítási feladatok nézet használatával

A .NET Fordítóplatform SDK nem lesz automatikusan kiválasztva a Visual Studio bővítményfejlesztési számítási feladatának részeként. Választható összetevőként kell kiválasztania.

  1. A Visual Studio Installer futtatása
  2. Válassza a Módosítás lehetőséget
  3. Ellenőrizze a Visual Studio bővítményfejlesztési számítási feladatát.
  4. Nyissa meg a Visual Studio bővítményfejlesztési csomópontot az összefoglaló fában.
  5. Jelölje be a .NET Fordítóplatform SDK jelölőnégyzetét. A nem kötelező összetevők alatt találja az utolsót.

Szükség esetén azt is szeretné, hogy a DGML-szerkesztő grafikonokat jelenítsen meg a vizualizációban:

  1. Nyissa meg az Egyes összetevők csomópontot az összefoglaló fában.
  2. Jelölje be a DGML-szerkesztő jelölőnégyzetét

Telepítés a Visual Studio Installer – Egyes összetevők lap használatával

  1. A Visual Studio Installer futtatása
  2. Válassza a Módosítás lehetőséget
  3. Az Egyes összetevők lap kiválasztása
  4. Jelölje be a .NET Fordítóplatform SDK jelölőnégyzetét. A fordítók, a buildelési eszközök és a futtatókörnyezetek szakasz tetején található.

Szükség esetén azt is szeretné, hogy a DGML-szerkesztő grafikonokat jelenítsen meg a vizualizációban:

  1. Jelölje be a DGML-szerkesztő jelölőnégyzetét. Ezt a Kódeszközök szakaszban találja.

Az áttekintési cikkből megismerheti a .NET Fordítóplatform SDK-ban használt fogalmakat. Bemutatja a szintaxisfákat, csomópontokat, jogkivonatokat és triviákat.

Szintaxisábrázoló

A Szintaxisábrázoló lehetővé teszi a C# vagy a Visual Basic kódfájl szintaxisfáját a Visual Studio IDE aktuális aktív szerkesztőablakában. A vizualizációt azEgyéb Windows>szintaxisábrázolómegtekintése> elemre kattintva indíthatja el. A jobb felső sarokban található Fontos rovatok eszköztárat is használhatja. Írja be a "szintaxis" kifejezést, és meg kell jelennie a Szintaxisábrázoló megnyitására vonatkozó parancsnak.

Ez a parancs lebegő eszközablakként nyitja meg a Szintaxisábrázolót. Ha nincs megnyitva egy kódszerkesztő ablak, a kijelző üres, ahogy az alábbi ábrán is látható.

A Szintaxisábrázoló eszköz ablaka

Rögzítse ezt az eszközablakot egy kényelmes helyen a Visual Studióban, például a bal oldalon. A Vizualizáció az aktuális kódfájl adatait jeleníti meg.

Hozzon létre egy új projektet a Fájl>új projekt parancsával. Visual Basic- vagy C#-projektet is létrehozhat. Amikor a Visual Studio megnyitja a projekt fő kódfájlját, a vizualizáció megjeleníti a hozzá tartozó szintaxisfát. Ebben a Visual Studio-példányban bármely meglévő C# / Visual Basic fájlt megnyithat, és a vizualizáció megjeleníti a fájl szintaxisfáját. Ha több kódfájl van megnyitva a Visual Studióban, a vizualizáció megjeleníti az aktuálisan aktív kódfájl szintaxisfáját (a billentyűzetfókuszú kódfájlt).)

Ahogy az előző képeken is látható, a vizualizáció eszközablaka a szintaxisfát jeleníti meg felül, a tulajdonságrácsot pedig alul. A tulajdonságrács megjeleníti a fában jelenleg kijelölt elem tulajdonságait, beleértve a . NET-típust és az elem Kind (SyntaxKind) tulajdonságát.

A szintaxisfák három típusú elemet tartalmaznak: csomópontokat, jogkivonatokat és triviákat. Ezekről a típusokról a Szintaxis használata cikkben olvashat bővebben. Az egyes típusú elemek más színnel jelennek meg. Kattintson a Jelmagyarázat gombra a használt színek áttekintéséhez.

A fa minden eleme saját kiterjedésű is. A span a csomópont indexei (kezdő és záró pozíciója) a szövegfájlban. Az előző C# példában a kiválasztott "UsingKeyword [0..5)" jogkivonatnak öt karakter széles spanja van(0..5). A [..)" jelölés azt jelenti, hogy a kezdő index a span része, de a záró index nem.

Kétféleképpen navigálhat a fán:

  • Bontsa ki vagy kattintson a fa elemeire. A vizualizáció automatikusan kijelöli az elem tartományának megfelelő szöveget a kódszerkesztőben.
  • Kattintson vagy jelöljön ki szöveget a kódszerkesztőben. Az előző Visual Basic példában, ha a kódszerkesztőben a "Modulmodul1" szöveget tartalmazó sort választja ki, a vizualizáció automatikusan a fa megfelelő ModuleStatement csomópontjára navigál.

A vizualizáció kiemeli a fa azon elemét, amelynek a szélessége a legjobban megfelel a szerkesztőben kijelölt szövegnek.

A vizualizáció frissíti a fát, hogy megfeleljen az aktív kódfájl módosításainak. Adjon hozzá egy hívást a fájlbanConsole.WriteLine().Main() A beírás során a vizualizáció frissíti a fát.

A beírás után szüneteltetheti a gépelést Console.. A fa néhány elem rózsaszín színű. Ezen a ponton a beírt kódban hibák (más néven diagnosztika) találhatók. Ezek a hibák csomópontokhoz, jogkivonatokhoz és trivia-hoz vannak csatolva a szintaxisfában. A vizualizáción látható, hogy mely elemekhez tartoznak hibák, amelyek rózsaszínrel emelik ki a hátteret. A hibákat az elem fölé rámutatva megvizsgálhatja a rózsaszín színű elemeken. A vizualizáció csak szintaktikai hibákat jelenít meg (ezek a beírt kód szintaxisával kapcsolatos hibák); nem jelenít meg szemantikai hibákat.

Szintaxisgráfok

Kattintson a jobb gombbal a fa bármely elemére, majd kattintson az Irányított szintaxisdiagram megtekintése parancsra.

A vizualizáció megjeleníti a kijelölt elemben gyökerező részösszeg grafikus ábrázolását. Próbálkozzon az alábbi lépésekkel a C# példában szereplő metódusnak Main() megfelelő MethodDeclaration csomóponthoz. A vizualizáció egy szintaxisdiagramot jelenít meg, amely a következőképpen néz ki:

C#-szintaxisdiagram megtekintése

A szintaxisdiagram-megjelenítőben megjelenítheti a színsémához tartozó jelmagyarázatot. A szintaxisdiagram egyes elemeire is rámutathat az egérrel az adott elemhez tartozó tulajdonságok megtekintéséhez.

A fa különböző elemeinek szintaxisgráfjait többször is megtekintheti, és a gráfok mindig ugyanabban az ablakban jelennek meg a Visual Studióban. Ezt az ablakot egy kényelmes helyen rögzítheti a Visual Studióban, így nem kell váltania a lapok között az új szintaxisdiagram megtekintéséhez. Az alsó, a kódszerkesztő ablakai alatt található ablakok gyakran kényelmesek.

Itt látható a vizualizációs eszköz ablakával és a szintaxisgráf ablakával használható dokkoló elrendezés:

A vizualizáció és a szintaxis gráfablakának egy dokkoló elrendezése

Egy másik lehetőség, ha a szintaxisgráf ablakát egy második figyelőre helyezi egy kettős monitorbeállításban.

Szemantika vizsgálata

A Szintaxisábrázoló lehetővé teszi a szimbólumok és szemantikai információk alapvizsgálatát. Írja be double x = 1 + 1; a Main() kifejezést a C# példába. Ezután válassza ki a kifejezést 1 + 1 a kódszerkesztő ablakban. A vizualizáció kiemeli az AddExpression csomópontot a vizualizációban. Kattintson a jobb gombbal erre az AddExpression elemre , és kattintson a Szimbólum megtekintése (ha van) elemre. Figyelje meg, hogy a legtöbb menüelem "ha van" minősítőt tartalmaz. A Szintaxisábrázoló megvizsgálja a csomópontok tulajdonságait, beleértve azokat a tulajdonságokat is, amelyek nem feltétlenül jelennek meg az összes csomóponton.

A vizualizáció tulajdonságrácsa a következő ábrán látható módon frissül: A kifejezés szimbóluma a SynthesizedIntrinsicOperatorSymbol és a Kind = Method.

Szimbólumtulajdonságok a Szintaxisábrázolóban

Próbálja ki a TypeSymbol (ha van) nézetet ugyanahhoz az AddExpression csomóponthoz. A vizualizáció tulajdonságrácsa az alábbi ábrán látható módon frissül, jelezve, hogy a kijelölt kifejezés Int32típusa .

TypeSymbol tulajdonságai

Próbálja ki a Konvertált típus megtekintéseSymbol (ha van) lehetőséget ugyanazon az AddExpression csomóponton. A tulajdonságrács frissül, amely azt jelzi, hogy bár a kifejezés Int32típusa , a kifejezés konvertált típusa az alábbi ábrán látható módon jelenik Double meg. Ez a csomópont a konvertált típusszimbólum információit is tartalmazza, mivel a Int32 kifejezés olyan környezetben fordul elő, amelyben át kell alakítani.Double Ez az átalakítás megfelel a Double változóhoz x megadott típusnak a hozzárendelési operátor bal oldalán.

A TypeSymbol konvertált tulajdonságai

Végül próbálja meg az Állandó érték megtekintése (ha van) lehetőséget ugyanazon az AddExpression csomóponton. A tulajdonságrács azt mutatja, hogy a kifejezés értéke egy fordítási időállandó értékével 2.

Állandó érték

Az előző példa a Visual Basicben is replikálható. Írjon be Dim x As Double = 1 + 1 egy Visual Basic-fájlt. Válassza ki a kifejezést 1 + 1 a kódszerkesztő ablakban. A vizualizáció kiemeli a megfelelő AddExpression csomópontot a vizualizációban. Ismételje meg az AddExpression fenti lépéseit , és azonos eredményeket kell látnia.

További kód vizsgálata a Visual Basicben. Frissítse a fő Visual Basic-fájlt a következő kóddal:

Imports C = System.Console

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

Ez a kód egy nevű C aliast vezet be, amely leképezi a fájl tetején található típustSystem.Console, és ezt az aliast használja a fájlban.Main() Válassza ki ennek az aliasnak a használatát a metóduson belül, a CMain() -benC.WriteLine(). A vizualizáció kiválasztja a megfelelő IdentifierName csomópontot a vizualizációban. Kattintson a jobb gombbal erre a csomópontra, és válassza a Szimbólum megtekintése (ha van) parancsot. A tulajdonságrács azt jelzi, hogy ez az azonosító a típushoz System.Console van kötve az alábbi ábrán látható módon:

A C szimbólum tulajdonságai a Szintaxisábrázolóban

Próbálja ki a View AliasSymbol (ha van) elemet ugyanahhoz az IdentifierName csomóponthoz. A tulajdonságrács azt jelzi, hogy az azonosító egy alias, amelynek neve C a System.Console célhoz van kötve. Más szóval a tulajdonságrács az azonosítónak Cmegfelelő AliasSymbol információval szolgál.

AliasSymbol tulajdonságai

Vizsgálja meg a deklarált típusnak, metódusnak és tulajdonságnak megfelelő szimbólumot. Jelölje ki a megfelelő csomópontot a vizualizációban, és kattintson a Szimbólum megtekintése (ha van) elemre. Válassza ki a metódust Sub Main(), beleértve a metódus törzsét is. Kattintson a Megjelenítési szimbólum (ha van) elemre a megfelelő SubBlock csomóponthoz a vizualizációban. A tulajdonságrácson a MethodSymbol jelenik meg ennek a SubBlocknak a neve Main visszatérési típussal Void.

Metódusdeklaráció megjelenítési szimbóluma

A fenti Visual Basic-példák egyszerűen replikálhatók C#-ban. Írja be using C = System.Console; az alias helyett Imports C = System.Console . A C# előző lépései azonos eredményt adnak a vizualizáció ablakában.

A szemantikai vizsgálati műveletek csak csomópontokon érhetők el. Nem érhetők el jogkivonatokon vagy triviákon. Nem minden csomópont rendelkezik érdekes szemantikai információkkal. Ha egy csomópont nem rendelkezik érdekes szemantikai információkkal, a Nézet * szimbólum (ha van) elemre kattintva üres tulajdonságrács jelenik meg.

A szemantikai elemzést végző API-król a Szemantika használata áttekintő dokumentumban olvashat bővebben.

A szintaxisábrázoló bezárása

Bezárhatja a vizualizáció ablakát, ha nem használja a forráskód vizsgálatához. A szintaxisábrázoló frissíti a megjelenítést a kódban való navigálás, a szerkesztés és a forrás módosítása során. Zavaró lehet, ha nem használja.