Aturan penggunaan

Aturan penggunaan mendukung penggunaan .NET yang tepat.

Di bagian ini

Aturan Deskripsi
CA1801: Meninjau parameter yang tidak digunakan Tanda tangan metode menyertakan parameter yang tidak digunakan di isi metode.
CA1816: Panggil GC.SuppressFinalize dengan benar Metode yang merupakan implementasi Dispose tidak memanggil GC.SuppressFinalize; atau metode yang bukan implementasi Dispose memanggil GC.SuppressFinalize; atau metode yang memanggil GC.SuppressFinalize dan meneruskan argumen selain this (Me dalam Visual Basic).
CA2200: Lemparkan kembali untuk mempertahankan detail pelacakan tumpukan Pengecualian dilemparkan kembali, dan pengecualian tersebut secara eksplisit ditentukan dalam pernyataan throw. Jika pengecualian dilempar ulang dengan menyebutkan pengecualian dalam pernyataan throw, rangkaian pemanggilan metode antara metode asli yang melempar pengecualian dan metode saat ini akan hilang.
CA2201: Jangan munculkan jenis pengecualian yang dicadangkan Ini membuat kesalahan asli sulit dideteksi dan di-debug.
CA2207: Menginisialisasi bidang statik jenis nilai sebaris Jenis nilai mendeklarasikan konstruktor statik eksplisit. Untuk memperbaiki pelanggaran aturan ini, inisialisasi semua data statis saat dideklarasikan dan hapus konstruktor statik.
CA2208: Instansiasi pengecualian argumen dengan benar Panggilan dibuat ke konstruktor default (tanpa parameter) dari jenis pengecualian yang merupakan atau berasal dari ArgumentException, atau argumen string yang salah diteruskan ke konstruktor berparameter dari jenis pengecualian yang berasal dari ArgumentException.
CA2211: Bidang non-konstanta tidak boleh terlihat Field statis yang bukan konstanta atau hanya baca tidak aman untuk thread. Akses ke bidang tersebut harus dikontrol dengan hati-hati dan memerlukan teknik pemrograman tingkat lanjut untuk menyinkronkan akses ke objek kelas.
CA2213: Bidang sekali pakai harus dibuang Jenis yang mengimplementasikan System.IDisposable mendeklarasikan bidang yang tipenya juga mengimplementasikan IDisposable. Metode Dispose dari field tersebut tidak dipanggil oleh metode Dispose dari tipe yang mendeklarasikannya.
CA2214: Jangan panggil metode yang dapat diganti dalam konstruktor Ketika konstruktor memanggil metode virtual, ada kemungkinan bahwa konstruktor untuk instans yang memanggil metode belum dijalankan.
CA2215: Metode Dispose harus memanggil metode Dispose kelas dasar Jika suatu tipe mewarisi dari tipe yang dapat didisposisikan, tipe tersebut harus memanggil metode Dispose dari tipe dasar dari metode Dispose miliknya sendiri.
CA2216: Tipe yang dapat dibuang harus mendeklarasikan finalizer Jenis yang mengimplementasikan System.IDisposable, dan memiliki bidang yang menyarankan penggunaan sumber daya yang tidak dikelola, tidak menerapkan finalizer seperti yang dijelaskan oleh Object.Finalize.
CA2217: Jangan tandai enum dengan FlagsAttribute Enumerasi yang terlihat secara eksternal ditandai dengan FlagsAttribute, dan memiliki satu atau beberapa nilai yang bukan kekuatan dua atau kombinasi dari nilai lain yang ditentukan pada enumerasi.
CA2218: Ganti GetHashCode dengan mengganti Sama Dengan Jenis publik mengganti System.Object.Equals tetapi tidak mengganti System.Object.GetHashCode.
CA2219: Jangan munculkan pengecualian dalam klausul pengecualian Ketika pengecualian dimunculkan dalam klausul akhir atau kesalahan, pengecualian baru menyembunyikan pengecualian aktif. Ketika terjadi pengecualian dalam klausa filter, lingkungan runtime secara senyap menangkap pengecualian tersebut. Ini membuat kesalahan asli sulit dideteksi dan di-debug.
CA2224: Timpa Equals saat melakukan overload operator sama dengan Jenis publik menerapkan operator kesetaraan tetapi tidak mengganti System.Object.Equals.
CA2225: Operator yang dioverload memiliki alternatif bernama Overload operator terdeteksi, dan metode alternatif bernama yang diharapkan tidak ditemukan. Anggota alternatif bernama menyediakan akses ke fungsionalitas yang sama dengan operator, dan disediakan untuk pengembang yang memprogram dalam bahasa yang tidak mendukung operator yang kelebihan beban.
CA2226: Operator harus memiliki overload yang simetris Suatu tipe mengimplementasikan operator kesetaraan atau ketidaksetaraan, dan tidak mengimplementasikan operator kebalikannya.
CA2227: Properti kumpulan harus berupa baca saja Properti kumpulan bisa-tulis memungkinkan pengguna mengganti kumpulan dengan kumpulan yang berbeda. Properti hanya-baca mencegah koleksi diganti, tetapi anggota individualnya tetap dapat diatur.
CA2229: Menerapkan konstruktor serialisasi Untuk memperbaiki pelanggaran aturan ini, terapkan konstruktor serialisasi. Untuk kelas yang disegel, buat konstruktor menjadi privat; jika tidak, buat konstruktor menjadi terlindungi.
CA2231: Sama dengan operator overload dalam mengganti ValueType.Equals Tipe nilai meng-override Object.Equals tetapi tidak mengimplementasikan operator persamaan.
CA2234: Meneruskan objek System.Uri bukan string Panggilan dibuat ke metode yang memiliki parameter string yang namanya berisi "uri", "URI", "urn", "URN", "url", atau "URL". Tipe yang mendeklarasikan metode tersebut berisi metode kelebihan beban yang sesuai yang memiliki parameter System.Uri.
CA2235: Tandai semua bidang yang tidak dapat dibuat serial Bidang instans dari jenis yang tidak dapat diserialisasikan dideklarasikan dalam jenis yang dapat diserialisasikan.
CA2237: Tandai tipe ISerializable dengan SerializableAttribute Agar dikenali oleh common language runtime sebagai dapat diserialisasi, tipe harus ditandai dengan atribut SerializableAttribute, bahkan jika tipe tersebut menggunakan rutinitas serialisasi kustom melalui implementasi antarmuka ISerializable.
CA2241: Memberikan argumen yang benar untuk metode pemformatan Argumen format yang diteruskan ke String.Format tidak berisi item format yang sesuai dengan setiap argumen objek, atau sebaliknya.
CA2242: Uji NaN dengan benar Ekspresi ini menguji nilai terhadap Single.Nan atau Double.Nan. Gunakan Single.IsNan(Single) atau Double.IsNan(Double) untuk menguji nilai.
CA2243: Literal string atribut harus dapat diurai dengan benar Parameter harfiah string atribut tidak diurai dengan benar untuk URL, GUID, atau versi.
CA2244: Jangan duplikasi inisialisasi elemen yang diindeks Penginisialisasi objek memiliki lebih dari satu penginisialisasi elemen terindeks dengan indeks konstanta yang sama. Semua inisialisator kecuali yang terakhir bersifat redundan.
CA2245: Jangan menetapkan properti ke dirinya sendiri Properti secara tidak sengaja ditetapkan ke dirinya sendiri.
CA2246: Jangan menetapkan simbol beserta anggotanya dalam pernyataan yang sama Menetapkan simbol beserta anggotanya, yaitu field atau properti, dalam pernyataan yang sama tidak disarankan. Tidak jelas apakah pengaksesan anggota ditujukan untuk menggunakan nilai lama simbol sebelum penugasan atau nilai baru hasil penugasan dalam pernyataan ini.
CA2247: Argumen yang diteruskan ke konstruktor TaskCompletionSource harus enum TaskCreationOptions alih-alih enum TaskContinuationOptions TaskCompletionSource memiliki konstruktor yang menerima TaskCreationOptions yang mengontrol Task yang mendasarinya, serta konstruktor yang menerima objek status yang disimpan dalam task. Secara tidak sengaja meneruskan TaskContinuationOptions, bukan TaskCreationOptions akan menghasilkan panggilan yang memperlakukan opsi sebagai status.
CA2248: Berikan argumen 'enum' yang benar ke 'Enum.HasFlag' Tipe enum yang diteruskan sebagai argumen dalam pemanggilan metode HasFlag berbeda dari tipe enum pemanggil.
CA2249: Pertimbangkan untuk menggunakan String.Contains daripada String.IndexOf Panggilan ke string.IndexOf tempat hasil digunakan untuk memeriksa keberadaan atau tidak adanya substring dapat digantikan oleh string.Contains.
CA2250: Gunakan ThrowIfCancellationRequested ThrowIfCancellationRequested secara otomatis memeriksa apakah token telah dibatalkan, dan memunculkan OperationCanceledException jika dibatalkan.
CA2251: Gunakan String.Equals daripada String.Compare Lebih jelas dan mungkin lebih cepat menggunakan String.Equals daripada membandingkan hasil String.Compare dengan nol.
CA2252: Terima fitur pratinjau Ikut serta dalam fitur pratinjau sebelum menggunakan API pratinjau.
CA2253: Placeholder bernama tidak boleh menggunakan nilai numerik Tempat penampung bernama dalam template pesan pengelogan tidak boleh terdiri dari karakter numerik saja.
CA2254: Template harus berupa ekspresi statik Template pesan pengelogan tidak boleh berbeda di antara panggilan.
CA2255: Atribut ModuleInitializer tidak boleh digunakan di pustaka Penginisialisasi modul dimaksudkan untuk digunakan oleh kode aplikasi untuk memastikan komponen aplikasi diinisialisasi sebelum kode aplikasi memulai eksekusi.
CA2256: Semua anggota yang dideklarasikan dalam antarmuka induk harus memiliki implementasi dalam antarmuka yang diberi atribut DynamicInterfaceCastableImplementation Jenis yang dikaitkan dengan DynamicInterfaceCastableImplementationAttribute bertindak sebagai penerapan antarmuka untuk jenis yang menerapkan jenis IDynamicInterfaceCastable. Akibatnya, tipe tersebut harus menyediakan implementasi semua anggota yang ditentukan dalam antarmuka yang diwarisi, karena tipe yang mengimplementasikan IDynamicInterfaceCastable tidak akan menyediakan anggota-anggota tersebut.
CA2257: Anggota yang ditentukan pada antarmuka dengan 'DynamicInterfaceCastableImplementationAttribute' harus 'statik' Karena jenis yang mengimplementasikan IDynamicInterfaceCastable mungkin tidak menerapkan antarmuka dinamis dalam metadata, panggilan ke anggota antarmuka instans yang bukan implementasi eksplisit yang ditentukan pada jenis ini kemungkinan gagal pada runtime. Tandai anggota antarmuka baru static untuk menghindari kesalahan runtime.
CA2258: Menyediakan antarmuka 'DynamicInterfaceCastableImplementation' di Visual Basic tidak didukung Menyediakan antarmuka beratribut DynamicInterfaceCastableImplementationAttribute yang berfungsi memerlukan fitur Anggota Antarmuka Default, yang tidak didukung dalam Visual Basic.
CA2259: Pastikan ThreadStatic hanya digunakan dengan bidang statis ThreadStaticAttribute hanya memengaruhi static bidang (Shared di Visual Basic). Saat diterapkan pada field instans, atribut tidak memengaruhi perilaku.
CA2260: Menerapkan antarmuka matematika generik dengan benar Antarmuka matematika generik mengharuskan penggunaan tipe turunan itu sendiri sebagai parameter tipe rekursif-diri.
CA2261: Jangan gunakan ConfigureAwaitOptions.SuppressThrowing dengan Task<TResult> Opsi ConfigureAwaitOptions.SuppressThrowing ini tidak didukung oleh generik Task<TResult>, karena mungkin menyebabkan pengembalian yang tidak valid TResult.
CA2262: Atur MaxResponseHeadersLength dengan benar Pastikan nilai MaxResponseHeadersLength diberikan dengan benar. Nilai ini diukur dalam kilobyte.
CA2263: Gunakan overload generik saat tipe diketahui Menggunakan overload generik lebih disukai daripada meneruskan argumen System.Type saat tipenya diketahui, karena hal ini menghasilkan kode yang lebih bersih dan lebih aman terhadap tipe, dengan pemeriksaan saat kompilasi yang lebih baik.
CA2264: Jangan berikan nilai yang tidak dapat diubah ke 'ArgumentNullException.ThrowIfNull' 'ArgumentNullException.ThrowIfNull' melemparkan ketika argumen yang diteruskan adalah 'null'. Konstruksi tertentu seperti struct yang tidak dapat diubah ke null, dan ekspresi 'nameof()' dan 'new' diketahui tidak pernah null, sehingga 'ArgumentNullException.ThrowIfNull' tidak akan pernah melemparkan.
CA2265: Jangan bandingkan Span<T> dengan null ataudefault Membandingkan rentang dengan null atau default mungkin tidak melakukan apa yang Anda inginkan. default dan literal null secara implisit dikonversi menjadi Span<T>.Empty.
CA2266: Titik masuk program berbasis file harus dimulai dengan #! Ketika sebuah program terdiri atas beberapa berkas, berkas titik masuk harus diawali dengan baris shebang (#!) agar jelas berbeda dari berkas lain yang disertakan.