CA1710: Pengidentifikasi harus memiliki sufiks yang benar
Properti | Nilai |
---|---|
ID Aturan | CA1710 |
Judul | Pengidentifikasi harus memiliki akhiran yang benar |
Golongan | Penamaan |
Perbaikan bersifat disruptif atau non-disruptif | Merusak |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Pengidentifikasi tidak memiliki akhiran yang benar.
Secara default, aturan ini hanya melihat pengidentifikasi yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.
Deskripsi aturan
Menurut konvensi, nama jenis yang memperluas jenis dasar tertentu atau yang mengimplementasikan antarmuka tertentu, atau jenis yang berasal dari jenis ini, memiliki akhiran yang terkait dengan jenis dasar atau antarmuka.
Konvensi penamaan menyediakan tampilan umum untuk pustaka yang menargetkan runtime bahasa umum. Hal ini mengurangi kurva pembelajaran yang diperlukan untuk pustaka perangkat lunak baru, dan meningkatkan keyakinan pelanggan bahwa pustaka dikembangkan oleh seseorang yang memiliki keahlian dalam mengembangkan kode terkendali.
Tabel berikut mencantumkan jenis dasar dan antarmuka yang memiliki akhiran terkait.
Jenis dasar/Antarmuka | Akhiran |
---|---|
System.Attribute | Attribute |
System.EventArgs | EventArgs |
System.Exception | Exception |
System.Collections.ICollection | Collection |
System.Collections.IDictionary | Dictionary |
System.Collections.IEnumerable | Collection |
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> | Dictionary |
System.Collections.Queue |
Collection atau Queue |
System.Collections.Stack |
Collection atau Stack |
System.Collections.Generic.ICollection<T> | Collection |
System.Collections.Generic.IDictionary<TKey,TValue> | Dictionary |
System.Data.DataSet | DataSet |
System.Data.DataTable |
Collection atau DataTable |
System.IO.Stream | Stream |
System.Security.IPermission | Permission |
System.Security.Policy.IMembershipCondition | Condition |
Delegasi penanganan aktivitas. | EventHandler |
Jenis yang mengimplementasikan ICollection dan merupakan jenis struktur data umum, seperti kamus, tumpukan, atau antrean, adalah nama yang diizinkan yang memberikan informasi yang bermakna tentang penggunaan jenis yang dimaksudkan.
Jenis yang mengimplementasikan ICollection dan merupakan kumpulan item tertentu memiliki nama yang diakhir dengan kata Collection
. Misalnya, kumpulan objek Queue akan memiliki nama QueueCollection
. Akhiran Collection
menandakan bahwa anggota koleksi dapat dijumlahkan dengan menggunakan pernyataan foreach
(For Each
dalam Visual Basic).
Jenis yang mengimplementasikan IDictionary atau IReadOnlyDictionary<TKey,TValue> memiliki nama yang diakhir dengan kata Dictionary
bahkan jika jenisnya juga mengimplementasikan IEnumerable atau ICollection. Konvensi penamaan akhiran Collection
dan Dictionary
memungkinkan pengguna membedakan antara dua pola enumerasi berikut.
Jenis dengan akhiran Collection
mengikuti pola enumerasi ini.
foreach(SomeType x in SomeCollection) { }
Jenis dengan akhiran Dictionary
mengikuti pola enumerasi ini.
foreach(SomeType x in SomeDictionary.Values) { }
Objek DataSet terdiri dari kumpulan DataTable objek, yang terdiri dari koleksi System.Data.DataColumn dan System.Data.DataRow objek, antara lain. Koleksi ini diimplementasikan ICollection melalui kelas dasar System.Data.InternalDataCollectionBase .
Cara memperbaiki pelanggaran
Ganti nama jenis sehingga ditata dengan istilah yang benar.
Kapan harus menekan peringatan
Aman untuk menekan peringatan untuk menggunakan akhiran Collection
jika jenisnya adalah struktur data umum yang mungkin diperluas atau yang akan menyimpan sekumpulan item yang beragam secara sewenang-wenang. Dalam hal ini, nama yang memberikan informasi yang bermakna tentang implementasi, performa, atau karakteristik struktur data lainnya mungkin masuk akal (misalnya, BinaryTree). Dalam kasus di mana jenis mewakili kumpulan jenis tertentu (misalnya, StringCollection), jangan menekan peringatan dari aturan ini karena akhiran menunjukkan bahwa jenis dapat dijumlahkan dengan menggunakan foreach
pernyataan.
Untuk akhiran lainnya, jangan menekan peringatan dari aturan ini. Akhiran memungkinkan penggunaan yang dimaksudkan terlihat dari nama jenis.
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 CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Mengonfigurasi kode yang akan dianalisis
Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.
- Menyertakan permukaan API tertentu
- Mengecualikan jenis dasar tidak langsung
- Akhiran tambahan yang diperlukan
Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku, atau untuk semua aturan dalam kategori ini (Penamaan) yang berlaku untuk aturan tersebut. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.
Menyertakan permukaan API tertentu
Anda dapat mengonfigurasi bagian basis kode mana yang akan dijalankan aturan ini, berdasarkan aksesibilitasnya, dengan mengatur opsi api_surface. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Nota
Ganti bagian XXXX
CAXXXX
dengan ID aturan yang berlaku.
Mengecualikan jenis dasar tidak langsung
Anda dapat mengonfigurasi apakah akan mengecualikan jenis dasar tidak langsung dari aturan. Secara default, opsi ini diatur ke true, yang membatasi analisis ke jenis dasar saat ini.
dotnet_code_quality.CA1710.exclude_indirect_base_types = false
Akhiran tambahan yang diperlukan
Anda dapat memberikan akhiran tambahan yang diperlukan atau mengambil alih perilaku beberapa akhiran yang dikodekan secara permanen dengan menambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:
dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]
Pisahkan beberapa nilai dengan |
karakter. Jenis dapat ditentukan dalam salah satu format berikut:
- Nama jenis saja (mencakup semua jenis dengan nama, terlepas dari jenis atau namespace yang memuatnya).
- Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol dengan awalan opsional
T:
.
Contoh:
Nilai Opsi | Ringkasan |
---|---|
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class |
Semua jenis yang mewarisi dari 'MyClass' harus memiliki akhiran 'Kelas'. |
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path |
Semua jenis yang mewarisi dari 'MyClass' harus memiliki akhiran 'Kelas' DAN semua jenis yang mengimplementasikan 'MyNamespace.IPath' diperlukan untuk memiliki akhiran 'Jalur'. |
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} |
Mengambil alih akhiran bawaan. Dalam hal ini, semua jenis yang mengimplementasikan 'IDataReader' tidak lagi diperlukan untuk berakhiran 'Koleksi'. |
Aturan terkait
CA1711: Pengidentifikasi tidak boleh memiliki sufiks yang salah