Aracılığıyla paylaş


Visual Studio'da Roslyn söz dizimi görselleştiricisi ile kodu keşfetme

Bu makalede, .NET Derleyici Platformu ("Roslyn") SDK'sının bir parçası olarak gelen Sözdizimi 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. .NET Derleyici Platformu ("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'nde.NET Derleyici Platformu 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 Derleyici Platformu 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.

  1. Visual Studio Yükleyicisi'nin çalıştırılması
  2. Değiştir'i seçin
  3. Visual Studio uzantısı geliştirme iş yükünü denetleyin.
  4. Özet ağacında Visual Studio uzantısı geliştirme düğümünü açın.
  5. .NET Derleyici Platformu SDK'sı kutusunu işaretleyin. Bunu isteğe bağlı bileşenler altında son olarak bulacaksınız.

İsteğe bağlı olarak , DGML düzenleyicisinin görselleştiricide grafikleri görüntülemesini de istersiniz:

  1. Özet ağacında Tek tek bileşenler düğümünü açın.
  2. DGML düzenleyicisi kutusunu işaretleyin

Visual Studio Yükleyicisi - Tek bileşenler sekmesini kullanarak yükleme

  1. Visual Studio Yükleyicisi'nin çalıştırılması
  2. Değiştir'i seçin
  3. Tek tek bileşenler sekmesini seçin
  4. .NET Derleyici Platformu SDK'sı kutusunu işaretleyin. Derleyiciler, derleme araçları ve çalışma zamanları bölümünün altında en üstte bulabilirsiniz.

İsteğe bağlı olarak , DGML düzenleyicisinin görselleştiricide grafikleri görüntülemesini de istersiniz:

  1. DGML düzenleyicisi kutusunu işaretleyin. Kod araçları bölümünde bulabilirsiniz.

Genel bakış makalesini okuyarak .NET Derleyici Platformu SDK'sında kullanılan kavramlar hakkında bilgi edinin. Söz dizimi ağaçlarına, düğümlere, belirteçlere ve önemsiz değerlere 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 Görünüm>Diğer Pencereler>Söz Dizimi Görselleştiricisi tıklanarak 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 görüntü boş olur.

Söz Dizimi Görselleştiricisi araç penceresi

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 proje için 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'da 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ç penceresinde söz dizimi ağacı üstte, özellik kılavuzu ise altta görüntülenir. Özellik kılavuzu, o anda ağaçta seçili olan öğenin .NET Türü ve öğenin Kind (SyntaxKind) gibi özelliklerini görüntüler.

Söz dizimi ağaçları üç öğe türünden 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 indeksleridir (bunların başlangıç ve bitiş konumu). Yukarıdaki C# örneğinde, seçilen "UsingKeyword [0..5)" belirtecinin genişliği beş karakter olan bir Span değeri vardır, [0..5). "[..)" gösterimi, başlangıç dizininin yayılma alanını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. Yukarıdaki Visual Basic örneğinde, kod düzenleyicisinde "Modül Modülü1" 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çtaki öğeyi vurgular ve bu öğe, düzenleyicide seçilen metnin yayılma alanıyla en iyi şekilde eşleşir.

Görselleştirici, etkin kod dosyasındaki değişikliklerle eşleşecek şekilde ağacı yeniler. Main() içine Console.WriteLine() bir çağrı ekleyin. Siz yazarken görselleştirici ağacı yeniler.

Console. yazdıktan sonra yazmayı duraklatın. Ağaçta pembe renkli bazı öğeler var. Bu noktada, yazılan kod içerisinde bazı sorunlar (aynı zamanda 'Tanılama sorunları' olarak da adlandırılır) mevcuttur. Bu hatalar söz dizimi ağacında düğümlere, belirteçlere ve önemsiz öğelere eklenir. Görselleştirici, arka planı pembe renkle vurgulayan 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 dizimi hatalarını 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çili öğede kök olarak köklenen alt ağacın grafiksel bir gösterimini görüntüler. C# örneğindeki yönteme 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:

C# söz dizimi grafiğini görüntüleme

Söz dizimi grafik görüntüleyicisi, renklendirme düzeni için açıklama görüntüleme seçeneğine sahiptir. Söz dizimi grafiğindeki tek tek öğelerin üzerine fareyle birlikte gelerek söz dizimine 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 grafiğini 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. Kod düzenleyicisi pencerelerinin altındaki alt kısım genellikle kullanışlıdır.

Görselleştirici araç penceresi ve sözdizimi grafiği penceresi ile kullanılacak yerleştirme düzeni aşağıdadır:

Görüntüleyici ve söz dizimi grafiği penceresi için tek bir yerleştirme düzeni

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 temel incelemesini sağlar. C# örneğinde Main() metodunun içerisine double x = 1 + 1; yazın. Ardından kod düzenleyicisi penceresinde ifadeyi 1 + 1 seçin. Görselleştirici, görselleştiricide 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 olmayan özellikler de dahil olmak üzere bir Düğümün özelliklerini inceler.

Görselleştiricideki özellikler penceresi aşağıdaki şekilde gösterildiği gibi güncelleştirilir: İfadenin simgesi Kind = Metot ile bir 'SynthesizedIntrinsicOperatorSymbol'dir.

Sözdizimi Görselleştiricisi'nde sembol özellikleri

Aynı AddExpression düğümüne sağ tıklayın ve Görünüm TürüSymbol (varsa) seçeneğini belirleyin. Görselleştiricideki özellik kılavuzu, aşağıdaki şekilde gösterildiği gibi güncelleştirilir ve seçili ifadenin türü Int32 olarak belirtilir.

TypeSymbol özellikleri

Aynı AddExpression düğümüne sağ tıklayın ve Dönüştürülen TürSembolünü Görüntüle (varsa) öğesini seçin. özellik ızgarası güncellemeleri, ifadenin türü Int32 olmasına rağmen, ifadelerin dönüştürülen türü Double olarak güncellenmiştir ve aşağıdaki şekilde gösterilmektedir. Bu düğüm, Int32 ifadesi dönüştürülmesi gereken bir bağlamda gerçekleştiği için dönüştürülmüş tür simge bilgilerini içerir ve Double'a dönüştürülmelidir. Atama işlecinin sol tarafındaki x değişkeni için belirtilen Double türünü karşılayan bu dönüştürmedir.

Dönüştürülen TypeSymbol özellikleri

Son olarak, aynı AddExpression düğümüne sağ tıklayın ve Sabit Değeri Görüntüle (varsa) seçeneğini belirleyin. Özellik ızgarası, ifadenin değerinin bir derleme zamanı sabiti olduğunu ve değeri 2 olduğunu gösterir.

Sabit bir değer

Yukarıdaki örnek Visual Basic'te de çoğaltılabilir. Bir Visual Basic dosyasına Dim x As Double = 1 + 1 yazın. 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 ve 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üne System.Console türünü eşleyen ve Main() içinde bu diğer adı kullanan C adlı bir diğer ad tanıtır. Yönteminin içindeki C.WriteLine()Main() bu diğer adın C 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:

Söz Dizimi Görselleştiricisi'nde C simgesinin özellikleri

Aynı IdentifierName düğümüne sağ tıklayın ve AliasSembolünü Görüntüle (varsa) seçeneğini belirleyin. Özellik kılavuzu, C adında bir diğer adın, System.Console hedefiyle ilişkili olduğunu gösterir. Başka bir deyişle, özellik kılavuzu tanımlayıcısına Ckarşılık gelen AliasSymbol ile ilgili bilgiler sağlar.

AliasSymbol özellikleri

Bildirilen herhangi bir türe, yönteme, özelliğe karşılık gelen simgeyi inceleyin. Görselleştiricide ilgili düğümü seçin ve Görünüm Simgesine (varsa) erişmek için sağ tıklayın. yöntemini seçin ve yöntemin Sub Main()gövdesini de ekleyin. Görselleştiricide ilgili Alt Blok düğümüne sağ tıklayın ve Simgeyi Görüntüle (varsa) seçeneğini belirleyin. Özellik kılavuzu, bu SubBlock için MethodSymbol'un adının Main ve dönüş türünün Void olduğunu gösterir.

Yöntem bildirimi için görüntüleme simgesi

Yukarıdaki Visual Basic örnekleri C# dilinde kolayca çoğaltılabilir. using C = System.Console; diğer ad yerine yazın Imports C = System.Console. C# dilindeki önceki adımlar görselleştirici penceresinde aynı sonuçları verir.

Semantik inceleme işlemleri yalnızca düğümlerde kullanılabilir. Bunlar belirteçlerde veya önemsiz öğelerde kullanılamaz. Tüm düğümler incelenmek için ilginç anlam bilgilerine sahip değildir. Düğümde ilginç semantik bilgiler olmadığında, sağ tıklayıp Görünüm * Simge (varsa) seçildiğinde boş bir özellik kılavuzu gösterilir.

Semantik analiz gerçekleştirmeye yönelik API'ler hakkında daha fazla bilgi için Bkz. Semantiklerle çalışma 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ızda dikkatinizi dağıtabilir.