Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje přehled nástroje Vizualizéru syntaxe, který se dodává jako součást sady SDK kompilátoru .NET (Roslyn). Vizualizátor syntaxe je nástrojové okno, které vám pomůže zkoumat a objevovat syntaktické stromy. Je to základní nástroj pro pochopení modelů pro kód, který chcete analyzovat. Je to také ladicí pomůcka při vývoji vlastních aplikací pomocí sady .NET Compiler Platform (Roslyn). Při vytváření prvních analyzátorů otevřete tento nástroj. Vizualizér vám pomůže pochopit modely používané 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 sady Visual Studio
Sada .NET Compiler Platform SDK v instalačním programu sady Visual Studio se dá najít dvěma různými způsoby:
Instalace pomocí instalačního programu sady Visual Studio – zobrazení úloh
Sada .NET Compiler Platform SDK není automaticky vybrána jako součást sady funkcí pro vývoj rozšíření sady Visual Studio. Musíte ho vybrat jako volitelnou komponentu.
- Spuštění instalačního programu sady Visual Studio
- Vyberte Upravit.
- Zkontrolujte pracovní úlohu vývoje rozšíření pro Visual Studio.
- Rozbalte uzel vývoje rozšíření sady Visual Studio ve stromu přehledů.
- Zaškrtněte to okénko pro sadu .NET Compiler Platform SDK. Najdete ho jako poslední v volitelných součástech.
Volitelně můžete také chtít, aby editor DGML zobrazoval grafy ve vizualizéru:
- Otevřete uzel Jednotlivé komponenty v přehledovém stromu.
- Zaškrtněte políčko editoru DGML.
Instalace pomocí instalačního programu sady Visual Studio – karta Jednotlivé komponenty
- Spuštění instalačního programu sady Visual Studio
- Vyberte Upravit.
- Vyberte kartu Jednotlivé součásti
- Zaškrtněte to okénko pro sadu .NET Compiler Platform SDK. Najdete ho 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:
- Zaškrtněte políčko pro editor DGML. Najdete ho v části Nástroje kódu .
Prostudujte si koncepty používané v sadě .NET Compiler Platform SDK v přehledovém článku . Poskytuje úvod do stromů syntaxe, uzlů, tokenů a trivií.
Syntax Visualizer
Vizualizér syntaxe umožňuje kontrolu stromu syntaxe pro soubor kódu jazyka C# nebo Visual Basic v aktuálním okně aktivního editoru v integrovaném vývojovém prostředí sady Visual Studio. Vizualizér lze spustit kliknutím na Zobrazit>Další okna>Vizualizér syntaxe. Můžete také použít panel nástrojů Snadné spuštění v pravém horním rohu. Zadejte syntaxi 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.
Ukotvěte okno nástrojů na vhodném místě v sadě Visual Studio, například na levé straně. Vizualizér zobrazuje 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. 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, vizualizér zobrazí 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 strom syntaxe v horní části a mřížku vlastností v dolní části. Mřížka vlastností zobrazuje vlastnosti položky, která je aktuálně vybrána ve stromu, včetně typu .NET a typu (SyntaxKind) položky.
Stromy syntaxe tvoří tři typy položek – uzly, znaky a trivia. Další informace o těchto typech naleznete v článku Práce se syntaxí. Položky jednotlivých typů 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 zobrazuje také vlastní rozsah. Rozsah je index (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 rozsah, který je pět znaků široký, [0..5). Zápis [..) znamená, že počáteční index je součástí rozsahu, ale koncový index není.
Strom můžete procházet dvěma způsoby:
- Rozbalte nebo klikněte na položky ve stromu. Vizualizér automaticky vybere text odpovídající rozsahu této položky v editoru kódu.
- Klikněte nebo vyberte text v editoru kódu. Pokud v předchozím příkladu jazyka Visual Basic vyberete řádek obsahující modul Modulu1 v editoru kódu, vizualizér automaticky přejde do odpovídajícího uzlu ModuleStatement ve stromu.
Vizualizér zvýrazní položku ve stromu, jejíž rozsah nejlépe odpovídá rozsahu 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() uvnitř Main(). Při psaní aktualizuje vizualizér strom.
Po napsání Console.pozastavte psaní . Strom má některé položky vybarvené růžovou barvou. V tomto okamžiku se v zadaném kódu zobrazují chyby (označované také jako Diagnostika). Tyto chyby jsou připojené k uzlům, tokenům a trivii ve stromu syntaxe. Vizualizér vám ukáže, které položky mají připojené chyby, které zvýrazňují pozadí růžovou barvou. Chyby můžete zkontrolovat u libovolné položky, která je barevně růžová, tak, že na položku najedete myší. Vizualizér zobrazuje pouze syntaktické chyby (tyto chyby související se syntaxí zadaného kódu); nezobrazuje žádné sémantické chyby.
Grafy syntaxe
Klikněte pravým tlačítkem myši na libovolnou položku ve stromu a klikněte na zobrazit orientovaný syntaxový graf.
Vizualizér zobrazuje grafické znázornění podstromu se kořenem ve vybraném prvku. Vyzkoušejte tento postup pro uzel MethodDeclaration odpovídající Main() metodě v příkladu jazyka C#. Vizualizér zobrazí graf syntaxe, který vypadá takto:
Prohlížeč grafů syntaxe má možnost zobrazit legendu pro jeho 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 pohodlném místě ve Visual Studiu, abyste nemuseli přepínat mezi kartami a mohli prohlížet nový graf syntaxe. Při práci s okny editoru kódu je pohodlné využít dolní část obrazovky.
Toto je ukotvené rozložení pro použití s oknem vizualizéru a oknem grafu syntaxe:
Další možností je umístit okno grafu syntaxe na druhý monitor v nastavení duálního monitoru.
Kontrola sémantiky
Vizualizér syntaxe umožňuje základní kontrolu symbolů a sémantických informací. Zadejte double x = 1 + 1; uvnitř Main() v příkladu jazyka C#. Pak vyberte výraz 1 + 1 v okně editoru kódu. Vizualizér zvýrazní uzel AddExpression v vizualizéru. Klikněte pravým tlačítkem na tento AddExpression a klikněte na symbol zobrazení (pokud existuje). Všimněte si, že většina položek nabídky má kvalifikátor "if any". 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 vidět na následujícím obrázku: Symbol výrazu je SynthesizedIntrinsicOperatorSymbol s Kind = Method.
Klikněte pravým tlačítkem na stejný uzel AddExpression a vyberte View TypeSymbol (pokud existuje). Mřížka vlastností ve vizualizéru se aktualizuje, jak je znázorněno na následujícím obrázku, což znamená, že typ vybraného výrazu je Int32.
Klikněte pravým tlačítkem na stejný uzel AddExpression a vyberte Zobrazit konvertovaný TypeSymbol (pokud existuje). Mřížka vlastností aktualizuje informace, že i když je typ výrazu Int32, převedený typ tohoto výrazu je Double, jak je znázorněno na následujícím obrázku. Tento uzel obsahuje informace o převedených symbolech typu, protože Int32 výraz se vyskytuje v kontextu, kde musí být převeden na .Double Tento převod splňuje typ Double zadaný pro proměnnou x na levé straně přiřazovacího operátoru.
Nakonec klikněte pravým tlačítkem na stejný uzel AddExpression a vyberte Zobrazit konstantní hodnotu (pokud existuje). Tabulka vlastností ukazuje, že hodnota výrazu je konstanta doby kompilace s hodnotou 2.
Předchozí příklad lze také replikovat v jazyce Visual Basic. Napište Dim x As Double = 1 + 1 do souboru jazyka Visual Basic. Vyberte výraz 1 + 1 v okně editoru kódu. Vizualizér zvýrazní odpovídající uzel AddExpression v vizualizéru. Opakujte předchozí kroky pro tento AddExpression a měli byste vidět stejné 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 představuje alias 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 CC.WriteLine(), uvnitř metody Main(). Vizualizér vybere odpovídající uzel IdentifierName ve vizualizéru. Klikněte pravým tlačítkem myši na tento uzel a klikněte na symbol zobrazení (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:
Klikněte pravým tlačítkem na stejný uzel IdentifierName a vyberte Zobrazit aliasSymbol (pokud existuje). Mřížka vlastností označuje, že identifikátor je alias s názvem C , který je svázán s System.Console cílem. Jinými slovy, mřížka vlastností poskytuje informace týkající se AliasSymbol odpovídající identifikátoru C.
Zkontrolujte symbol odpovídající jakémukoli deklarovanému typu, metodě, vlastnosti. Vyberte odpovídající uzel ve vizualizéru a kliknutím pravým tlačítkem myši přejděte k symbolu zobrazení (pokud existuje). Vyberte metodu Sub Main(), včetně těla metody. Klikněte pravým tlačítkem myši na odpovídající uzel dílčího bloku ve vizualizéru a vyberte Zobrazit symbol (pokud existuje). Mřížka vlastností ukazuje, že MethodSymbol pro tento SubBlock má název Main a jeho vrácený typ je Void.
Výše uvedené příklady jazyka Visual Basic je možné snadno replikovat v jazyce C#. Zadejte using C = System.Console; místo Imports C = System.Console aliasu. Předchozí kroky v jazyce C# poskytují identické výsledky v okně vizualizéru.
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 neobsahuje zajímavé sémantické informace, zobrazí se po kliknutí pravým tlačítkem myši a výběru možnosti Zobrazit * Symbol (pokud existuje) prázdná mřížka vlastností.
Další informace o rozhraních API pro provádění sémantické analýzy naleznete v přehledovém dokumentu Práce se sémantikou.
Zavření vizualizéru syntaxe
Okno vizualizéru můžete zavřít, když ho nepoužíváte k prozkoumání zdrojového kódu. Vizualizér syntaxe aktualizuje zobrazení při procházení kódu, úpravách a změně zdroje. To může být rušivé, když ho nepoužíváte.