Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | CA2026 |
| Title | Verwenden Sie JsonElement.Parse anstelle von JsonDocument.Parse().RootElement |
| Kategorie | Reliability |
| Korrektur ist blockierend oder nicht-blockierend | Non-breaking |
| Standardmäßig in .NET 10 aktiviert | Als Vorschlag |
Ursache
Code verwendet JsonDocument.Parse().RootElement zum Parsen von JSON in ein JsonElement.
Regelbeschreibung
JsonElement.Parse ist effizienter als anrufe JsonDocument.Parse().RootElement. Der JsonDocument Typ implementiert und mietet IDisposable Arrays aus dem ArrayPool<T>, was zu Speicherlecks oder erhöhtem GC-Druck führen kann, wenn Sie das Dokument nicht ordnungsgemäß entsorgen. Die in .NET 10 eingeführte JsonElement.Parse-Methode analysiert JSON direkt in ein JsonElement und beseitigt dabei diese Bedenken, was sie effizienter und weniger fehleranfällig macht.
Wie man Verstöße behebt
Ersetzen Sie Anrufe durch JsonDocument.Parse().RootElementJsonElement.Parse().
Examples
Der folgende Codeausschnitt zeigt einen Verstoß gegen CA2026:
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
Der folgende Codeausschnitt behebt die Verletzung:
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
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnungen von dieser Regel. Wenn Sie auf .NET 10 oder höher abzielen, sollten Sie dies für eine bessere Leistung und Ressourcenverwaltung verwenden JsonElement.Parse() .
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026
Deaktivieren Sie die Regel für eine Datei, einen Ordner oder ein Projekt, indem Sie den Schweregrad in der none auf setzen.
[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.