Bagikan melalui


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 8 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 Atribut
System.EventArgs EventArgs
System.Exception Pengecualian
System.Collections.ICollection Koleksi
System.Collections.IDictionary Kamus
System.Collections.IEnumerable Koleksi
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> Kamus
System.Collections.Queue Koleksi atau Antrean
System.Collections.Stack Koleksi atau Tumpukan
System.Collections.Generic.ICollection<T> Koleksi
System.Collections.Generic.IDictionary<TKey,TValue> Kamus
System.Data.DataSet Dataset
System.Data.DataTable Koleksi atau DataTable
System.IO.Stream Stream
System.Security.IPermission Izin
System.Security.Policy.IMembershipCondition Kondisi
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 'Koleksi'. Misalnya, kumpulan Queue objek akan memiliki nama 'QueueCollection'. Akhiran 'Koleksi' menandakan bahwa anggota koleksi dapat dijumlahkan dengan menggunakan foreach pernyataan (For Each dalam Visual Basic).

Jenis yang mengimplementasikan IDictionary atau IReadOnlyDictionary<TKey,TValue> memiliki nama yang diakhir dengan kata 'Kamus' bahkan jika jenisnya juga mengimplementasikan IEnumerable atau ICollection. Konvensi penamaan akhiran 'Koleksi' dan 'Kamus' memungkinkan pengguna untuk membedakan antara dua pola enumerasi berikut.

Jenis dengan akhiran 'Koleksi' mengikuti pola enumerasi ini.

foreach(SomeType x in SomeCollection) { }

Jenis dengan akhiran 'Kamus' 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 'Koleksi' 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.

Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku, atau untuk semua aturan dalam kategori ini (Penamaan) yang diterapkannya. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.

Menyertakan permukaan API tertentu

Anda dapat mengonfigurasi bagian mana dari basis kode yang akan menjalankan aturan ini, berdasarkan aksesibilitasnya. 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

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 opsionalT:.

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'.

CA1711: Pengidentifikasi tidak boleh memiliki sufiks yang salah

Lihat juga