Sdílet prostřednictvím


Prozkoumání kódu pomocí vizualizéru syntaxe Roslyn v sadě Visual Studio

Tento článek obsahuje přehled nástroje Vizualizér syntaxe, který se dodává jako součást sady .NET COMPILER PLATFORM (Roslyn) SDK. Vizualizér syntaxe je okno nástroje, které vám pomůže prozkoumat a prozkoumat stromy syntaxe. Je to základní nástroj pro pochopení modelů pro kód, který chcete analyzovat. Je to také pomůcka pro ladění při vývoji vlastních aplikací pomocí sady .NET COMPILER PLATFORM (Roslyn) SDK. Při vytváření prvních analyzátorů otevřete tento nástroj. Vizualizér vám pomůže porozumět modelům používaným rozhraními API. Ke kontrole kódu a pochopení stromů syntaxe můžete použít také nástroje, jako je SharpLab nebo LINQPad .

Pokyny k instalaci – Instalační program pro Visual Studio

Sadu .NET Compiler Platform SDK v Instalační program pro Visual Studio najdete dvěma různými způsoby:

Instalace pomocí zobrazení Instalační program pro Visual Studio – Úlohy

Sada .NET Compiler Platform SDK není automaticky vybrána jako součást úlohy vývoj rozšíření sady Visual Studio. Musíte ho vybrat jako volitelnou komponentu.

  1. Spuštění Instalační program pro Visual Studio
  2. Vyberte Upravit.
  3. Projděte si úlohu Vývoj rozšíření sady Visual Studio .
  4. Otevřete uzel Vývoj rozšíření sady Visual Studio ve stromu souhrnu.
  5. Zaškrtněte políčko pro .NET Compiler Platform SDK. Najdete ho jako poslední pod volitelnými komponentami.

Volitelně můžete také chtít, aby editor DGML zobrazoval grafy ve vizualizéru:

  1. Otevřete uzel Jednotlivé komponenty ve stromu souhrnu.
  2. Zaškrtněte políčko editoru DGML.

Instalace pomocí karty Instalační program pro Visual Studio – Jednotlivé komponenty

  1. Spuštění Instalační program pro Visual Studio
  2. Vyberte Upravit.
  3. Vyberte kartu Jednotlivé komponenty .
  4. Zaškrtněte políčko pro .NET Compiler Platform SDK. Najdete ji v horní části v části Kompilátory, nástroje sestavení a moduly runtime .

Volitelně můžete také chtít, aby editor DGML zobrazoval grafy ve vizualizéru:

  1. Zaškrtněte políčko Editor DGML. Najdete ho v části Nástroje pro kód .

Seznamte se s koncepty používanými v sadě .NET Compiler Platform SDK v článku s přehledem. Obsahuje úvod ke stromům syntaxe, uzlům, tokenům a triviálií.

Vizualizér syntaxe

Vizualizér syntaxe umožňuje kontrolu stromu syntaxe pro soubor kódu jazyka C# nebo Visual Basic v aktuálním aktivním okně editoru uvnitř integrovaného vývojového prostředí sady Visual Studio. Vizualizér lze spustit kliknutím na Zobrazit> dalšívizualizér syntaxeWindows>. Můžete také použít panel nástrojů Snadné spuštění v pravém horním rohu. Zadejte "syntax" a měl by se zobrazit příkaz pro otevření Vizualizéru syntaxe .

Tento příkaz otevře Vizualizér syntaxe jako plovoucí okno nástroje. Pokud nemáte otevřené okno editoru kódu, je zobrazení prázdné, jak je znázorněno na následujícím obrázku.

Okno nástroje Vizualizér syntaxe

Ukotvit toto okno nástroje na vhodné místo v sadě Visual Studio, například na levé straně. Vizualizér zobrazí informace o aktuálním souboru kódu.

Vytvořte nový projekt pomocí příkazu Soubor>nový projekt . Můžete vytvořit projekt jazyka Visual Basic nebo C#. Když Visual Studio otevře hlavní soubor kódu pro tento projekt, vizualizér zobrazí strom syntaxe pro tento projekt. V této instanci sady Visual Studio můžete otevřít libovolný existující soubor jazyka C# nebo Visual Basic a vizualizér zobrazí strom syntaxe tohoto souboru. Pokud máte v sadě Visual Studio otevřeno více souborů kódu, zobrazí vizualizér strom syntaxe pro aktuálně aktivní soubor kódu (soubor kódu, na který je fokus klávesnice).

Jak je znázorněno na předchozích obrázcích, okno nástroje vizualizéru zobrazuje nahoře strom syntaxe a dole mřížku vlastností. Mřížka vlastností zobrazuje vlastnosti položky, která je aktuálně vybrána ve stromu, včetně typu .NET a kind (SyntaxKind) položky.

Stromy syntaxe tvoří tři typy položek – uzly, tokeny a trivia. Další informace o těchto typech najdete v článku Práce se syntaxí . Položky každého typu jsou reprezentovány jinou barvou. Kliknutím na tlačítko Legenda zobrazíte přehled použitých barev.

Každá položka ve stromu také zobrazuje vlastní rozsah. Rozpětí je indexy (počáteční a koncová pozice) daného uzlu v textovém souboru. V předchozím příkladu jazyka C# má vybraný token UsingKeyword [0..5) rozpětí o šířce 5 znaků[ 0..5). Zápis "[..)" znamená, že počáteční index je součástí rozsahu, ale koncový index nikoli.

Ve stromu se můžete pohybovat dvěma způsoby:

  • Rozbalte nebo klikněte na položky ve stromu. Vizualizér v editoru kódu automaticky vybere text odpovídající rozsahu této položky.
  • Klikněte nebo vyberte text v editoru kódu. Pokud v předchozím příkladu jazyka Visual Basic vyberete řádek obsahující "Module Module1" v editoru kódu, vizualizér automaticky přejde na odpovídající uzel ModuleStatement ve stromu.

Vizualizér zvýrazní položku ve stromu, jejíž rozsah nejlépe odpovídá rozpětí textu vybraného v editoru.

Vizualizér aktualizuje strom tak, aby odpovídal změnám v aktivním souboru kódu. Přidejte volání do Console.WriteLine() .Main() Při psaní aktualizuje vizualizér strom.

Jakmile zadáte Console., pozastavte psaní. Strom obsahuje některé položky v růžové barvě. V tomto okamžiku jsou v zadaném kódu chyby (označované také jako diagnostika). Tyto chyby jsou připojeny k uzlům, tokenům a triviálií ve stromu syntaxe. Vizualizér vám ukáže, ke kterým položkám jsou připojeny chyby, a zvýrazní pozadí růžově. Chyby u libovolné položky s růžovou barvou můžete zkontrolovat tak, že na položku najedete myší. Vizualizér zobrazí pouze syntaktické chyby (chyby související se syntaxí zadaného kódu); nezobrazuje žádné sémantické chyby.

Grafy syntaxe

Klikněte pravým tlačítkem na libovolnou položku ve stromu a klikněte na Zobrazit graf orientované syntaxe.

Vizualizér zobrazí grafické znázornění podstromu s kořenem u vybrané položky. Vyzkoušejte tyto kroky pro uzel MethodDeclaration odpovídající Main() metodě v příkladu jazyka C#. Vizualizér zobrazí graf syntaxe, který vypadá takto:

Zobrazení grafu syntaxe jazyka C#

Prohlížeč grafů syntaxe má možnost zobrazit legendu pro své barevné schéma. Můžete také najet myší na jednotlivé položky v grafu syntaxe a zobrazit vlastnosti odpovídající dané položce.

Grafy syntaxe pro různé položky ve stromu můžete zobrazit opakovaně a grafy se vždy zobrazí ve stejném okně v sadě Visual Studio. Toto okno můžete ukotvit na vhodné místo v sadě Visual Studio, abyste nemuseli přepínat mezi kartami, abyste mohli zobrazit nový graf syntaxe. Dolní část pod okny editoru kódu je často pohodlná.

Tady je rozložení ukotvení, které se má použít s oknem nástroje vizualizéru a s oknem grafu syntaxe:

Jedno ukotvené rozložení pro vizualizér a okno grafu syntaxe

Další možností je umístit okno grafu syntaxe na druhý monitor v nastavení se dvěma monitory.

Kontrola sémantiky

Vizualizér syntaxe umožňuje základní kontrolu symbolů a sémantických informací. V příkladu jazyka C# zadejte double x = 1 + 1; text inside Main(). Pak vyberte výraz 1 + 1 v okně editoru kódu. Vizualizér zvýrazní uzel AddExpression ve vizualizéru. Klikněte pravým tlačítkem na tento AddExpression a klikněte na Zobrazit symbol (pokud existuje). Všimněte si, že většina položek nabídky má kvalifikátor "pokud existuje". Vizualizér syntaxe kontroluje vlastnosti uzlu, včetně vlastností, které nemusí být přítomné pro všechny uzly.

Mřížka vlastností ve vizualizéru se aktualizuje, jak je znázorněno na následujícím obrázku: Symbol výrazu je SyntetizovánIntrinsicOperatorSymbol s Type = Method.

Vlastnosti symbolů ve vizualizéru syntaxe

Zkuste View TypeSymbol (pokud existuje) pro stejný uzel AddExpression . Mřížka vlastností ve vizualizéru se aktualizuje, jak je znázorněno na následujícím obrázku, což značí, že typ vybraného výrazu je Int32.

Vlastnosti TypeSymbol

Zkuste zobrazit převedený typSymbol (pokud existuje) pro stejný uzel AddExpression . Aktualizuje se mřížka vlastností, která označuje, že i když je Int32typ výrazu , převedený typ výrazu je Double znázorněný na následujícím obrázku. Tento uzel obsahuje převedené informace o symbolu typu, Int32 protože výraz se vyskytuje v kontextu, kde musí být převeden na Double. Tento převod splňuje Double typ zadaný pro proměnnou x na levé straně operátoru přiřazení.

Převedené vlastnosti TypeSymbol

Nakonec zkuste zobrazit konstantní hodnotu (pokud existuje) pro stejný uzel AddExpression . Mřížka vlastností ukazuje, že hodnota výrazu je časová konstanta kompilace s hodnotou 2.

Konstantní hodnota

Předchozí příklad lze také replikovat v jazyce Visual Basic. Zadejte Dim x As Double = 1 + 1 soubor jazyka Visual Basic. Vyberte výraz 1 + 1 v okně editoru kódu. Vizualizér zvýrazní odpovídající uzel AddExpression ve vizualizéru. Opakujte předchozí kroky pro tento AddExpression a měli byste vidět identické výsledky.

Prozkoumejte další kód v jazyce Visual Basic. Aktualizujte hlavní soubor jazyka Visual Basic následujícím kódem:

Imports C = System.Console

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

Tento kód zavádí alias s názvem C , který se mapuje na typ System.Console v horní části souboru a používá tento alias uvnitř Main(). Vyberte použití tohoto aliasu v C.WriteLine()objektu C uvnitř Main() metody. Vizualizér vybere odpovídající uzel IdentifierName ve vizualizéru. Klikněte pravým tlačítkem na tento uzel a klikněte na Zobrazit symbol (pokud existuje). Mřížka vlastností označuje, že tento identifikátor je vázán na typ System.Console , jak je znázorněno na následujícím obrázku:

Vlastnosti symbolu C ve vizualizéru syntaxe

Zkuste Zobrazit AliasSymbol (pokud existuje) pro stejný uzel IdentifierName . Mřížka vlastností označuje, že identifikátor je alias s názvem C , který je vázán na System.Console cíl. Jinými slovy, mřížka vlastností poskytuje informace týkající se aliasSymbol odpovídající identifikátoru C.

AliasSymbol – vlastnosti

Zkontrolujte symbol odpovídající deklarovanému typu, metodě, vlastnosti. Vyberte odpovídající uzel ve vizualizéru a klikněte na Zobrazit symbol (pokud existuje). Vyberte metodu Sub Main()včetně textu metody. Klikněte na Zobrazit symbol (pokud existuje) pro odpovídající uzel SubBlock ve vizualizéru. V mřížce vlastností se zobrazuje MethodSymbol pro tento dílčí blok má název Main s návratovým typem Void.

Zobrazení symbolu pro deklaraci metody

Výše uvedené příklady jazyka Visual Basic lze snadno replikovat v jazyce C#. Místo aliasu Imports C = System.Console zadejteusing C = System.Console;. Předchozí kroky v jazyce C# poskytují stejné výsledky v okně vizualizéru.

Operace sémantické kontroly jsou k dispozici pouze na uzlech. Nejsou k dispozici u tokenů nebo trivií. Ne všechny uzly mají zajímavé sémantické informace ke kontrole. Pokud uzel nemá zajímavé sémantické informace, kliknutím na Zobrazit * Symbol (pokud existuje) se zobrazí prázdná mřížka vlastností.

Další informace o rozhraních API pro provádění sémantické analýzy najdete v dokumentu s přehledem práce se sémantikou .

Zavření vizualizéru syntaxe

Okno vizualizéru můžete zavřít, pokud ho nepoužíváte ke zkoumání zdrojového kódu. Vizualizér syntaxe aktualizuje zobrazení při procházení kódu, úpravách a změnách zdroje. Když ho nepoužíváte, může být rušivý.