Opsi konfigurasi untuk analisis kode

Aturan analisis kode memiliki berbagai opsi konfigurasi. Beberapa opsi ini ditentukan sebagai pasangan kunci-nilai dalam file konfigurasi penganalisis menggunakan sintaks <option key> = <option value>. Opsi lain, yang mengonfigurasi analisis kode secara keseluruhan, tersedia sebagai properti MSBuild dalam file proyek Anda.

Opsi paling umum yang akan Anda konfigurasi adalah tingkat keparahan aturan. Anda dapat mengonfigurasi tingkat keparahan untuk aturan apa pun, termasuk aturan kualitas kode dan aturan gaya kode. Misalnya, untuk mengaktifkan aturan sebagai peringatan, tambahkan pasangan kunci-nilai berikut ke file konfigurasi penganalisis:

dotnet_diagnostic.<rule ID>.severity = warning

Anda juga dapat mengonfigurasi opsi tambahan untuk menyesuaikan perilaku aturan:

  • Aturan kualitas kode memiliki opsi perilaku, seperti metode mana yang harus diterapkan oleh aturan.
  • Aturan gaya kode memiliki opsi preferensi gaya, seperti di mana baris baru diinginkan.
  • Aturan penganalisis pihak ketiga dapat menentukan opsi konfigurasi mereka sendiri, dengan nama kunci kustom dan format nilai.

Opsi Umum

Opsi ini berlaku untuk analisis kode secara keseluruhan. Mereka tidak dapat diterapkan hanya ke aturan tertentu.

Untuk opsi tambahan, lihat Properti analisis kode.

Mode analisis

Sementara .NET SDK menyertakan semua aturan analisis kode, hanya beberapa dari mereka yang diaktifkan secara default. Mode analisis menentukan, jika ada, sekumpulan aturan yang akan diaktifkan. Anda dapat memilih mode analisis yang lebih agresif di mana sebagian besar atau semua aturan diaktifkan. Atau Anda dapat memilih mode analisis yang lebih konservatif di mana sebagian besar atau semua aturan dinonaktifkan, dan Anda kemudian dapat ikut serta dalam aturan tertentu sesuai kebutuhan. Atur mode analisis Anda dengan menambahkan <properti AnalysisMode> MSBuild ke file proyek Anda.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

Mulai dari .NET 6, Anda juga dapat mengaktifkan kategori aturan secara massal menggunakan <properti AnalysisMode<Category>> MSBuild.

Catatan

Jika Anda mengonfigurasi analisis kode menggunakan properti MSBuild seperti AnalysisMode, opsi konfigurasi massal apa pun yang Anda tetapkan dalam file konfigurasi Anda diabaikan. Misalnya, jika Anda telah mengaktifkan semua aturan secara massal atau kategori aturan dalam file .editorconfig , konfigurasi tersebut diabaikan.

Mengaktifkan analisis kode

Analisis kode diaktifkan secara default untuk proyek yang menargetkan .NET 5 dan versi yang lebih baru. Jika Anda memiliki .NET 5+ SDK tetapi proyek Anda menargetkan implementasi .NET yang berbeda, Anda dapat mengaktifkan analisis kode secara manual dengan mengatur properti EnableNETAnalyzers dalam file proyek Anda ke true.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Mengecualikan kode yang dihasilkan

Peringatan penganalisis kode .NET tidak berguna pada file kode yang dihasilkan, seperti file yang dihasilkan desainer, yang tidak dapat diedit pengguna untuk memperbaiki pelanggaran apa pun. Dalam kebanyakan kasus, penganalisis kode melewati file kode yang dihasilkan dan tidak melaporkan pelanggaran pada file-file ini.

Secara default, file dengan ekstensi file tertentu atau header file yang dihasilkan secara otomatis diperlakukan sebagai file kode yang dihasilkan. Misalnya, nama file yang diakhir dengan .designer.cs atau .generated.cs dianggap kode yang dihasilkan. Opsi konfigurasi ini memungkinkan Anda menentukan pola penamaan tambahan yang akan diperlakukan sebagai kode yang dihasilkan. Anda mengonfigurasi file dan folder tambahan dengan menambahkan generated_code = true | false entri ke file konfigurasi Anda. Misalnya, untuk memperlakukan semua file yang namanya diakhir dengan .MyGenerated.cs sebagai kode yang dihasilkan, tambahkan entri berikut:

[*.MyGenerated.cs]
generated_code = true

Opsi khusus aturan

Opsi khusus aturan dapat diterapkan ke satu aturan, sekumpulan aturan, atau semua aturan. Opsi khusus aturan meliputi:

Tingkat keparahan

Tabel berikut ini memperlihatkan berbagai tingkat keparahan aturan yang dapat Anda konfigurasi untuk semua aturan penganalisis, termasuk kualitas kode dan aturan gaya kode.

Nilai konfigurasi tingkat keparahan Perilaku waktu-build
error Pelanggaran muncul sebagai kesalahan build dan menyebabkan build gagal.
warning Pelanggaran muncul sebagai peringatan build tetapi tidak menyebabkan build gagal (kecuali Anda memiliki opsi yang diatur untuk memperlakukan peringatan sebagai kesalahan).
suggestion Pelanggaran muncul sebagai pesan build dan sebagai saran di Visual Studio IDE. (Di Visual Studio, saran muncul sebagai tiga titik abu-abu di bawah dua karakter pertama.)
silent Pelanggaran tidak terlihat oleh pengguna.

Namun, untuk aturan gaya kode, fitur pembuatan kode Visual Studio masih menghasilkan kode dalam gaya ini. Aturan ini juga berpartisipasi dalam pembersihan dan muncul di menu Tindakan Cepat dan Pemfaktoran Ulang di Visual Studio.
none Aturan ditekan sepenuhnya.

Namun, untuk aturan gaya kode, fitur pembuatan kode Visual Studio masih menghasilkan kode dalam gaya ini.
default Tingkat keparahan default aturan digunakan. Tingkat keparahan default untuk setiap rilis .NET tercantum dalam repositori roslyn-analyzers. Dalam tabel itu, "Dinonaktifkan" sesuai dengan none, "Tersembunyi" sesuai dengan silent, dan "Info" sesuai dengan suggestion.

Cakupan

  • Aturan tunggal

    Untuk mengatur tingkat keparahan aturan untuk satu aturan, gunakan sintaks berikut.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Kategori aturan

    Untuk mengatur tingkat keparahan aturan default untuk kategori aturan, gunakan sintaks berikut. Namun, pengaturan tingkat keparahan ini hanya memengaruhi aturan dalam kategori tersebut yang diaktifkan secara default.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    Kategori yang berbeda dicantumkan dan dijelaskan di kategori Aturan. Selain itu, Anda dapat menemukan kategori untuk aturan tertentu di halaman referensinya, misalnya, CA1000.

  • Semua aturan

    Untuk mengatur tingkat keparahan aturan default untuk semua aturan penganalisis, gunakan sintaks berikut. Namun, pengaturan tingkat keparahan ini hanya memengaruhi aturan yang diaktifkan secara default.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Penting

Saat Anda mengonfigurasi tingkat keparahan untuk beberapa aturan dengan satu entri, baik untuk kategori aturan atau untuk semua aturan, tingkat keparahan hanya berlaku untuk aturan yang diaktifkan secara default. Dan jika Anda mengaktifkan semua aturan dengan menggunakan properti <MSBuild AnalysisMode> atau< AnalysisLevel>, opsi massal dotnet_analyzer_diagnostic apa pun diabaikan. Untuk alasan ini, lebih baik mengaktifkan kategori aturan dengan mengatur <Kategori>> AnalysisMode<ke All.

Catatan

Awalan untuk mengatur tingkat keparahan untuk satu aturan, dotnet_diagnostic, sedikit berbeda dari awalan untuk mengonfigurasi tingkat keparahan melalui kategori atau untuk semua aturan, dotnet_analyzer_diagnostic.

Prioritas

Jika Anda memiliki beberapa entri konfigurasi tingkat keparahan yang dapat diterapkan ke ID aturan yang sama, prioritas dipilih dalam urutan berikut:

  • Entri untuk kategori lebih diutamakan daripada entri untuk semua aturan penganalisis.
  • Entri untuk aturan individual menurut ID lebih diutamakan daripada entri untuk kategori.

Pertimbangkan contoh berikut, di mana CA1822 memiliki kategori "Performa":

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

Dalam contoh sebelumnya, ketiga entri tingkat keparahan berlaku untuk CA1822. Namun, menggunakan aturan prioritas yang ditentukan, entri berbasis ID aturan pertama menang atas entri berikutnya. Dalam contoh ini, CA1822 akan memiliki tingkat keparahan yang efektif dari error. Semua aturan lain dalam kategori "Performa" akan memiliki tingkat keparahan warning.

Untuk informasi tentang bagaimana prioritas antar file diputuskan, lihat bagian Prioritas dari artikel File konfigurasi.