Bagikan melalui


Memvalidasi kode dengan diagram dependensi

Mengapa menggunakan diagram dependensi?

Untuk memastikan bahwa kode tidak bertentangan dengan desainnya, validasi kode Anda dengan diagram dependensi di Visual Studio. Ini dapat membantu Anda:

  • Temukan konflik antara dependensi dalam kode Anda dan dependensi pada diagram dependensi.

  • Temukan dependensi yang mungkin dipengaruhi oleh perubahan yang diusulkan.

    Misalnya, Anda dapat mengedit diagram dependensi untuk menampilkan potensi perubahan arsitektur lalu memvalidasi kode untuk melihat dependensi yang terpengaruh.

  • Refaktor atau migrasi kode ke desain yang berbeda.

    Temukan kode atau dependensi yang memerlukan pekerjaan saat Anda memindahkan kode ke arsitektur yang berbeda.

Persyaratan

  • Visual Studio

    Untuk membuat diagram dependensi untuk proyek .NET Core, Anda harus memiliki Visual Studio 2019 versi 16.2 atau yang lebih baru.

  • Solusi yang memiliki proyek pemodelan dengan diagram dependensi. Diagram dependensi ini harus ditautkan ke artefak dalam proyek C# atau Visual Basic yang ingin Anda validasi. Lihat Membuat diagram dependensi dari kode Anda.

Untuk melihat edisi Visual Studio mana yang mendukung fitur ini, lihat Dukungan edisi untuk arsitektur dan alat pemodelan.

Anda dapat memvalidasi kode secara manual dari diagram dependensi terbuka di Visual Studio atau dari prompt perintah. Anda juga dapat memvalidasi kode secara otomatis saat menjalankan build lokal atau build Azure Pipelines.

Penting

Jika Anda ingin menjalankan validasi lapisan menggunakan Team Foundation Server (TFS), Anda juga harus menginstal versi Visual Studio yang sama di server build Anda.

Validasi dependensi langsung

Validasi dependensi terjadi secara real time, dan kesalahan segera ditampilkan di Daftar Kesalahan.

  • Validasi langsung didukung untuk C# dan Visual Basic.

  • Untuk mengaktifkan analisis solusi lengkap saat menggunakan validasi dependensi langsung, buka pengaturan opsi dari bilah emas yang muncul di Daftar Kesalahan.

    • Anda dapat secara permanen menutup emas batangan jika Anda tidak tertarik untuk melihat semua masalah arsitektur dalam solusi Anda.
    • Jika Anda tidak mengaktifkan analisis solusi penuh, analisis dilakukan hanya untuk file yang sedang diedit.
  • Saat meningkatkan proyek untuk mengaktifkan validasi langsung, dialog menunjukkan kemajuan konversi.

  • Saat memperbarui proyek untuk validasi dependensi langsung, versi paket NuGet ditingkatkan agar sama untuk semua proyek, dan merupakan versi tertinggi yang digunakan.

  • Menambahkan proyek validasi dependensi baru memicu pembaruan proyek.

Lihat apakah item mendukung validasi

Anda dapat menautkan lapisan ke situs web, dokumen Office, file teks biasa, dan file dalam proyek yang dibagikan di beberapa aplikasi, tetapi proses validasi tidak akan menyertakannya. Kesalahan validasi tidak akan muncul untuk referensi ke proyek atau rakitan yang ditautkan ke lapisan terpisah ketika tidak ada dependensi yang muncul di antara lapisan tersebut. Referensi tersebut tidak dianggap sebagai dependensi kecuali kode menggunakan referensi tersebut.

  1. Pada diagram dependensi, pilih satu atau beberapa lapisan, klik kanan pilihan Anda, lalu klik Tampilkan Tautan.

  2. Di Layer Explorer, lihat kolom Mendukung Validasi . Jika nilai salah, item tidak mendukung validasi.

Sertakan rakitan dan proyek .NET lainnya untuk validasi

Saat Anda menyeret item ke diagram dependensi, referensi ke rakitan atau proyek .NET terkait ditambahkan secara otomatis ke folder Referensi Lapisan dalam proyek pemodelan. Folder ini berisi referensi ke rakitan dan proyek yang dianalisis selama validasi. Anda dapat menyertakan rakitan dan proyek .NET lainnya untuk validasi tanpa menyeretnya secara manual ke diagram dependensi.

  1. Di Penjelajah Solusi, klik kanan proyek pemodelan atau folder Referensi Lapisan, lalu klik Tambahkan Referensi.

  2. Dalam kotak dialog Tambahkan Referensi , pilih rakitan atau proyek, lalu klik OK.

Memvalidasi kode secara manual

Jika Anda memiliki diagram dependensi terbuka yang ditautkan ke item solusi, Anda dapat menjalankan perintah Validasi pintasan dari diagram. Anda juga dapat menggunakan perintah untuk menjalankan perintah msbuild dengan properti kustom /p:ValidateArchitecture diatur ke True. Misalnya, saat Anda membuat perubahan dalam kode, lakukan validasi lapisan secara teratur sehingga Anda dapat menangkap konflik dependensi lebih awal.

Memvalidasi kode dari diagram dependensi terbuka

  1. Klik kanan permukaan diagram, lalu klik Validasi Arsitektur.

    Catatan

    Secara default, properti Tindakan Build pada file diagram dependensi (.layerdiagram) diatur ke Validasi sehingga diagram disertakan dalam proses validasi.

    Jendela Daftar Kesalahan melaporkan kesalahan yang terjadi. Untuk informasi selengkapnya tentang kesalahan validasi, lihat Memecahkan masalah validasi lapisan.

  2. Untuk melihat sumber setiap kesalahan, klik dua kali kesalahan di jendela Daftar Kesalahan.

    Catatan

    Visual Studio mungkin menampilkan peta kode alih-alih sumber kesalahan. Ini terjadi ketika kode memiliki dependensi pada rakitan yang tidak ditentukan oleh diagram dependensi, atau kode kehilangan dependensi yang ditentukan oleh diagram dependensi. Tinjau peta kode atau kode untuk menentukan apakah dependensi harus ada. Untuk informasi selengkapnya tentang peta kode, lihat Memetakan dependensi di seluruh solusi Anda.

  3. Untuk mengelola kesalahan, lihat Mengatasi kesalahan validasi lapisan.

Memvalidasi kode pada prompt perintah

  1. Buka perintah Visual Studio.

  2. Pilih salah satu metode berikut:

    • Untuk memvalidasi kode terhadap proyek pemodelan tertentu dalam solusi, jalankan MSBuild dengan properti kustom berikut.

      msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
      

      -atau-

      Telusuri ke folder yang berisi file proyek pemodelan (.modelproj) dan diagram dependensi lalu jalankan MSBuild dengan properti kustom berikut:

      msbuild /p:ValidateArchitecture=true
      
    • Untuk memvalidasi kode terhadap semua proyek pemodelan dalam solusi, jalankan MSBuild dengan properti kustom berikut:

      msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
      

      -atau-

      Telusuri ke folder solusi, yang harus berisi proyek pemodelan yang berisi diagram dependensi, lalu jalankan MSBuild dengan properti kustom berikut:

      msbuild /p:ValidateArchitecture=true
      

      Kesalahan apa pun yang terjadi akan dicantumkan. Untuk informasi selengkapnya tentang MSBuild, lihat Tugas MSBuild dan MSBuild.

    Untuk informasi selengkapnya tentang kesalahan validasi, lihat Memecahkan masalah validasi lapisan.

Mengelola kesalahan validasi

Selama proses pengembangan, Anda mungkin ingin menyembunyikan beberapa konflik yang dilaporkan selama validasi. Misalnya, Anda mungkin ingin menyembunyikan kesalahan yang sudah Anda atasi atau yang tidak relevan dengan skenario tertentu. Ketika Anda menyembunyikan kesalahan, mencatat item kerja di Team Foundation merupakan praktik yang baik.

Peringatan

Anda harus sudah tersambung ke Kontrol Kode Sumber (SCC) TFS untuk membuat atau menautkan ke item kerja. Jika Anda mencoba membuka koneksi ke TFS SCC yang berbeda, Visual Studio akan menutup solusi saat ini secara otomatis. Pastikan Anda sudah tersambung ke SCC yang sesuai sebelum mencoba membuat atau menautkan ke item kerja. Dalam rilis Visual Studio nanti, perintah menu tidak tersedia jika Anda tidak tersambung ke SCC.

Membuat item kerja untuk kesalahan validasi

  • Di jendela Daftar Kesalahan, klik kanan kesalahan, arahkan ke Buat Item Kerja, lalu klik tipe item kerja yang ingin Anda buat.

Gunakan tugas-tugas ini untuk mengelola kesalahan validasi di jendela Daftar Kesalahan:

Untuk Ikuti langkah-langkah ini
Menyembunyikan kesalahan yang dipilih selama validasi Klik kanan satu atau beberapa kesalahan yang dipilih, arahkan ke Kelola Kesalahan Validasi, lalu klik Sembunyikan Kesalahan.

Kesalahan yang ditekan muncul dengan pemformatan coretan. Saat Anda menjalankan validasi di lain waktu, kesalahan ini tidak akan muncul.

Kesalahan yang disembunyikan dilacak dalam file .suppressions untuk file diagram dependensi yang sesuai.
Berhenti menekan kesalahan terpilih Klik kanan kesalahan atau kesalahan yang disembunyikan yang dipilih, arahkan ke Kelola Kesalahan Validasi, lalu klik Hentikan Penekanan Kesalahan.

Kesalahan yang ditekan yang dipilih akan muncul saat Anda menjalankan validasi di lain waktu.
Pulihkan semua kesalahan yang ditekan di jendela Daftar Kesalahan Klik kanan di mana saja di jendela Daftar Kesalahan, arahkan ke Kelola Kesalahan Validasi, lalu klik Perlihatkan Semua Kesalahan yang Ditekan.
Sembunyikan semua kesalahan yang disembunyikan dari jendela Daftar Kesalahan Klik kanan di mana saja di jendela Daftar Kesalahan, arahkan ke Kelola Kesalahan Validasi, lalu klik Sembunyikan Semua Kesalahan yang Disembunyikan.

Memvalidasi kode secara otomatis

Anda dapat melakukan validasi lapisan setiap kali Menjalankan build lokal. Jika tim Anda menggunakan Azure DevOps, Anda dapat melakukan validasi lapisan dengan check-in terjaga, yang dapat Anda tentukan dengan membuat tugas MSBuild kustom, dan menggunakan laporan build untuk mengumpulkan kesalahan validasi. Untuk membuat build check-in terjaga, lihat Check-in terjaga kedap TFVC.

Untuk memvalidasi kode secara otomatis selama build lokal

Gunakan editor teks untuk membuka file proyek pemodelan (.modelproj), lalu sertakan properti berikut:

<ValidateArchitecture>true</ValidateArchitecture>

- atau -

  1. Di Penjelajah Solusi, klik kanan proyek pemodelan yang berisi diagram atau diagram dependensi, lalu klik Properti.

  2. Di jendela Properti, atur properti Validasi Arsitektur proyek pemodelan ke True.

    Ini termasuk proyek pemodelan dalam proses validasi.

  3. Di Penjelajah Solusi, klik file diagram dependensi (.layerdiagram) yang ingin Anda gunakan untuk validasi.

  4. Di jendela Properti, pastikan properti Tindakan Build diagram diatur ke Validasi.

    Ini termasuk diagram dependensi dalam proses validasi.

Untuk mengelola kesalahan di jendela Daftar Kesalahan, lihat Mengatasi kesalahan validasi lapisan.

Memecahkan masalah validasi lapisan

Tabel berikut ini menjelaskan masalah validasi lapisan dan resolusinya. Masalah ini berbeda dari kesalahan yang disebabkan oleh konflik antara kode dan desain. Untuk informasi selengkapnya tentang kesalahan ini, lihat Memecahkan masalah validasi lapisan.

Masalah Kemungkinan Penyebabnya Resolusi
Kesalahan validasi tidak terjadi seperti yang diharapkan. Validasi tidak berfungsi pada diagram dependensi yang disalin dari diagram dependensi lain dalam Penjelajah Solusi dan yang berada dalam proyek pemodelan yang sama. diagram dependensi yang disalin dengan cara ini berisi referensi yang sama dengan diagram dependensi asli. Tambahkan diagram dependensi baru ke proyek pemodelan.

Salin elemen dari diagram dependensi sumber ke diagram baru.

Mengatasi kesalahan validasi lapisan

Saat Anda memvalidasi kode terhadap diagram dependensi, kesalahan validasi terjadi ketika kode bertentangan dengan desain. Misalnya, kondisi berikut dapat menyebabkan kesalahan validasi terjadi:

  • Artefak ditetapkan ke lapisan yang salah. Dalam hal ini, pindahkan artefak.

  • Artefak, seperti kelas, menggunakan kelas lain dengan cara yang bertentangan dengan arsitektur Anda. Dalam hal ini, refaktor kode untuk menghapus dependensi.

Untuk mengatasi kesalahan ini, perbarui kode hingga tidak ada lagi kesalahan yang muncul selama validasi. Anda dapat melakukan tugas ini dengan cara berulang.

Bagian berikut menguraikan sintaks yang digunakan dalam kesalahan ini, menjelaskan arti kesalahan ini, dan menyarankan apa yang dapat Anda lakukan untuk mengatasi atau mengelolanya.

Sintaksis Keterangan
ArtifactN(ArtifactTypeN) ArtefakN adalah artefak yang terkait dengan lapisan pada diagram dependensi.

ArtifactTypeN adalah jenis ArtefakN, seperti Kelas atau Metode, misalnya:

MySolution.MyProject.MyClass.MyMethod(Method)
NamespaceNamen Nama namespace layanan.
LayerNamen Nama lapisan pada diagram dependensi.
DependencyType Jenis hubungan dependensi antara Artifact1 dan Artifact2. Misalnya, Artefak1 memiliki hubungan Panggilan dengan Artifact2.
Sintaks Kesalahan Deskripsi Kesalahan
DV0001: Dependensi Tidak Valid Masalah ini dilaporkan ketika elemen kode (namespace, jenis, anggota) dipetakan ke Lapisan mereferensikan elemen kode yang dipetakan ke lapisan lain, tetapi tidak ada panah dependensi antara lapisan ini dalam diagram validasi dependensi yang berisi lapisan ini. Ini adalah pelanggaran batasan dependensi.
DV1001: Nama namespace tidak valid Masalah ini dilaporkan pada elemen kode yang terkait dengan lapisan yang properti "Nama Namespace Yang Diizinkan" tidak berisi namespace tempat elemen kode ini ditentukan. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa sintaks "Nama Namespace yang Diizinkan" adalah menjadi daftar namespace titik koma tempat elemen kode yang terkait dengan adalah lapisan diizinkan untuk ditentukan.
DV1002: Dependensi pada namespace layanan yang tidak dapat direferensikan Masalah ini dilaporkan pada elemen kode yang terkait dengan lapisan dan mereferensikan elemen kode lain yang ditentukan dalam namespace layanan yang didefinisikan dalam properti "Namespace Tidak Dapat Direferensikan" lapisan. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa properti "Namespace tidak dapat direferensikan" didefinisikan sebagai daftar namespace layanan yang dipisahkan titik koma yang tidak boleh direferensikan dalam elemen kode yang terkait dengan lapisan ini.
DV1003: Nama namespace tidak diizinkan Masalah ini dilaporkan pada elemen kode yang terkait dengan lapisan yang properti "Nama Ruang Nama Tidak Diizinkan" berisi namespace tempat elemen kode ini ditentukan. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa properti "Nama namespace yang tidak diizinkan" didefinisikan sebagai daftar namespace layanan yang dipisahkan titik koma di mana elemen kode yang terkait dengan Lapisan ini tidak boleh ditentukan.
DV2001: Kehadiran Diagram Lapisan Masalah ini dilaporkan pada proyek yang tidak menyertakan file diagram dependensi, tetapi mengacu pada penganalisis validasi dependensi. Jika Validasi Dependensi belum digunakan, Anda dapat menghapus "Microsoft.DependencyValidation.Analyzers" langsung dari Penjelajah Solusi atau menekan peringatan ini. Untuk menambahkan diagram dependensi, lihat Membuat diagram dependensi dari kode Anda.
DV2002: Basis Jenis Yang Tidak Dipetakan Masalah ini dilaporkan ketika elemen kode tidak dipetakan ke lapisan apa pun.
DV3001: Tautan Hilang Layer 'LayerName' menautkan ke 'Artefak' yang tidak dapat ditemukan. Apakah Anda kehilangan referensi perakitan?
DV9001: Analisis arsitektur menemukan kesalahan internal Hasil mungkin tidak selesai. Untuk informasi selengkapnya, lihat log peristiwa build terperinci atau jendela output.