Aturan keandalan

Aturan keandalan mendukung pustaka dan keandalan aplikasi, seperti memori dan penggunaan utas yang benar. Aturan keandalan meliputi:

Aturan Deskripsi
CA2000: Membuang objek sebelum kehilangan cakupan Karena peristiwa pengecualian mungkin terjadi yang akan mencegah penyelesai objek berjalan, objek harus dibuang secara eksplisit sebelum semua referensi ke objek keluar dari cakupan.
CA2002: Jangan kunci objek dengan identitas lemah Objek dikatakan memiliki identitas yang lemah ketika dapat diakses secara langsung di seluruh batas-batas domain aplikasi. Alur yang mencoba mendapatkan kunci pada objek yang memiliki identitas lemah dapat diblokir oleh alur kedua di domain aplikasi berbeda yang memiliki kunci pada objek yang sama.
CA2007: Jangan langsung menunggu Tugas Metode asinkron menungguTask secara langsung.
CA2008: Jangan buat tugas tanpa meneruskan TaskScheduler Pembuatan tugas atau operasi kelanjutan menggunakan overload metode yang tidak menentukan parameter TaskScheduler.
CA2009: Jangan panggil ToImmutableCollection pada nilai ImmutableCollection Metode ToImmutable tidak perlu dipanggil pada koleksi yang tidak dapat diubah dari namespace layanan System.Collections.Immutable.
CA2011: Jangan tetapkan properti di dalam pengaturan properti Properti secara tidak sengaja diberi nilai dalam pengakses kumpulan properti itu sendiri.
CA2012: Gunakan ValueTasks dengan benar ValueTasks yang dikembalikan dari pemanggilan anggota dimaksudkan untuk ditunggu secara langsung. Upaya untuk menggunakan ValueTask beberapa kali atau untuk langsung mengakses hasil seseorang sebelum diketahui selesai dapat mengakibatkan pengecualian atau kerusakan. Mengabaikan ValueTask kemungkinan merupakan indikasi bug fungsional dan dapat menurunkan performa.
CA2013: Jangan gunakan ReferenceEquals dengan jenis nilai Saat membandingkan nilai menggunakan System.Object.ReferenceEquals, jika objA dan objB adalah jenis nilai, keduanya diberi kotak sebelum diteruskan ke metode ReferenceEquals. Ini berarti bahwa meskipun objA dan objB mewakili instans jenis nilai yang sama, metode ReferenceEquals tetap menampilkan false.
CA2014: Jangan gunakan stackalloc dalam perulangan. Ruang tumpukan yang dialokasikan oleh stackalloc hanya dirilis di akhir pemanggilan metode saat ini. Menggunakannya dalam perulangan dapat menghasilkan pertumbuhan tumpukan yang tidak terbatas dan mengakibatkan kondisi luapan tumpukan.
CA2015: Jangan tentukan penyelesai untuk jenis yang diturunkan dari MemoryManager<T> Menambahkan penyelesai ke jenis yang diturunkan dari MemoryManager<T> dapat mengizinkan memori untuk dibebaskan saat masih digunakan oleh Span<T>.
CA2016: Teruskan parameter CancellationToken ke metode yang menggunakan parameter tersebut Teruskan parameter CancellationToken ke metode yang menggunakan parameter tersebut untuk memastikan pemberitahuan pembatalan operasi disebarkan dengan benar, atau teruskan CancellationToken.None secara eksplisit untuk menunjukkan bahwa token tidak disebarkan dengan sengaja.
CA2017: Jumlah parameter tidak cocok Jumlah parameter yang disediakan di template pesan pengelogan tidak cocok dengan jumlah tempat penampung bernama.
CA2018: Argumen count ke Buffer.BlockCopy harus menentukan jumlah byte yang akan disalin Saat menggunakan Buffer.BlockCopy, argumen count menentukan jumlah byte yang akan disalin. Anda hanya boleh menggunakan Array.Length untuk argumen count pada larik yang elemennya berukuran tepat satu byte. Larik byte, sbyte, dan bool memiliki elemen berukuran satu byte.
CA2019: ThreadStatic bidang tidak boleh menggunakan inisialisasi sebaris Bidang yang dianotasikan dengan ThreadStaticAttribute diinisialisasi sebaris atau secara eksplisit dalam static konstruktor (Shared di Visual Basic).
CA2020: Mencegah perubahan perilaku yang disebabkan oleh operator bawaan IntPtr/UIntPtr Beberapa operator bawaan yang ditambahkan di .NET 7 bereaksi berbeda dari operator yang ditentukan pengguna di .NET 6 dan versi yang lebih lama. Beberapa operator yang digunakan untuk melemparkan dalam konteks yang tidak dicentang saat meluap tidak meluap lagi kecuali dibungkus dalam konteks yang diperiksa. Beberapa operator yang sebelumnya tidak memberikan konteks yang diperiksa sekarang dilemparkan kecuali dibungkus dalam konteks yang tidak dicentang.
CA2021: Jangan panggil Enumerable.Cast<T> atau Enumerable.OfType<T> dengan jenis yang tidak kompatibel Panggilan ke Enumerable.Cast<TResult>(IEnumerable) atau Enumerable.OfType<TResult>(IEnumerable) menentukan parameter jenis yang tidak kompatibel dengan jenis koleksi input.