CA1822: Tandai anggota sebagai statik
Properti | Nilai |
---|---|
ID Aturan | CA1822 |
Judul | Tandai anggota sebagai statik |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Tidak melanggar - Jika anggota tidak terlihat di luar rakitan, terlepas dari perubahan yang Anda buat. Tidak melanggar - Jika Anda hanya mengubah anggota menjadi anggota instans dengan this kata kunci.Melanggar - Jika Anda mengubah anggota dari anggota instans menjadi anggota statis dan terlihat di luar rakitan. |
Diaktifkan secara default di .NET 8 | Sebagai saran |
Penyebab
Anggota yang tidak mengakses data instans tidak ditandai sebagai statis (Dibagikan di Visual Basic).
Deskripsi aturan
Anggota yang tidak mengakses data instans atau memanggil metode instans dapat ditandai sebagai statik (Dibagikan dalam Visual Basic). Setelah Anda menandai metode sebagai statik, kompilator akan memancarkan situs panggilan nonvirtual ke anggota ini. Memancarkan situs panggilan nonvirtual akan mencegah pemeriksaan pada waktu proses untuk setiap panggilan yang memastikan bahwa penunjuk objek saat ini bukan nol. Ini dapat mencapai perolehan performa yang terukur untuk kode sensitif performa. Dalam beberapa kasus, kegagalan untuk mengakses instans objek saat ini mewakili masalah kebenaran.
Cara memperbaiki pelanggaran
Tandai anggota sebagai statis (atau Dibagikan di Visual Basic) atau gunakan 'ini'/'Saya' di isi metode, jika sesuai.
Kapan harus menekan peringatan
Aman untuk menekan peringatan dari aturan ini untuk kode yang dikirim sebelumnya yang perbaikannya akan menjadi perubahan yang melanggar.
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 CA1822
// The code that's violating the rule is on this line.
#pragma warning restore CA1822
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1822.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 untuknya, atau untuk semua aturan dalam kategori ini (Performa) 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