Visual Studio'da Roslyn söz dizimi görselleştiricisi ile kodu keşfetme
Bu makalede, .NET Compiler Platform ("Roslyn") SDK'sının bir parçası olarak gelen Söz Dizimi Görselleştiricisi aracına genel bir bakış sağlanır. Söz Dizimi Görselleştiricisi, söz dizimi ağaçlarını incelemenize ve keşfetmenize yardımcı olan bir araç penceresidir. Analiz etmek istediğiniz kod modellerini anlamak için gerekli bir araçtır. Ayrıca, .NET Compiler Platform ("Roslyn") SDK'sını kullanarak kendi uygulamalarınızı geliştirirken de hata ayıklama yardımı sağlar. İlk çözümleyicilerinizi oluştururken bu aracı açın. Görselleştirici, API'ler tarafından kullanılan modelleri anlamanıza yardımcı olur. Kodu incelemek ve söz dizimi ağaçlarını anlamak için SharpLab veya LINQPad gibi araçları da kullanabilirsiniz.
Yükleme yönergeleri - Visual Studio Yükleyicisi
Visual Studio Yükleyicisi .NET Compiler Platform SDK'sını bulmanın iki farklı yolu vardır:
Visual Studio Yükleyicisi - İş yükleri görünümünü kullanarak yükleme
.NET Compiler Platform SDK'sı, Visual Studio uzantısı geliştirme iş yükünün bir parçası olarak otomatik olarak seçilmez. İsteğe bağlı bir bileşen olarak seçmelisiniz.
- Visual Studio Yükleyicisi çalıştırma
- Değiştir'i seçin
- Visual Studio uzantısı geliştirme iş yükünü denetleyin.
- Özet ağacında Visual Studio uzantısı geliştirme düğümünü açın.
- .NET Compiler Platform SDK kutusunu işaretleyin. Bunu isteğe bağlı bileşenler altında en son bulabilirsiniz.
İsteğe bağlı olarak, DGML düzenleyicisinin görselleştiricide grafikleri görüntülemesini de istersiniz:
- Özet ağacındaKim bileşenler düğümünü açın.
- DGML düzenleyicisi kutusunu işaretleyin
Visual Studio Yükleyicisi - Bağımsız bileşenler sekmesini kullanarak yükleme
- Visual Studio Yükleyicisi çalıştırma
- Değiştir'i seçin
- Tek tek bileşenler sekmesini seçin
- .NET Compiler Platform SDK kutusunu işaretleyin. En üstte Derleyiciler, derleme araçları ve çalışma zamanları bölümünde bulabilirsiniz.
İsteğe bağlı olarak, DGML düzenleyicisinin görselleştiricide grafikleri görüntülemesini de istersiniz:
- DGML düzenleyicisi kutusunu işaretleyin. Bunu Kod araçları bölümünde bulabilirsiniz.
Genel bakış makalesini okuyarak .NET Compiler Platform SDK'sında kullanılan kavramlar hakkında bilgi edinin. Söz dizimi ağaçlarına, düğümlere, belirteçlere ve trivia'ya giriş sağlar.
Söz Dizimi Görselleştiricisi
Söz Dizimi Görselleştiricisi, Visual Studio IDE içindeki geçerli etkin düzenleyici penceresinde C# veya Visual Basic kod dosyası için söz dizimi ağacının incelenmesini sağlar. Görselleştirici, Diğer Windows>Söz Dizimi Görselleştiricisi'ne tıklayarak > başlatılabilir. Sağ üst köşedeki Hızlı Başlat araç çubuğunu da kullanabilirsiniz. "söz dizimi" yazın ve Söz Dizimi Görselleştiricisi'ni açma komutu görüntülenmelidir.
Bu komut Söz Dizimi Görselleştiricisi'ni kayan araç penceresi olarak açar. Açık bir kod düzenleyicisi pencereniz yoksa, aşağıdaki şekilde gösterildiği gibi ekran boş olur.
Bu araç penceresini Visual Studio'da sol taraf gibi uygun bir konuma sabitleyin. Görselleştirici geçerli kod dosyası hakkındaki bilgileri gösterir.
Dosya>Yeni Proje komutunu kullanarak yeni bir proje oluşturun. Visual Basic veya C# projesi oluşturabilirsiniz. Visual Studio bu projenin ana kod dosyasını açtığında, görselleştirici söz dizimi ağacını görüntüler. Bu Visual Studio örneğinde var olan herhangi bir C# / Visual Basic dosyasını açabilirsiniz ve görselleştirici bu dosyanın söz dizimi ağacını görüntüler. Visual Studio'nun içinde açık birden çok kod dosyanız varsa, görselleştirici o anda etkin olan kod dosyasının söz dizimi ağacını (klavye odağı olan kod dosyası) görüntüler.
Önceki görüntülerde gösterildiği gibi, görselleştirici araç penceresi söz dizimi ağacını en üstte, özellik kılavuzunu ise en altta görüntüler. Özellik kılavuzu, o anda ağaçta seçili olan öğenin .NET Türü ve Öğenin Kind (SyntaxKind) dahil özelliklerini görüntüler.
Söz dizimi ağaçları üç tür öğeden oluşur: düğümler, belirteçler ve trivia. Söz dizimi ile çalışma makalesinde bu türler hakkında daha fazla bilgi edinebilirsiniz. Her türdeki öğeler farklı bir renk kullanılarak temsil edilir. Kullanılan renklere genel bir bakış için 'Gösterge' düğmesine tıklayın.
Ağaçtaki her öğe kendi aralığını da görüntüler. Span, bu düğümün metin dosyasındaki dizinleridir (başlangıç ve bitiş konumu). Önceki C# örneğinde, seçilen "UsingKeyword [0..5)" belirtecinin beş karakter genişliğinde [0..5) bir Span değeri vardır. "[..)" gösterimi, başlangıç dizininin span'ın bir parçası olduğu, ancak bitiş dizininin olmadığı anlamına gelir.
Ağaçta gezinmenin iki yolu vardır:
- Ağaçtaki öğeleri genişletin veya tıklayın. Görselleştirici, kod düzenleyicisinde bu öğenin yayılmasına karşılık gelen metni otomatik olarak seçer.
- Kod düzenleyicisinde metne tıklayın veya seçin. Önceki Visual Basic örneğinde, kod düzenleyicisinde "Module Module1" içeren satırı seçerseniz görselleştirici otomatik olarak ağaçtaki ilgili ModuleStatement düğümüne gider.
Görselleştirici, ağaçta bulunan ve düzenleyicide seçilen metnin yayılma alanıyla en iyi eşleşen öğeyi vurgular.
Görselleştirici, etkin kod dosyasındaki değişikliklerle eşleşecek şekilde ağacı yeniler. içine Main()
bir çağrı Console.WriteLine()
ekleyin. Siz yazarken görselleştirici ağacı yeniler.
yazdıktan Console.
sonra yazmayı duraklat. Ağaçta pembe renkli bazı öğeler vardır. Bu noktada, yazılan kodda hatalar ('Tanılama' olarak da adlandırılır) vardır. Bu hatalar söz dizimi ağacındaki düğümlere, belirteçlere ve önemsiz öğelere eklenir. Görselleştirici, arka planı pembe renkle vurgulayarak hangi öğelerin hatalara sahip olduğunu gösterir. Öğenin üzerine gelerek pembe renkli herhangi bir öğedeki hataları inceleyebilirsiniz. Görselleştirici yalnızca söz dizimsel hataları görüntüler (yazılan kodun söz dizimi ile ilgili hatalar); herhangi bir semantik hata görüntülemez.
Söz Dizimi Grafikleri
Ağaçtaki herhangi bir öğeye sağ tıklayın ve Yönlendirilmiş Söz Dizimi Grafiğini Görüntüle'ye tıklayın.
Görselleştirici, seçilen öğeye kök erişimli alt ağacının grafiksel bir gösterimini görüntüler. C# örneğindeki yöntemine Main()
karşılık gelen MethodDeclaration düğümü için bu adımları deneyin. Görselleştirici aşağıdaki gibi görünen bir söz dizimi grafiği görüntüler:
Söz dizimi grafı görüntüleyicisi, renklendirme düzeni için gösterge görüntüleme seçeneğine sahiptir. Söz dizimi grafiğindeki tek tek öğelerin üzerine fareyle birlikte gelerek bu öğeye karşılık gelen özellikleri de görüntüleyebilirsiniz.
Ağaçtaki farklı öğeler için söz dizimi grafiklerini art arda görüntüleyebilirsiniz ve grafikler her zaman Visual Studio'da aynı pencerede görüntülenir. Yeni bir söz dizimi grafını görüntülemek için sekmeler arasında geçiş yapmanız gerekmeyecek şekilde bu pencereyi Visual Studio'nun içinde uygun bir konuma yerleştirebilirsiniz. Aşağıdaki kod düzenleyicisi pencerelerinin alt kısmı genellikle kullanışlıdır.
Görselleştirici araç penceresi ve söz dizimi graf penceresi ile kullanılacak yerleştirme düzeni aşağıdadır:
Bir diğer seçenek de söz dizimi grafı penceresini çift monitör kurulumunda ikinci bir monitöre yerleştirmektir.
Semantiği inceleme
Söz Dizimi Görselleştiricisi, sembollerin ve anlamsal bilgilerin ilkel olarak denetlenmesini sağlar. double x = 1 + 1;
C# örneğinde Main() yazın. Ardından, kod düzenleyicisi penceresinde ifadeyi 1 + 1
seçin. Görselleştirici, görselleştiricideki AddExpression düğümünü vurgular. Bu AddExpression öğesine sağ tıklayın ve Simgeyi Görüntüle'ye (varsa) tıklayın. Menü öğelerinin çoğunun "varsa" niteleyicisine sahip olduğuna dikkat edin. Söz Dizimi Görselleştiricisi, tüm düğümler için mevcut olmayabilecek özellikler de dahil olmak üzere bir Düğümün özelliklerini inceler.
Görselleştiricideki özellik kılavuzu aşağıdaki şekilde gösterildiği gibi güncelleştirilir: İfadenin simgesi Kind = Method ile bir SynthesizedIntrinsicOperatorSymbol'dır.
Aynı AddExpression düğümü için TypeSymbol Görüntüle'yi (varsa) deneyin. Görselleştiricideki özellik kılavuzu aşağıdaki şekilde gösterildiği gibi güncelleştirilir ve seçilen ifadenin türünün olduğunu Int32
gösterir.
Aynı AddExpression düğümü için Dönüştürülen TypeSymbol'ı (varsa) görüntülemeyi deneyin. özellik kılavuzu, ifadenin türü olmasına rağmen ifadenin Int32
dönüştürülmüş türünün aşağıdaki şekilde gösterildiği gibi olduğunu Double
gösterir. İfadenin dönüştürülmesi gereken Double
bir bağlamda gerçekleştiğindenInt32
, bu düğüm dönüştürülmüş tür simgesi bilgilerini içerir. Bu dönüştürme, atama işlecinin sol tarafındaki değişken x
için belirtilen türü karşılarDouble
.
Son olarak, aynı AddExpression düğümü için Sabit Değeri Görüntüle'yi (varsa) deneyin. özellik kılavuzu, ifadenin değerinin değeriyle 2
bir derleme zamanı sabiti olduğunu gösterir.
Yukarıdaki örnek, Visual Basic'te de çoğaltılabilir. Bir Visual Basic dosyası yazın Dim x As Double = 1 + 1
. Kod düzenleyicisi penceresinde ifadeyi 1 + 1
seçin. Görselleştirici, görselleştiricide karşılık gelen AddExpression düğümünü vurgular. Bu AddExpression için önceki adımları yineleyin; aynı sonuçları görmeniz gerekir.
Visual Basic'te daha fazla kod inceleyin. Ana Visual Basic dosyanızı aşağıdaki kodla güncelleştirin:
Imports C = System.Console
Module Program
Sub Main(args As String())
C.WriteLine()
End Sub
End Module
Bu kod, dosyanın en üstündeki türe System.Console
eşleyen ve içinde Main()
bu diğer adı kullanan adlı C
bir diğer ad tanıtır. yönteminin içindeki Main()
bu diğer adın C
C.WriteLine()
kullanımını seçin. Görselleştirici, görselleştiricide karşılık gelen IdentifierName düğümünü seçer. Bu düğüme sağ tıklayın ve Simgeyi Görüntüle'ye (varsa) tıklayın. Özellik kılavuzu, bu tanımlayıcının aşağıdaki şekilde gösterildiği gibi türe System.Console
bağlı olduğunu gösterir:
Aynı IdentifierName düğümü için DiğerAdSymbol Görüntüle'yi (varsa) deneyin. Özellik kılavuzu, tanımlayıcının hedefe bağlı System.Console
ada sahip bir diğer ad C
olduğunu gösterir. Başka bir deyişle, özellik kılavuzu tanımlayıcısına C
karşılık gelen AliasSymbol ile ilgili bilgiler sağlar.
Bildirilen herhangi bir türe, yönteme, özelliğe karşılık gelen simgeyi inceleyin. Görselleştiricide ilgili düğümü seçin ve Simgeyi Görüntüle 'ye (varsa) tıklayın. yöntemini seçin ve yöntemin Sub Main()
gövdesini de ekleyin. Görselleştiricide karşılık gelen SubBlock düğümü için Simgeyi Görüntüle'ye (varsa) tıklayın. Özellik kılavuzu, bu SubBlock için MethodSymbol'un dönüş türüne Void
sahip bir ada Main
sahip olduğunu gösterir.
Yukarıdaki Visual Basic örnekleri C# dilinde kolayca çoğaltılabilir. Imports C = System.Console
Diğer ad yerine yazınusing C = System.Console;
. C# dilindeki önceki adımlar görselleştirici penceresinde aynı sonuçları verir.
Anlam denetleme işlemleri yalnızca düğümlerde kullanılabilir. Bunlar belirteçlerde veya önemsiz bilgilerde kullanılamaz. Tüm düğümlerin incelenmesi gereken ilginç semantik bilgileri yoktur. Düğüm ilginç anlam bilgilerine sahip olmadığında , Görünüm * Simgesi 'ne (varsa) tıklandığında boş bir özellik kılavuzu gösterilir.
Anlam analizi gerçekleştirmeye yönelik API'ler hakkında daha fazla bilgi için Bkz . Semantikle çalışmaya genel bakış belgesi.
Söz dizimi görselleştiricisini kapatma
Görselleştirici penceresini kaynak kodu incelemek için kullanmadığınızda kapatabilirsiniz. Söz dizimi görselleştiricisi, siz kodda gezinirken, kaynağı düzenleyip değiştirirken görünümünü güncelleştirir. Kullanmadığınız zaman dikkatinizi dağıtabilir.