Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Ingatlan | Érték |
|---|---|
| Szabályazonosító | CA2026 |
| Title | Részesítsd előnyben a JsonElement.Parse-t a JsonDocument.Parse().RootElement-tel szemben. |
| Kategória | Megbízhatóság |
| A javítás törést okoz vagy nem okoz törést | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Javaslatként |
Oka
A kód JsonDocument.Parse().RootElement használja a JSON-t JsonElement-vé alakításra.
Szabály leírása
JsonElement.Parse hatékonyabb, mint a hívás JsonDocument.Parse().RootElement. A JsonDocument típus megvalósítja a IDisposable-t és tömböket bérel a ArrayPool<T>-ból, ami memóriaszivárgáshoz vagy fokozott GC-nyomást eredményezhet, ha nem megfelelően kezeli a dokumentum lezárását. A JsonElement.Parse módszer, amely a .NET 10-ben került bevezetésre, közvetlenül JsonElement elemzi a JSON-t anélkül, hogy ezekkel a problémákkal szembesülne, így hatékonyabb és kevésbé hajlamos a hibákra.
Szabálysértések kijavítása
Cserélje le a hívásokat a
Példák
A következő kódrészlet a CA2026 megsértését mutatja be:
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 következő kódrészlet kijavítja a szabálysértést:
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
Mikor kell letiltani a figyelmeztetéseket?
Ne nyomja el ennek a szabálynak a figyelmeztetéseit. Ha a .NET 10-et vagy újabb verziót céloz meg, javasolt a JsonElement.Parse() használata a jobb teljesítmény és erőforrás-kezelés érdekében.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.