CA1507: Gunakan nameof
sebagai pengganti string
Properti | Nilai |
---|---|
ID Aturan | CA1507 |
Judul | Gunakan nameof sebagai pengganti string |
Golongan | Kemampu |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 8 | Sebagai saran |
Penyebab
string
harfiah atau konstanta yang cocok dengan nama parameter metode yang berisi atau nama properti dari jenis yang berisi digunakan sebagai argumen untuk metode.
Deskripsi aturan
Aturan CA1507 memberi bendera penggunaan string
harfiah sebagai argumen ke metode atau konstruktor di mana ekspresi nameof (NameOf
dalam Visual Basic) akan menambahkan pemeliharaan. Aturan diaktifkan jika semua kondisi berikut terpenuhi:
Argumen adalah
string
harfiah atau konstanta.Argumen sesuai dengan parameter metode berjenis
string
atau konstruktor yang sedang dipanggil (artinya, tidak ada konversi yang terlibat di situs panggilan).Yaitu:
Nama parameter yang dideklarasikan adalah
paramName
dan nilai konstantastring
harfiah mencocokkan nama parameter metode, lambda, atau fungsi lokal di mana metode atau konstruktor sedang dipanggil.Nama parameter yang dideklarasikan adalah
propertyName
dan nilai konstantastring
harfiah mencocokkan nama properti jenis, di mana metode atau konstruktor sedang dipanggil.
Aturan CA1507 meningkatkan pemeliharaan kode dalam kasus di mana parameter dapat diganti namanya di masa depan, tetapi string
harfiah secara keliru tidak diganti namanya. Dengan menggunakan nameof
, simbol akan diganti namanya ketika parameter diganti namanya melalui operasi refaktor. Selain itu, setiap kesalahan ejaan atas nama parameter ditangkap oleh pengompilasi.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran, ganti string
harfiah dengan ekspresi nameof (NameOf
dalam Visual Basic). Misalnya, dua cuplikan kode berikut menunjukkan pelanggaran aturan dan cara memperbaikinya:
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
Tip
Perbaikan kode tersedia untuk aturan ini di Visual Studio. Untuk menggunakannya, posisikan kursor pada string
harfiah dan tekan Ctrl+. (titik). Pilih Gunakan nameof untuk mengekspresikan nama simbol dari daftar opsi yang disajikan.
Kapan harus menekan peringatan
Aman untuk menyembunyikan pelanggaran aturan ini jika Anda tidak khawatir tentang pemeliharaan kode Anda.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.