Bagikan melalui


C# Opsi Kompilator untuk melaporkan kesalahan dan peringatan

Opsi berikut mengontrol bagaimana kompilator melaporkan kesalahan dan peringatan.

Sintaks MSBuild sintaks csc.exe Deskripsi
WarningLevel -warn Atur tingkat peringatan. Info selengkapnya.
AnalysisLevel / Atur tingkat peringatan opsional. Info selengkapnya.
TreatWarningsAsErrors -warnaserror Perlakukan semua peringatan sebagai kesalahan. Info selengkapnya.
WarningsAsErrors -warnaserror+ Perlakukan satu atau beberapa peringatan sebagai kesalahan. Info selengkapnya.
WarningsNotAsErrors -warnaserror- Perlakukan satu atau beberapa peringatan bukan sebagai kesalahan. Info selengkapnya.
NoWarn -nowarn Atur daftar peringatan yang dinonaktifkan. Info selengkapnya.
CodeAnalysisRuleSet -ruleset Tentukan file ruleset yang menonaktifkan diagnostik tertentu. Info selengkapnya.
ErrorLog -errorlog Menentukan file untuk mencatat semua diagnostik kompilator dan penganalisis. Info selengkapnya.
ReportAnalyzer -reportanalyzer Laporkan informasi penganalisis tambahan, seperti waktu eksekusi. Info selengkapnya.

Catatan

Untuk informasi selengkapnya tentang mengonfigurasi opsi ini untuk proyek Anda, lihat opsi Pengkompilasi. Untuk informasi lebih lanjut tentang sakelar yang tersedia, lihat artikel sakelar perintah baris MSBuild di dokumentasi Visual Studio.

TingkatPeringatan

Opsi WarningLevel menentukan tingkat peringatan yang akan ditampilkan oleh kompilator.

<WarningLevel>3</WarningLevel>

Nilai elemen adalah tingkat peringatan yang ingin Anda tampilkan untuk kompilasi: Angka yang lebih rendah hanya menunjukkan peringatan tingkat keparahan yang tinggi. Angka yang lebih tinggi menunjukkan lebih banyak peringatan. Nilai harus nol atau bilangan bulat positif:

Tingkat peringatan Makna
0 Menonaktifkan emisi semua pesan peringatan.
1 Menampilkan pesan peringatan yang parah.
2 Menampilkan peringatan level 1 ditambah peringatan tertentu yang tidak terlalu parah, seperti peringatan tentang menyembunyikan anggota kelas.
3 Menampilkan peringatan level 2 ditambah peringatan tertentu yang tidak terlalu parah, seperti peringatan tentang ekspresi yang selalu bernilai true atau false.
4 (default) Menampilkan semua peringatan level 3 ditambah peringatan informasi.

Peringatan

Baris perintah kompilator menerima nilai lebih besar dari 4 untuk mengaktifkan peringatan gelombang peringatan.

Untuk mendapatkan informasi tentang kesalahan atau peringatan, Anda dapat mencari kode kesalahan di Indeks Bantuan. Untuk cara lain mendapatkan informasi tentang kesalahan atau peringatan, lihat Kesalahan Kompilator C#. Gunakan TreatWarningsAsErrors untuk memperlakukan semua peringatan sebagai kesalahan. Gunakan DisabledWarnings untuk menonaktifkan peringatan tertentu.

Tingkat analisis

Opsi AnalysisLevel menentukan gelombang peringatan dan penganalisis yang lebih tinggi untuk diaktifkan dalam proyek .NET 7 dan yang lebih baru. Peringatan gelombang peringatan adalah pemeriksaan tambahan yang meningkatkan kode Anda, atau memastikannya tetap kompatibel dengan rilis mendatang. Penganalisis menyediakan kemampuan seperti lint untuk meningkatkan kode Anda.

Dimulai dengan .NET 7 SDK, AnalysisLevel , dan WarningLevel ditetapkan berdasarkan aturan ini:

  • AnalysisLevel default cocok dengan Target Framework Moniker (TFM) dari file proyek.
  • WarningLevel default cocok dengan nilai untuk AnalysisLevel.
  • WarningLevel default adalah 4 untuk proyek .NET Framework.

Sebelum SDK .NET 7, AnalysisLevel menggantikan WarningLevel.

<AnalysisLevel>preview</AnalysisLevel>
Tingkat analisis Makna
5 Menampilkan semua peringatan gelombang 5 peringatan opsional.
6 Menampilkan semua peringatan gelombang 6 peringatan opsional.
7 Menampilkan semua peringatan gelombang 7 peringatan opsional.
terbaru (default) Menampilkan semua peringatan informasi hingga dan termasuk rilis saat ini.
pratinjau Menampilkan semua peringatan informasi hingga dan termasuk rilis pratinjau terbaru.
tidak ada Menonaktifkan semua peringatan informasi.

Untuk informasi selengkapnya tentang peringatan opsional, lihat Gelombang peringatan.

Untuk mendapatkan informasi tentang kesalahan atau peringatan, Anda dapat mencari kode kesalahan di Indeks Bantuan. Untuk cara lain mendapatkan informasi tentang kesalahan atau peringatan, lihat Kesalahan Kompilator C#. Gunakan TreatWarningsAsErrors untuk memperlakukan semua peringatan sebagai kesalahan. Gunakan NoWarn untuk menonaktifkan peringatan tertentu.

Anggap Peringatan Sebagai Kesalahan

Opsi TreatWarningsAsErrors memperlakukan semua peringatan sebagai kesalahan. Anda juga dapat menggunakan WarningsAsErrors untuk mengatur hanya beberapa peringatan sebagai kesalahan. Jika Anda mengaktifkan TreatWarningsAsErrors, Anda dapat menggunakan WarningsNotAsErrors untuk mencantumkan peringatan yang tidak boleh dianggap sebagai kesalahan.

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

Semua pesan peringatan sebagai gantinya dilaporkan sebagai kesalahan. Proses build berhenti (tidak ada file output yang dibuat). Secara default, TreatWarningsAsErrors tidak berlaku, yang berarti peringatan tidak mencegah pembuatan file output. Secara opsional, jika Anda hanya ingin beberapa peringatan tertentu diperlakukan sebagai kesalahan, Anda dapat menentukan daftar nomor peringatan yang dipisahkan koma untuk diperlakukan sebagai kesalahan. Kumpulan semua peringatan nullabilitas dapat ditentukan dengan singkatan Nullable (dapat diubah ke null). Gunakan WarningLevel untuk menentukan tingkat peringatan yang Anda inginkan untuk ditampilkan oleh kompilator. Gunakan NoWarn untuk menonaktifkan peringatan tertentu.

Penting

Ada dua perbedaan tipis antara menggunakan elemen <TreatWarningsAsErrors> di file csproj Anda, dan menggunakan switch baris perintah warnaserror MSBuild. TreatWarningsAsErrors hanya memengaruhi kompilator C#, bukan tugas MSBuild lainnya dalam file csproj Anda. Switch baris perintah warnaserror memengaruhi semua tugas. Kedua, kompilator tidak menghasilkan output apa pun pada peringatan apa pun saat TreatWarningsAsErrors digunakan. Kompilator menghasilkan output saat switch baris perintah warnaserror digunakan.

WarningsAsErrors dan WarningsNotAsErrors

Opsi WarningsAsErrors dan WarningsNotAsErrors mengambil alih opsi TreatWarningsAsErrors untuk daftar peringatan. Opsi ini dapat digunakan dengan semua peringatan CS. Prefiks "CS" bersifat opsional. Anda dapat menggunakan angka, atau "CS" diikuti dengan kesalahan atau nomor peringatan. Untuk elemen lain yang memengaruhi peringatan, lihat Properti MSBuild umum. Selain daftar ID peringatan, Anda juga dapat menentukan string nullable, yang memperlakukan semua peringatan yang terkait dengan nullability sebagai kesalahan.

Aktifkan peringatan 0219, 0168, dan semua peringatan null sebagai kesalahan:

<WarningsAsErrors>0219;CS0168;nullable</WarningsAsErrors>

Menonaktifkan peringatan yang sama dengan kesalahan:

<WarningsNotAsErrors>0219;CS0168;nullable</WarningsNotAsErrors>

Anda menggunakan WarningsAsErrors untuk mengonfigurasi serangkaian peringatan sebagai kesalahan. Gunakan WarningsNotAsErrors untuk mengonfigurasi serangkaian peringatan yang seharusnya tidak menjadi kesalahan saat Anda mengatur semua peringatan sebagai kesalahan.

NoWarn

Opsi NoWarn memungkinkan Anda menekan pengompilasi agar tidak menampilkan satu atau beberapa peringatan, di mana warningnumber1, warningnumber2 adalah nomor peringatan yang Anda inginkan untuk ditekan pengompilasi. Pisahkan beberapa nomor peringatan dengan koma. Anda dapat menentukan nullable untuk menonaktifkan semua peringatan yang terkait dengan nullability.

<NoWarn>warningnumber1,warningnumber2</NoWarn>

Anda hanya perlu menentukan bagian numerik dari pengidentifikasi peringatan. Misalnya, jika Anda ingin menyembunyikan CS0028, Anda dapat menentukan <NoWarn>28</NoWarn>. Kompilator secara diam-diam mengabaikan nomor peringatan yang diteruskan ke NoWarn yang valid dalam rilis sebelumnya, tetapi tidak dihasilkan oleh pengkompilasi saat ini. Misalnya, CS0679 valid dalam kompilator di Visual Studio .NET 2002 tetapi kemudian dihapus.

Peringatan berikut tidak dapat ditekan oleh opsi NoWarn :

  • Peringatan Kompilator (tingkat 1) CS2002
  • Peringatan Kompilator (tingkat 1) CS2023
  • Peringatan Kompilator (tingkat 1) CS2029

Peringatan dimaksudkan untuk menjadi indikasi potensi masalah dengan kode Anda, jadi Anda harus memahami risiko menonaktifkan peringatan tertentu. Gunakan NoWarn hanya ketika Anda yakin bahwa peringatan adalah positif palsu dan mungkin bukan bug runtime.

Anda mungkin ingin menggunakan pendekatan yang lebih ditargetkan untuk menonaktifkan peringatan:

  • Sebagian besar kompilator menyediakan cara untuk menonaktifkan peringatan hanya untuk baris kode tertentu, sehingga Anda masih dapat meninjau peringatan jika terjadi di tempat lain dalam proyek yang sama. Untuk menekan peringatan hanya di bagian tertentu dari kode di C#, gunakan peringatan #pragma.
  • Jika tujuan Anda adalah untuk melihat output yang lebih ringkas dan terfokus di log build, Anda mungkin ingin mengubah verbositas log build. Untuk informasi selengkapnya, lihat Cara: Menampilkan, menyimpan, dan mengonfigurasi file log build.

Untuk menambahkan nomor peringatan ke nilai yang ditetapkan sebelumnya untuk NoWarn tanpa menimpanya, referensi $(NoWarn) seperti yang ditunjukkan dalam contoh berikut:

   <NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>

Rangkaian Aturan Analisis Kode

Menentukan file seperangkat aturan yang mengonfigurasi diagnostik tertentu.

<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>

Di mana MyConfiguration.ruleset adalah jalur ke file seperangkat aturan. Untuk informasi selengkapnya tentang menggunakan kumpulan aturan, lihat artikel di dokumentasi Visual Studio tentang Seperangkat aturan.

CatatanKesalahan

Menentukan file untuk mencatat semua diagnostik kompilator dan penganalisis.

<ErrorLog>compiler-diagnostics.sarif</ErrorLog>

Opsi ErrorLog menyebabkan kompilator mengeluarkan log Static Analysis Results Interchange Format (SARIF). Alat yang menganalisis hasil pengkompilasi dan penganalisis membaca log SARIF.

Anda dapat menentukan format SARIF menggunakan argumen version ke elemen ErrorLog:

<ErrorLog>logVersion21.json,version=2.1</ErrorLog>

Pemisah dapat berupa koma (,) atau titik koma (;). Nilai yang valid untuk versi adalah: "1", "2", dan "2.1". Defaultnya adalah "1". "2" dan "2.1" keduanya berarti SARIF versi 2.1.0.

Penganalisis Laporan

Laporkan informasi penganalisis tambahan, seperti waktu eksekusi.

<ReportAnalyzer>true</ReportAnalyzer>

Opsi ReportAnalyzer menyebabkan kompilator mengeluarkan informasi log MSBuild tambahan yang merinci karakteristik performa penganalisis dalam build. Ini biasanya digunakan oleh pembuat penganalisis sebagai bagian dari validasi penganalisis.

Penting

Informasi log tambahan yang dihasilkan oleh tanda ini hanya dibuat ketika opsi baris perintah -verbosity:detailed digunakan. Untuk informasi selengkapnya, lihat artikel pengalihan dalam dokumentasi MSBuild.