CA1052: Jenis pemegang statis harus Statis atau NotInheritable
Properti | Nilai |
---|---|
ID Aturan | CA1052 |
Judul | Jenis pemegang statis harus Statis atau Tidak Dapat Diwariskan |
Golongan | Desain |
Perbaikan bersifat disruptif atau non-disruptif | Merusak |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Jenis non-abstrak hanya berisi anggota statis (selain kemungkinan konstruktor default) dan tidak dideklarasikan dengan pengubah statis atau Bersama .
Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.
Deskripsi aturan
Aturan CA1052 mengasumsikan bahwa jenis yang hanya berisi anggota statis tidak dirancang untuk diwariskan, karena jenisnya tidak menyediakan fungsionalitas apa pun yang dapat ditimpa dalam jenis turunan. Jenis yang tidak dimaksudkan untuk diwariskan harus ditandai dengan static
pengubah di C# untuk melarang penggunaannya sebagai jenis dasar. Selain itu, konstruktor defaultnya harus dihapus. Di Visual Basic, kelas harus dikonversi ke modul.
Aturan ini tidak diaktifkan untuk kelas abstrak atau kelas yang memiliki kelas dasar. Namun, aturan ini diaktifkan untuk kelas yang mendukung antarmuka kosong.
Catatan
Dalam implementasi penganalisis terbaru dari aturan ini, aturan ini juga mencakup fungsionalitas aturan CA1053.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, tandai jenis sebagai static
dan hapus konstruktor default (C#), atau konversikan ke modul (Visual Basic).
Kapan harus menekan peringatan
Anda dapat menekan pelanggaran dalam kasus berikut:
- Jenis ini dirancang untuk diwariskan. Tidak adanya pengubah
static
menunjukkan bahwa jenisnya berguna sebagai jenis dasar. - Jenis digunakan sebagai argumen jenis. Jenis statis tidak dapat digunakan sebagai argumen 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 CA1052
// The code that's violating the rule is on this line.
#pragma warning restore CA1052
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1052.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 (Desain) yang berlaku untuk aturan ini. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.
Menyertakan permukaan API tertentu
Anda dapat mengonfigurasi bagian basis kode mana yang akan dijalankan aturan ini, berdasarkan aksesibilitasnya, dengan mengatur opsi api_surface. 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
Catatan
Ganti bagian XXXX
CAXXXX
dengan ID aturan yang berlaku.
Contoh pelanggaran
Contoh berikut menunjukkan jenis yang melanggar aturan:
public class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}
Imports System
Namespace ca1052
Public Class StaticMembers
Shared Property SomeProperty As Integer
Private Sub New()
End Sub
Shared Sub SomeMethod()
End Sub
End Class
End Namespace
Perbaiki dengan pengubah statis
Contoh berikut menunjukkan cara memperbaiki pelanggaran aturan ini dengan menandai jenis dengan pengubah static
di C#:
public static class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}