CA1863: Gunakan 'CompositeFormat'
Properti | Nilai |
---|---|
ID Aturan | CA1863 |
Judul | Menggunakan CompositeFormat |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Panggilan kode String.Format(String, Object[]) atau StringBuilder.AppendFormat(String, Object[]) dengan static
string format yang belum di-cache ke CompositeFormat instans.
Deskripsi aturan
Sangat mahal untuk mengurai string format pada waktu proses. Aturan ini menemukan tempat dalam kode Anda di mana Anda dapat menyimpan dan menggunakan CompositeFormat instans sebagai argumen ke operasi pemformatan, daripada meneruskan string format asli. Instans CompositeFormat menguraikan string format komposit saat dibuat, yang berarti "jalur panas" pemformatan string dapat dijalankan jauh lebih cepat.
Cara memperbaiki pelanggaran
Buat instans CompositeFormat dengan memanggil CompositeFormat.Parse(String) dan meneruskannya ke String.Format(IFormatProvider, CompositeFormat, Object[]) atau StringBuilder.AppendFormat(IFormatProvider, CompositeFormat, Object[]) alih-alih string format asli.
Contoh
Contoh berikut menunjukkan dua pelanggaran aturan:
class C
{
private static readonly string StaticField = "Format one value: {0}";
static void Main()
{
_ = string.Format(StaticField, 42);
StringBuilder sb = new();
sb.AppendFormat(StaticField, 42);
}
}
Contoh berikut menunjukkan kode yang memperbaiki kedua pelanggaran:
class C
{
private static readonly CompositeFormat StaticField = CompositeFormat.Parse("Format one value: {0}");
static void Main()
{
_ = string.Format(null, StaticField, 42);
StringBuilder sb = new();
sb.AppendFormat(null, StaticField, 42);
}
}
Kapan harus menekan peringatan
Aman untuk menekan diagnostik dari aturan ini jika performa tidak menjadi perhatian.
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 CA1863
// The code that's violating the rule is on this line.
#pragma warning restore CA1863
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1863.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.