Bagikan melalui


Menjelajahi kode dengan visualizer sintaks Roslyn di Visual Studio

Artikel ini memberikan gambaran umum tentang alat Syntax Visualizer yang dikirimkan sebagai bagian dari SDK .NET Compiler Platform ("Roslyn"). Visualizer Syntax adalah jendela alat yang membantu Anda memeriksa dan menjelajahi pohon sintaks. Ini adalah alat penting guna memahami model untuk kode yang ingin Anda analisis. Ini juga merupakan bantuan penelusuran kesalahan saat Anda mengembangkan aplikasi Anda sendiri menggunakan SDK .NET Compiler Platform ("Roslyn"). Buka alat ini saat Anda membuat penganalisis pertama Anda. Visualizer membantu Anda memahami model yang digunakan oleh API. Anda juga dapat menggunakan alat seperti SharpLab atau LINQPad untuk memeriksa kode dan memahami pohon sintaksis.

Petunjuk penginstalan - Alat penginstal Visual Studio

Ada dua cara berbeda untuk menemukan .NET Compiler Platform SDK di Alat penginstal Visual Studio:

Instal menggunakan Alat penginstal Visual Studio - Tampilan beban kerja

.NET Compiler Platform SDK tidak secara otomatis dipilih sebagai bagian dari beban kerja pengembangan ekstensi Visual Studio. Anda harus memilihnya sebagai komponen opsional.

  1. Jalankan Alat penginstal Visual Studio
  2. Pilih Ubah
  3. Periksa beban kerja pengembangan ekstensi Visual Studio.
  4. Buka simpul Pengembangan ekstensi Visual Studio di pohon ringkasan.
  5. Centang kotak untuk .NET Compiler Platform SDK. Anda akan menemukannya terakhir di bawah komponen opsional.

Secara opsional, Anda juga ingin penyunting DGML menampilkan grafik di visualizer:

  1. Buka simpul Komponen individu di pohon ringkasan.
  2. Centang kotak untuk Penyunting DGML

Instal menggunakan Alat penginstal Visual Studio - tab komponen individu

  1. Jalankan Alat penginstal Visual Studio
  2. Pilih Ubah
  3. Pilih tab Komponen individu
  4. Centang kotak untuk .NET Compiler Platform SDK. Anda akan menemukannya di bagian atas di bawah bagian Pengompilasi, alat build, dan runtime.

Secara opsional, Anda juga ingin penyunting DGML menampilkan grafik di visualizer:

  1. Centang kotak untuk Penyunting DGML. Anda akan menemukannya di bagian Alat kode.

Biasakan diri Anda dengan konsep yang digunakan dalam .NET Compiler Platform SDK dengan membaca artikel gambaran umum. Artikel ini memberikan pengantar simpul, token, trivia, dan pohon sintaks.

Visualizer Sintaks

Visualizer Sintaks memungkinkan inspeksi pohon sintaks untuk file kode C# atau Visual Basic di jendela editor aktif saat ini di dalam IDE Visual Studio. Visualizer dapat diluncurkan dengan mengeklik Tampilan>Windows Lainnya>Visualizer Sintaks. Anda juga dapat menggunakan toolbar Luncur Cepat di pojok kanan atas. Ketik "sintaks", dan perintah untuk membuka Visualizer Sintaks akan muncul.

Perintah ini membuka Visualizer Sintaks sebagai jendela alat mengambang. Jika Anda tidak membuka jendela editor kode, tampilan kosong, seperti yang ditunjukkan pada gambar berikut.

Jendela alat Sintaks Visualizer

Dock jendela alat ini di lokasi yang nyaman di dalam Visual Studio, seperti sisi kiri. Visualizer memperlihatkan informasi tentang file kode saat ini.

Buat proyek baru menggunakan perintah File>Proyek Baru. Anda dapat membuat proyek Visual Basic atau C#. Saat Visual Studio membuka file kode utama untuk proyek ini, visualizer menampilkan pohon sintaks untuk proyek ini. Anda dapat membuka file C#/Visual Basic yang ada dalam instans Visual Studio ini, dan visualizer menampilkan pohon sintaks file tersebut. Jika Anda memiliki beberapa file kode yang terbuka di dalam Visual Studio, visualizer menampilkan pohon sintaks untuk file kode yang saat ini aktif, (file kode yang memiliki fokus keyboard.)

Seperti yang ditunjukkan pada gambar sebelumnya, jendela alat visualizer menampilkan pohon sintaks di bagian atas dan kisi properti di bagian bawah. Kisi properti menampilkan properti item yang saat ini dipilih di pohon, termasuk Jenis .NET dan Jenis (SintaksKind) item.

Pohon sintaksis terdiri dari tiga jenis item – simpul, token, dan trivia. Anda dapat membaca selengkapnya tentang jenis ini di artikel Bekerja dengan sintaksis. Item dari setiap jenis diwakili menggunakan warna yang berbeda. Klik tombol 'Legenda' untuk gambaran umum warna yang digunakan.

Setiap item di pohon juga menampilkan rentangnya sendiri. Rentang adalah indeks (posisi awal dan akhir) dari simpul tersebut dalam file teks. Dalam contoh C# sebelumnya, token "UsingKeyword [0..5)" yang dipilih memiliki Rentang yang lebarnya lima karakter, [0..5). Notasi "[..)" berarti bahwa indeks awal adalah bagian dari rentang, tetapi indeks akhir tidak.

Ada dua cara untuk menavigasi pohon:

  • Perluas atau klik item di pohon. Visualizer secara otomatis memilih teks yang sesuai dengan rentang item ini di editor kode.
  • Klik atau pilih teks di editor kode. Dalam contoh Visual Basic sebelumnya, jika Anda memilih baris yang berisi "Module Module1" di editor kode, visualizer secara otomatis menavigasi ke simpul ModuleStatement yang sesuai di pohon.

Visualizer menyoroti item di pohon yang rentangnya paling cocok dengan rentang teks yang dipilih di editor.

Visualizer me-refresh pohon agar sesuai dengan modifikasi dalam file kode aktif. Tambahkan panggilan ke Console.WriteLine() dalam Main(). Saat Anda mengetik, visualizer menyegarkan pohon.

Jeda mengetik setelah Anda mengetik Console.. Pohon ini memiliki beberapa item berwarna merah muda. Pada titik ini, ada kesalahan (juga disebut sebagai 'Diagnostik') dalam kode yang diketik. Kesalahan ini melekat pada simpul, token, dan trivia di pohon sintaks. Visualizer menunjukkan kepada Anda item mana yang memiliki kesalahan yang melekat padanya yang menyoroti latar belakang dengan warna merah muda. Anda dapat memeriksa kesalahan pada item apa pun berwarna merah muda dengan mengarahkan mouse ke atas item. Visualizer hanya menampilkan kesalahan sintaks (kesalahan yang terkait dengan sintaks kode yang diketik); ini tidak menampilkan kesalahan semantik apa pun.

Grafik Sintaks

Klik kanan pada item apa pun di pohon dan klik Lihat Graph Sintaks Terarah.

Visualizer menampilkan representasi grafis sub-pohon yang berakar pada item yang dipilih. Coba langkah-langkah ini untuk node MethodDeclaration yang sesuai dengan metode Main() dalam contoh C#. Visualizer menampilkan grafik sintaks yang terlihat sebagai berikut:

Menampilkan grafik sintaks C#

Penampil grafik sintaksis memiliki opsi untuk menampilkan legenda untuk skema pewarnaannya. Anda juga dapat mengarahkan kursor ke item individual dalam grafik sintaks dengan mouse untuk melihat properti yang sesuai dengan item tersebut.

Anda dapat melihat grafik sintaks untuk item yang berbeda di pohon berulang kali dan grafik akan selalu ditampilkan di jendela yang sama di dalam Visual Studio. Anda dapat menambatkan jendela ini di lokasi yang nyaman di dalam Visual Studio sehingga Anda tidak perlu beralih antar tab untuk melihat grafik sintaks baru. Bagian bawah, di bawah jendela editor kode, sering kali nyaman.

Berikut adalah tata letak docking untuk digunakan dengan jendela alat visualizer dan jendela grafik sintaks:

Satu tata letak docking untuk jendela grafik visualizer dan sintaksis

Opsi lain adalah meletakkan jendela grafik sintaks pada monitor kedua, dalam pengaturan monitor ganda.

Memeriksa semantik

Sintaks Visualizer memungkinkan inspeksi dasar simbol dan informasi semantik. Ketik double x = 1 + 1; di dalam Main() dalam contoh C#. Kemudian, pilih ekspresi 1 + 1 di jendela editor kode. Visualizer menyoroti node AddExpression di visualizer. Klik kanan pada AddExpression ini dan klik Lihat Simbol (jika ada). Perhatikan bahwa sebagian besar item menu memiliki kualifikasi "jika ada". Sintaks Visualizer memeriksa properti Node termasuk properti yang mungkin tidak ada untuk semua simpul.

Kisi properti dalam pembaruan visualizer seperti yang ditunjukkan pada gambar berikut: Simbol untuk ekspresi adalah SynthesizedIntrinsicOperatorSymbol dengan Kind = Method.

Properti simbol dalam Syntax Visualizer

Coba Lihat TypeSymbol (jika ada) untuk node AddExpression yang sama. Kisi properti dalam pembaruan visualizer seperti yang ditunjukkan pada gambar berikut, menunjukkan bahwa jenis ekspresi yang dipilih adalah Int32.

Properti TypeSymbol

Coba Lihat TypeSymbol yang Dikonversi (jika ada) untuk node AddExpression yang sama. Pembaruan kisi properti menunjukkan bahwa meskipun jenis ekspresi adalah Int32, jenis ekspresi yang dikonversi seperti Double yang ditunjukkan pada gambar berikut. Simpul ini mencakup informasi simbol jenis yang dikonversi karena ekspresi Int32 terjadi dalam konteks di mana harus dikonversi ke Double. Konversi ini memenuhi jenis Double yang ditentukan untuk variabel x di sisi kiri operator penugasan.

Properti TypeSymbol yang Dikonversi

Terakhir, coba Lihat Nilai Konstan (jika ada) untuk node AddExpression yang sama. Kisi properti menunjukkan bahwa nilai ekspresi adalah konstanta waktu kompilasi dengan nilai 2.

Nilai konstanta

Contoh sebelumnya juga dapat direplikasi dalam Visual Basic. Ketik Dim x As Double = 1 + 1 di file Visual Basic. Pilih ekspresi 1 + 1 di jendela editor kode. Visualizer menyoroti node AddExpression di visualizer. Ulangi langkah-langkah sebelumnya untuk AddExpression ini dan Anda akan melihat hasil yang identik.

Periksa lebih banyak kode dalam Visual Basic. Perbarui file Visual Basic utama Anda dengan kode berikut:

Imports C = System.Console

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

Kode ini memperkenalkan alias bernama C yang memetakan ke jenis System.Console di bagian atas file dan menggunakan alias ini di dalam Main(). Pilih penggunaan alias ini, C di C.WriteLine(), dalam metode Main(). Visualizer memilih node IdentifierName yang sesuai di visualizer. Klik kanan simpul ini dan klik pada Tampilkan Simbol (jika ada). Kisi properti menunjukkan bahwa pengidentifikasi ini terikat pada jenis System.Console seperti yang ditunjukkan pada gambar berikut:

Properti untuk simbol C dalam Syntax Visualizer

Coba Lihat AliasSymbol (jika ada) untuk node IdentifierName yang sama. Kisi properti menunjukkan pengidentifikasi adalah alias dengan nama C yang terikat ke target System.Console. Dengan kata lain, kisi properti memberikan informasi mengenai AliasSymbol yang sesuai dengan pengidentifikasi C.

Properti AliasSymbol

Periksa simbol yang sesuai dengan jenis, metode, properti yang dideklarasikan. Pilih simpul yang sesuai di visualizer dan klik Tampilkan Simbol (jika ada). Pilih metode Sub Main(), termasuk isi metode. Klik Simbol Tampilan (jika ada) untuk node SubBlock yang sesuai di visualizer. Kisi properti menunjukkan MethodSymbol untuk SubBlock ini memiliki nama Main dengan jenis kembali Void.

Menampilkan simbol untuk deklarasi metode

Contoh Visual Basic di atas dapat dengan mudah direplikasi dalam C#. Ketik using C = System.Console; menggantikan Imports C = System.Console untuk alias. Langkah-langkah sebelumnya dalam C# menghasilkan hasil yang identik di jendela visualizer.

Operasi inspeksi semantik hanya tersedia pada simpul. Mereka tidak tersedia pada token atau trivia. Tidak semua simpul memiliki informasi semantik yang menarik untuk diperiksa. Ketika node tidak memiliki informasi semantik yang menarik, mengeklik Lihat * Simbol (jika ada) menunjukkan kisi properti kosong.

Anda dapat membaca selengkapnya tentang API untuk melakukan analisis semantik di dokumen gambaran umum Bekerja dengan semantik.

Menutup visualizer sintaks

Anda dapat menutup jendela visualizer saat Anda tidak menggunakannya untuk memeriksa kode sumber. Visualizer sintaks memperbarui tampilannya saat Anda menavigasi melalui kode, mengedit, dan mengubah sumber. Ini bisa mengganggu ketika Anda tidak menggunakannya.