Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Mülkiyet | Değer |
|---|---|
| Kural Kimliği |
CA2026 |
| Başlık |
JsonElement.Parse'ı JsonDocument.Parse().RootElement'e tercih edin |
| Kategori | Reliability |
| Düzeltme kırılgan mı yoksa sağlam mı | Non-breaking |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
Nedeni
Kod, JSON'ı bir JsonDocument.Parse().RootElementiçinde ayrıştırmak için kullanırJsonElement.
Kural açıklaması
JsonElement.Parse çağrısından JsonDocument.Parse().RootElementdaha verimlidir.
JsonDocument türü, IDisposable uygulamasını gerçekleştirir ve dizileri ArrayPool<T>'den kiralar; bu, belgeyi düzgün bir şekilde bertaraf etmezseniz bellek sızıntılarına veya artan GC baskısına yol açabilir.
JsonElement.Parse.NET 10'da kullanıma sunulan yöntemi, JSON'ı bu endişeler olmadan doğrudan ayrıştırarak JsonElement daha verimli ve daha az hataya açık hale getirir.
İhlalleri düzeltme
için çağrılarını JsonDocument.Parse().RootElement ile JsonElement.Parse()değiştirin.
Örnekler
Aşağıdaki kod parçacığı CA2026 ihlalini gösterir:
public static void ProcessJsonViolation(string json)
{
JsonElement element = JsonDocument.Parse(json).RootElement;
//...
}
Public Sub ProcessJsonViolation(json As String)
Dim element As JsonElement = JsonDocument.Parse(json).RootElement
'...
End Sub
Aşağıdaki kod parçacığı ihlali düzeltir:
public static void ProcessJsonFixed(string json)
{
JsonElement element = JsonElement.Parse(json);
//...
}
Public Sub ProcessJsonFixed(json As String)
Dim element As JsonElement = JsonElement.Parse(json)
'...
End Sub
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen uyarıları gizlemeyin. .NET 10 veya sonraki bir sürümü hedeflediyseniz, daha iyi performans ve kaynak yönetimi için kullanmalısınız JsonElement.Parse() .
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, none önem derecesini olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.