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


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

Ez a cikk áttekintést nyújt a szintaxisábrázoló eszközről, amely a .NET Fordítóplatform ("Roslyn") SDK részeként jelenik meg. A Szintaxisábrázoló egy eszközablak, amely segít a szintaxisfák vizsgálatában és feltárásában. Ez egy alapvető eszköz az elemezni kívánt kódmodellek megértéséhez. Hibakeresési segéd 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. Olyan eszközöket is használhat, mint a SharpLab vagy a LINQPad a kód vizsgálatához és a szintaxisfák megértéséhez.

Telepítési utasítások – Visual Studio Installer

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

Telepítés a Visual Studio Installer – Munkaterhelések nézet használatával

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

  1. 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án.
  5. Jelölje be a .NET Fordítóplatform SDK jelölőnégyzetét. Az opcionális összetevők alatt fogja utoljára megtalálni.

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

  1. Nyissa meg az Egyes összetevők csomópontot az összefoglaló fán.
  2. A DGML-szerkesztő jelölőnégyzetének bejelölése

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

  1. 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álja meg.

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

  1. Jelölje be a DGML szerkesztő jelölőnégyzetet. 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 Szintaxisvizualizáció lehetővé teszi a C# vagy Visual Basic kódfájl szintaxisfáját a Visual Studio IDE aktuális aktív szerkesztőablakában. A vizualizáló a Megtekintés>Egyéb Windows>Szintaxisábrázoló menüpontok megnyitásával indítható el. Az Gyorsindítás eszköztárat is használhatja a jobb felső sarokban. Írja be a "szintaxis" szót, é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 a kódszerkesztő ablaka, a megjelenítés ü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 annak szintaxisfájá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 is meg van nyitva 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ós eszköz ablaka a szintaxisfát jeleníti meg a tetején, alul pedig egy tulajdonságrácsot. A tulajdonságrács megjeleníti a fában jelenleg kijelölt elem tulajdonságait, beleértve az elem . NET-típusát és Kind (SyntaxKind) tulajdonságát.

A szintaxisfák háromféle 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 egyes eleme saját pántot is megjelenít. 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)" tokennek öt karakter széles spannja 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:

  • Kibontsa vagy kattintson a fa elemeire. A vizualizáció automatikusan kijelöli az elemnek 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 "Modul1" szöveget tartalmazó sort választja, a vizualizáció automatikusan a fa megfelelő ModuleStatement csomópontjához 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. Helyezzen el egy hívást a Main() belsejébe, ahol Console.WriteLine(). Gépelés közben a vizualizáló frissíti a fát.

A gépelés szüneteltetése a gépelés után Console.. A fa néhány eleme rózsaszín. Ezen a ponton a gépelt kódban hibák (más néven "diagnosztika") vannak. Ezek a hibák a szintaxisfa csomópontjaihoz, tokenekhez és egyéb megjegyzésekhez vannak csatolva. A vizualizáció megjeleníti, hogy mely elemekhez vannak hibák csatolva, és rózsaszínrel emeli ki a hátteret. Az elem fölé rámutatva megvizsgálhatja a rózsaszín színű elemek hibáit. A vizualizáció csak szintaktikai hibákat jelenít meg (a gépelt kód szintaxisával kapcsolatos hibákat); nem jelenít meg szemantikai hibákat.

Szintaxisdiagramok

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

A megjelenítő grafikus ábrázolását mutatja annak a részfának, amely a kijelölt elemen gyökerezik. A C#-példában szereplő metódusnak Main() megfelelő MethodDeclaration csomópont esetében próbálkozzon ezekkel a lépésekkel. 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 elemnek megfelelő tulajdonságok megtekintéséhez.

A fa különböző elemeinek szintaktikai gráfjait többször is megtekintheti, és a gráfok mindig ugyanabban az ablakban jelennek meg a Visual Studióban. Ezt az ablakot a Visual Studióban egy kényelmes helyen rögzítheti, í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.

A vizualizációs eszköz ablakával és a szintaxis gráfablakával használható dokkolás elrendezése:

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

Egy másik lehetőség, ha a szintaxis gráfablakát egy második monitorra helyezi egy kettős monitorbeállításban.

Szemantikák 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() fájlba a C#-példában. 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 parancsra , és válassza a Szimbólum megtekintése (ha van) parancsot. Vegye észre, hogy a legtöbb menüelem rendelkezik a "ha van" megjelöléssel. A Szintaxisábrázoló a csomópontok tulajdonságait vizsgálja, beleértve azokat a tulajdonságokat is, amelyek nem feltétlenül minden csomóponton vannak jelen.

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

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

Kattintson a jobb gombbal ugyanarra az AddExpression csomópontra, és válassza a View TypeSymbol (ha van ilyen) lehetőséget. A vizualizáció tulajdonságrácsa az alábbi ábrán látható módon frissül, ami azt jelzi, hogy a kijelölt kifejezés típusa .Int32

TypeSymbol tulajdonságai

Kattintson a jobb gombbal ugyanarra az AddExpression csomópontra, és válassza a Konvertált típus megtekintése (ha van) lehetőséget. A tulajdonságrács frissül, jelezve, hogy bár a kifejezés típusa Int32, a kifejezés konvertált típusa a következő ábrán látható módon Double jelenik meg. Ez a csomópont konvertált típusszimbólum információt tartalmaz, mert a Int32 kifejezés olyan környezetben fordul elő, ahol át kell alakítani Double típusra. Ez az átalakítás megfelel a x típusnak, amely a hozzárendelési operátor bal oldalán lévő Double változóhoz van megadva.

A TypeSymbol konvertált tulajdonságai

Végül kattintson a jobb gombbal ugyanarra az AddExpression csomópontra, és válassza az Állandó érték megtekintése (ha van) lehetőséget. A tulajdonságrács azt mutatja, hogy a kifejezés értéke egy fordítási időállandó értékekkel 2.

Állandó érték

Az előző példa a Visual Basicben is replikálható. Írja be a Dim x As Double = 1 + 1 egy Visual Basic-fájlban. Válassza ki a kifejezést 1 + 1 a kódszerkesztő ablakban. A vizualizáló kiemeli a vizualizáló megfelelő AddExpression csomópontot. Ismételje meg az AddExpression előző 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 bevezet egy C nevű aliast, amely a fájl tetején található System.Console típushoz van társítva, és ezt az aliast használja a Main() belsejében. Válassza ki ennek az aliasnak a használatát a C metóduson C.WriteLine()belül Main() . 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

Kattintson a jobb gombbal ugyanarra az IdentifierName csomópontra, és válassza az AliasSymbol megtekintése (ha van ilyen) lehetőséget. 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ő AliasSymbolról nyújt információt.

AliasSymbol tulajdonságai

Vizsgálja meg a deklarált típusnak, metódusnak és tulajdonságnak megfelelő szimbólumot. Válassza ki a megfelelő csomópontot a vizualizációban, és kattintson a jobb gombbal a Nézetszimbólum eléréséhez (ha van ilyen). Válassza ki a metódust Sub Main(), beleértve a metódus törzsét is. Kattintson a jobb gombbal a megfelelő SubBlock csomópontra a vizualizációban, és válassza a Szimbólum megtekintése (ha van) lehetőséget. A tulajdonságrács azt mutatja, hogy az alblokkMetódusszymboljának neve Main visszatérési típussal rendelkezikVoid.

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 ellenőrzési műveletek csak csomópontokon érhetők el. Nem érhetők el tokeneken vagy trivia-n. Nem minden csomópont rendelkezik érdekes szemantikai információkkal. Ha egy csomópont nem rendelkezik érdekes szemantikai információkkal, a jobb gombbal kattintva és a Nézet * szimbólum (ha van ilyen) lehetőség választásával ü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 szintaxisvizualizáció a kódban való navigálás, a forrás szerkesztése és módosítása során frissíti annak megjelenítését. Zavaró lehet, amikor nem használod.