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 panggilan GC.SuppressFinalize; atau metode memanggil GC.SuppressFinalize dan meneruskan sesuatu selain this (Me di Visual Basic).
CA2200: Munculkan kembali untuk mempertahankan detail tumpukan Pengecualian dimunculkan kembali dan pengecualian secara eksplisit ditentukan dalam pernyataan kemunculan. Jika pengecualian dimunculkan kembali dengan menetapkan pengecualian dalam pernyataan kemunculan, daftar panggilan metode antara metode asli yang memunculkan 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: Buat instans 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 Bidang statis yang bukan konstanta atau baca-saja tidak aman untuk alur. 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 mendeklarasikan System.IDisposable bidang yang merupakan jenis yang juga mengimplementasikan IDisposable. Metode Dispose bidang tidak dipanggil dengan Dispose metode jenis deklarasikan.
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 Buang harus memanggil pembuangan kelas dasar Jika jenis mewarisi dari jenis sekali pakai, jenis tersebut harus memanggil Dispose metode jenis dasar dari metodenya sendiri Dispose .
CA2216: Jenis sekali pakai harus mendeklarasikan finalis 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 pengecualian dinaikkan dalam klausa filter, runtime secara diam-diam menangkap pengecualian. Ini membuat kesalahan asli sulit dideteksi dan di-debug.
CA2224: Ganti sama dengan pada sama dengan operator overloading Jenis publik menerapkan operator kesetaraan tetapi tidak mengganti System.Object.Equals.
CA2225: Overload operator telah memberi nama alternatif 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 simetris Jenis mengimplementasikan operator kesetaraan atau ketidaksetaraan, dan tidak menerapkan operator yang berlawanan.
CA2227: Properti kumpulan harus berupa baca saja Properti kumpulan bisa-tulis memungkinkan pengguna mengganti kumpulan dengan kumpulan yang berbeda. Properti baca-saja menghentikan kumpulan agar tidak diganti tetapi masih memungkinkan masing-masing anggota 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 Jenis nilai mengambil Object.Equals alih tetapi tidak mengimplementasikan operator kesetaraan.
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". Jenis deklarasikan metode berisi metode yang sesuai kelebihan beban yang memiliki System.Uri parameter.
CA2235: Tandai semua bidang yang tidak dapat dibuat serial Bidang instans dari jenis yang tidak dapat diserialisasikan dideklarasikan dalam jenis yang dapat diserialisasikan.
CA2237: Menandai jenis ISerializable dengan SerializableAttribute Untuk dikenali oleh runtime bahasa umum sebagai dapat diserialisasikan, jenis harus ditandai dengan atribut SerializableAttribute bahkan jika jenis menggunakan rutinitas serialisasi kustom melalui implementasi ISerializable antarmuka.
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: Harfiah string atribut harus 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 kecuali penginisialisasi terakhir yang berlebihan.
CA2245: Jangan tetapkan properti untuk properti itu sendiri Properti secara tidak sengaja ditetapkan untuk properti itu sendiri.
CA2246: Jangan tetapkan simbol dan anggota simbol dalam pernyataan yang sama Menetapkan simbol dan anggota simbol, yaitu bidang atau properti, dalam pernyataan yang sama tidak disarankan. Tidak jelas apakah akses anggota dimaksudkan untuk menggunakan nilai lama simbol sebelum penetapan atau nilai baru dari penetapan dalam pernyataan ini.
CA2247: Argumen yang diteruskan ke konstruktor TaskCompletionSource harus enum TaskCreationOptions alih-alih enum TaskContinuationOptions TaskCompletionSource memiliki konstruktor yang mengambil TaskCreationOptions yang mengontrol Tugas yang mendasari, dan konstruktor yang mengambil status objek yang disimpan dalam tugas. Secara tidak sengaja meneruskan TaskContinuationOptions, bukan TaskCreationOptions akan menghasilkan panggilan yang memperlakukan opsi sebagai status.
CA2248: Berikan argumen 'enum' yang benar ke 'Enum.HasFlag' Jenis enum yang diteruskan sebagai argumen ke panggilan metode HasFlag berbeda dari jenis enum panggilan.
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 Menerima fitur pratinjau sebelum menggunakan API pratinjau.
CA2253: Tempat penampung bernama tidak boleh berupa 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 di antarmuka induk harus memiliki penerapan di antarmuka yang dikaitkan dengan DynamicInterfaceCastableImplementation Jenis yang dikaitkan dengan DynamicInterfaceCastableImplementationAttribute bertindak sebagai penerapan antarmuka untuk jenis yang menerapkan jenis IDynamicInterfaceCastable. Akibatnya, jenis tersebut harus menyediakan penerapan dari semua anggota yang ditentukan dalam antarmuka yang diwarisi, karena jenis yang menerapkan IDynamicInterfaceCastable tidak akan menyediakan anggota.
CA2257: Anggota yang ditentukan pada antarmuka dengan 'DynamicInterfaceCastableImplementationAttribute' harus 'statik' Karena jenis yang menerapkan IDynamicInterfaceCastable mungkin tidak menerapkan antarmuka dinamis dalam metadata, panggilan ke anggota antarmuka instans yang bukan penerapan eksplisit yang ditentukan pada jenis ini kemungkinan besar akan gagal pada durasi. Tandai anggota antarmuka baru static untuk menghindari kesalahan run-time.
CA2258: Menyediakan antarmuka 'DynamicInterfaceCastableImplementation' di Visual Basic tidak didukung Menyediakan antarmuka yang dikaitkan dengan DynamicInterfaceCastableImplementationAttribute fungsional memerlukan fitur Anggota Antarmuka Default, yang tidak didukung di Visual Basic.
CA2259: Pastikan ThreadStatic hanya digunakan dengan bidang statis ThreadStaticAttribute hanya memengaruhi static bidang (Shared di Visual Basic). Saat diterapkan ke bidang instans, atribut tidak berdampak pada perilaku.
CA2260: Menerapkan antarmuka matematika generik dengan benar Antarmuka matematika generik mengharuskan jenis turunan itu sendiri digunakan untuk parameter jenis berulang sendiri.
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 MaxResponseHeadersLength nilai disediakan dengan benar. Nilai ini diukur dalam kilobyte.
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.
CA2263: Lebih suka kelebihan beban umum saat jenis diketahui Menggunakan kelebihan beban umum lebih disukai untuk meneruskan System.Type argumen ketika jenis diketahui, karena mereka mempromosikan kode yang lebih bersih dan lebih aman jenis dengan pemeriksaan waktu kompilasi yang ditingkatkan.