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.
- A Visual Studio Installer futtatása
- Válassza a Módosítás lehetőséget
- Ellenőrizze a Visual Studio bővítményfejlesztési számítási feladatát.
- Nyissa meg a Visual Studio bővítményfejlesztési csomópontot az összefoglaló fában.
- 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:
- Nyissa meg az Egyes összetevők csomópontot az összefoglaló fában.
- 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
- A Visual Studio Installer futtatása
- Válassza a Módosítás lehetőséget
- Az Egyes összetevők lap kiválasztása
- 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:
- 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ó.
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:
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:
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.
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 Int32
típusa .
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 Int32
tí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.
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
.
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 C
Main()
-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:
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 C
megfelelő AliasSymbol információval szolgál.
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
.
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.