Sembunyikan pelanggaran analisis kode
Jika Anda berkolaborasi dengan tim saat membuat kode, sering kali berguna untuk menunjukkan bahwa peringatan tidak berlaku. Menekan pelanggaran analisis kode menunjukkan kepada anggota tim bahwa kode ditinjau, dan peringatan dapat ditekan. Bagian berikut menjelaskan berbagai cara untuk menyembunyikan pelanggaran analisis kode menggunakan IDE Visual Studio.
Sembunyikan pelanggaran menggunakan file EditorConfig
Dalam file EditorConfig untuk solusi atau proyek Anda, tambahkan entri untuk setiap aturan yang ingin Anda konfigurasi dan atur tingkat keparahannya ke none
. Contohnya,dotnet_diagnostic.CA1822.severity = none
. Untuk informasi selengkapnya, lihat Mengonfigurasi tingkat keparahan aturan secara manual dalam file EditorConfig. Untuk menambahkan file EditorConfig, lihat Tambahkan file EditorConfig ke proyek.
Sembunyikan pelanggaran dalam kode sumber
Anda dapat menekan pelanggaran dalam kode sumber Anda menggunakan arahan praprosesor, yang menekan pelanggaran untuk baris kode tertentu:
- C#: peringatan #pragma
- Visual Basic: Menonaktifkan peringatan
Atau, Anda dapat menggunakan atribut SuppressMessageAttribute untuk menekan peringatan dalam kode C# dan Visual Basic Anda.
Menyembunyikan pelanggaran menggunakan editor kode
Untuk menekan pelanggaran menggunakan editor kode, ikuti langkah-langkah berikut:
Tempatkan kursor di baris kode dengan pelanggaran dan tekan Ctrl+Period (.) atau Alt+Enter untuk membuka menu Tindakan Cepat.
Pilih Sembunyikan atau konfigurasikan masalah>Sembunyikan <nomor> aturan, lalu pilih di Sumber atau di Sumber (atribut).
Jika Anda memilih di Sumber, Anda akan melihat pratinjau arahan preprocessor yang ditambahkan ke kode Anda.
Jika Anda memilih di Sumber (atribut), Anda akan melihat pratinjau atribut SuppressMessageAttribute yang ditambahkan ke kode Anda.
Menyembunyikan pelanggaran menggunakan Daftar Kesalahan
Untuk menyembunyikan pelanggaran menggunakan jendela Daftar Kesalahan, ikuti langkah-langkah berikut:
Dari jendela Daftar Kesalahan, pilih aturan yang ingin Anda sembunyikan.
Klik kanan, lalu pilih Sembunyikan>Di Sumber.
Dialog Pratinjau Perubahan terbuka dan memperlihatkan pratinjau direktif peringatan C# #pragma atau arahan peringatan #Disable Visual Basic yang ditambahkan ke kode sumber.
Pilih Terapkan untuk menyimpan perubahan ke file kode Anda.
Mengecualikan diagnostik build Daftar Kesalahan
Jika Anda tidak melihat opsi menu Sembunyikan di jendela Daftar Kesalahan, pelanggaran kemungkinan berasal dari build dan bukan analisis langsung. Jendela Daftar Kesalahan menampilkan diagnostik, atau pelanggaran aturan, dari analisis kode langsung dan build. Karena diagnostik build dapat basi, misalnya, jika Anda mengedit kode untuk memperbaiki pelanggaran tetapi tidak membangunnya kembali, Anda tidak selalu dapat menekan diagnostik ini dari Daftar Kesalahan.
Diagnostik dari analisis langsung, atau IntelliSense, selalu diperbarui dengan sumber saat ini dan selalu dapat ditekan dari Daftar Kesalahan. Untuk mengecualikan diagnostik build dari pilihan Anda, ikuti langkah-langkah berikut:
Dari daftar dropdown filter sumber Daftar Kesalahan, ubah pilihan dari Build + IntelliSense menjadi IntelliSense Saja.
Pilih diagnostik yang ingin Anda tekan dan lanjutkan seperti yang dijelaskan sebelumnya.
Sembunyikan pelanggaran menggunakan file supresi global
File penindasan global menggunakan atribut SuppressMessageAttribute untuk menekan pelanggaran kode.
Menggunakan file supresi global dari editor kode
Untuk menekan pelanggaran dengan file supresi global dengan menggunakan editor kode, ikuti langkah-langkah berikut:
Di editor kode, letakkan kursor pada baris kode dengan pelanggaran dan tekan Ctrl+Period (.) atau Alt+Enter untuk membuka menu Tindakan Cepat.
Pilih Sembunyikan <nomor> aturan, lalu pilih di File Supresi.
Visual Studio membuat tab di editor kode yang berisi file supresi global baru.
Menggunakan file supresi global dari Daftar Kesalahan
Untuk menekan pelanggaran dengan file supresi global dengan menggunakan jendela Daftar Kesalahan, ikuti langkah-langkah berikut:
Dari jendela Daftar Kesalahan, pilih aturan yang ingin Anda sembunyikan.
Klik kanan, lalu pilih Sembunyikan>Dalam File Supresi.
Kotak dialog Pratinjau Perubahan terbuka dan memperlihatkan pratinjau atribut yang SuppressMessageAttribute ditambahkan ke file supresi global.
Pilih Terapkan untuk menyimpan file supresi global.
Menyembunyikan semua pelanggaran saat ini
Menekan semua pelanggaran saat ini terkadang disebut sebagai dasar. Untuk menekan semua pelanggaran saat ini dalam solusi atau proyek, ikuti langkah-langkah berikut:
Dari bilah menu Visual Studio, pilih Analisis>Build dan Tekan Masalah Aktif.
Pilih Untuk solusi untuk menekan pelanggaran untuk seluruh solusi, atau pilih Untuk <nama> proyek guna menekan pelanggaran untuk proyek Anda saja.
Menyembunyikan pelanggaran menggunakan pengaturan proyek
Untuk menekan pelanggaran dengan menggunakan pengaturan proyek Penjelajah Solusi, ikuti langkah-langkah berikut:
Dari Penjelajah Solusi, pilih proyek Anda.
Klik kanan, lalu pilih Properti (atau tekan Alt + Enter).
Dari jendela Properti , pilih Analisis Kode dari panel kiri, lalu hapus Sembunyikan hasil dari kode yang dihasilkan.
Menyembunyikan pelanggaran menggunakan seperangkat aturan
Dari editor seperangkat aturan, kosongkan kotak centang di samping namanya atau atur Tindakan ke Tidak Ada.
Supresi dalam sumber dan atribut SuppressMessageAttribute
Supresi dalam sumber (ISS) menggunakan SuppressMessageAttribute atribut untuk menyembunyikan peringatan. Anda dapat menambahkan SuppressMessageAttribute
atribut ke file sumber di dekat segmen kode yang menghasilkan peringatan.
Anda dapat memasukkan atribut secara manual di editor kode, atau menambahkan atribut secara otomatis sebagai berikut:
Di editor kode, letakkan kursor pada baris kode dengan pelanggaran dan tekan Ctrl+Period (.) atau Alt+Enter untuk membuka menu Tindakan Cepat.
Pilih Sembunyikan atau konfigurasikan masalah>Sembunyikan <nomor> aturan dari menu Tindakan Cepat.
Lakukan salah satu langkah berikut:
Pilih di Sumber (atribut).
Visual Studio menambahkan
SuppressMessageAttribute
atribut ke kode Anda.Pilih di File Supresi.
Visual Studio membuat tab di editor kode yang berisi file supresi global baru dengan
SuppressMessageAttribute
atribut.
Atribut SuppressMessageAttribute
adalah atribut bersyarah, yang disertakan dalam metadata rakitan kode terkelola Anda. Atribut ini hanya disertakan jika CODE_ANALYSIS
simbol kompilasi ditentukan pada waktu kompilasi.
Hanya dalam kode C++ dan CLI, gunakan makro CA_SUPPRESS_MESSAGE
atau CA_GLOBAL_SUPPRESS_MESSAGE
di file header untuk menambahkan atribut .
Jika Anda memigrasikan proyek ke versi terbaru Visual Studio, Anda mungkin melihat sejumlah besar peringatan analisis kode. Jika Anda belum siap untuk memperbaiki peringatan, Anda dapat menyembunyikan semuanya dengan memilih Analisis>Membangun dan Menyembunyikan Masalah Aktif.
Catatan
Jangan gunakan supresi dalam sumber pada build rilis, untuk mencegah pengiriman metadata supresi dalam sumber secara tidak sengaja.
Format atribut SuppressMessageAttribute
AtributSuppressMessageAttribute
memiliki format berikut:
[Scope:SuppressMessage("Rule Category", "Rule Id", Justification = "Justification", MessageId = "MessageId", Scope = "Scope", Target = "Target")]
Sifat atribut meliputi:
Category
: Kategori aturan. Untuk informasi selengkapnya tentang kategori aturan analisis kode, lihat Aturan kualitas kode.CheckId:
Pengidentifikasi aturan. Dukungan mencakup nama pendek dan panjang untuk pengidentifikasi aturan. Nama pendeknya adalahCAXXXX
; nama panjangnya adalahCAXXXX:FriendlyTypeName
.Justification
: Teks yang digunakan untuk mendokumen alasan untuk menekan pesan.MessageId
: Pengidentifikasi unik masalah untuk setiap pesan.Scope
: Target di mana peringatan sedang ditekan. Jika target tidak ditentukan, sistem akan menetapkannya ke target atribut. Cakupan yang didukung meliputi:module
: Cakupan ini menekan peringatan terhadap rakitan. Ini adalah penindasan global yang berlaku untuk seluruh proyek.resource
: (Hanya FxCop Warisan) Cakupan ini menekan peringatan dalam info diagnostik yang ditulis ke file sumber daya yang merupakan bagian dari modul (rakitan). Cakupan ini tidak dibaca atau dihormati dalam pengkompilasi C#/VB untuk diagnostik penganalisis Roslyn, yang hanya menganalisis file sumber.type
: Cakupan ini menekan peringatan terhadap jenis.member
: Cakupan ini menekan peringatan terhadap anggota.namespace
: Cakupan ini menekan peringatan terhadap namespace itu sendiri. Ini tidak menekan peringatan terhadap jenis dalam namespace.namespaceanddescendants
: (Memerlukan pengompilasi versi 3.x atau lebih tinggi dan Visual Studio 2019 atau yang lebih baru) Cakupan ini menekan peringatan di namespace layanan dan semua simbol turunannya. Analisis warisannamespaceanddescendants
mengabaikan nilai.
Target
: Pengidentifikasi yang menentukan target tempat peringatan ditekan. Ini harus berisi nama komponen yang sepenuhnya memenuhi syarat.
Saat Anda melihat peringatan di Visual Studio, Anda dapat melihat contoh SuppressMessageAttribute
dengan menambahkan supresi ke file supresi global. Atribut supresi dan properti yang diperlukan muncul di jendela pratinjau.
Penggunaan SuppressMessageAttribute
Peringatan analisis kode ditekan pada tingkat di SuppressMessageAttribute mana atribut diterapkan. Misalnya, atribut dapat diterapkan pada tingkat perakitan, modul, jenis, anggota, atau parameter. Tujuan penerapan atribut ini adalah untuk menggabungkan informasi penindasan dengan erat ke kode tempat pelanggaran terjadi.
Bentuk umum supresi mencakup kategori aturan dan pengidentifikasi aturan, yang berisi representasi opsional yang dapat dibaca manusia dari nama aturan. Contohnya:
[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
Jika ada alasan performa yang ketat untuk meminimalkan metadata supresi sumber, nama aturan dapat dihilangkan. Kategori aturan dan ID aturannya bersama-sama membentuk pengidentifikasi aturan yang cukup unik. Contohnya:
[SuppressMessage("Microsoft.Design", "CA1039")]
Untuk alasan pemeliharaan, menghilangkan nama aturan tidak disarankan.
Sembunyikan pelanggaran selektif dalam isi metode
Atribut supresi dapat diterapkan ke metode, tetapi tidak dapat disematkan dalam isi metode. Semua pelanggaran aturan tertentu disembunyikan jika Anda menambahkan SuppressMessageAttribute atribut ke metode.
Dalam beberapa kasus, Anda mungkin ingin menyembunyikan instans tertentu dari pelanggaran. Pertimbangkan contoh di mana kode di masa mendatang tidak secara otomatis dikecualikan dari aturan analisis kode. Aturan analisis kode tertentu memungkinkan Anda untuk menyembunyikan instans pelanggaran tertentu dengan menggunakan MessageId
properti SuppressMessageAttribute
atribut. Secara umum, aturan warisan untuk pelanggaran pada simbol tertentu (variabel atau parameter lokal) menghormati MessageId
properti. CA1500:VariableNamesShouldNotMatchFieldNames adalah contoh aturan tersebut. Namun, aturan warisan untuk pelanggaran pada kode yang dapat dieksekusi (non-simbol) tidak menghormati MessageId
properti . Selain itu, penganalisis .NET Compiler Platform ("Roslyn") tidak menghormati MessageId
properti .
Untuk menyembunyikan pelanggaran simbol tertentu dari aturan, tentukan nama simbol untuk MessageId
properti SuppressMessageAttribute
atribut. Contoh berikut menunjukkan kode dengan dua pelanggaran CA1500:VariableNamesShouldNotMatchFieldNames: satu pelanggaran untuk name
variabel dan pelanggaran lain untuk variabel.age
Hanya pelanggaran untuk age
simbol yang disembunyikan.
public class Animal
{
int age;
string name;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1500:VariableNamesShouldNotMatchFieldNames", MessageId = "age")]
private void PrintInfo()
{
int age = 5;
string name = "Charlie";
Console.WriteLine($"Age {age}, Name {name}");
}
}
Supresi tingkat global
Alat analisis kode terkelola memeriksa SuppressMessageAttribute
atribut yang diterapkan di tingkat perakitan, modul, jenis, anggota, atau parameter. Ini juga mengirimkan pelanggaran terhadap sumber daya dan namespace layanan. Pelanggaran ini harus diterapkan di tingkat global dan terlingkup dan ditargetkan. Misalnya, pesan berikut menyembunyikan pelanggaran namespace:
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")]
Untuk supresi tingkat global:
Ketika Anda menekan peringatan dengan
namespace
cakupan, itu menekan peringatan terhadap namespace itu sendiri. Ini tidak menekan peringatan terhadap jenis dalam namespace.Target
selalu berisi nama item yang sepenuhnya memenuhi syarat.Supresi apa pun dapat diekspresikan dengan menentukan cakupan eksplisit. Supresi ini harus hidup di tingkat global. Anda tidak dapat menentukan supresi tingkat anggota dengan memodifikasi jenis.
Supresi tingkat global adalah satu-satunya cara untuk menekan pesan yang merujuk ke kode yang dihasilkan kompilator yang tidak memetakan ke sumber pengguna yang disediakan secara eksplisit. Misalnya, kode berikut menyembunyikan pelanggaran terhadap konstruktor yang dipancarkan pengkompilasi:
[module: SuppressMessage("Microsoft.Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="Microsoft.Tools.FxCop.Type..ctor()")]
File supresi global
File supresi global mempertahankan supresi yang merupakan supresi tingkat global atau supresi yang tidak menentukan target. Misalnya, supresi untuk pelanggaran tingkat perakitan disimpan dalam file ini. Selain itu, beberapa ASP.NET supresi disimpan dalam file ini karena pengaturan tingkat proyek tidak tersedia untuk kode di belakang formulir. Visual Studio membuat dan menambahkan file supresi global ke proyek Anda saat pertama kali Anda memilih opsi Di File Supresi Proyek dari perintah Sembunyikan di jendela Daftar Kesalahan.
Cakupan supresi modul
Anda dapat menekan pelanggaran kualitas kode untuk seluruh perakitan dengan menggunakan module
cakupan.
Misalnya, atribut berikut dalam file proyek GlobalSuppressions Anda menekan pelanggaran ConfigureAwait untuk proyek ASP.NET Core:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "ASP.NET Core doesn't use thread context to store request context.", Scope = "module")]
Kode yang dihasilkan
Pengkompilasi kode terkelola dan beberapa alat eksternal menghasilkan kode untuk membantu pengembangan kode yang cepat. Kode yang dihasilkan pengkompilasi yang muncul dalam file sumber ditandai dengan GeneratedCodeAttribute
atribut.
Untuk analisis kode sumber, Anda dapat menekan pesan dalam kode yang dihasilkan dalam file .editorconfig . Untuk informasi selengkapnya, baca Gambaran Umum Kode yang Dihasilkan.
Untuk analisis kode warisan, Anda dapat memilih apakah akan menyembunyikan peringatan analisis kode dan kesalahan untuk kode yang dihasilkan. Untuk informasi tentang cara menekan peringatan dan kesalahan tersebut, lihat Menyembunyikan peringatan analisis kode untuk kode yang dihasilkan.
Catatan
Analisis kode mengabaikan GeneratedCodeAttribute
ketika diterapkan ke seluruh perakitan atau satu parameter.