CA2012: Správné použití hodnotových hodnot
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2012 |
Název | Správně použít hodnoty ValueTask |
Kategorie | Spolehlivost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako návrh |
Příčina
ValueTask Instance vrácená z volání člena se používá způsobem, který může vést k výjimkám, poškození nebo nízkému výkonu.
Popis pravidla
ValueTask Instance vrácené z volání členů mají být přímo očekávány. Pokusy o vícenásobné využití hodnoty ValueTask nebo přímý přístup k výsledku jednoho z nich dříve, než je známo, že je dokončen, může vést k výjimce nebo poškození. Ignorování takové hodnoty ValueTask pravděpodobně značí funkční chybu a může snížit výkon.
Jak opravit porušení
Obecně platí, že hodnoty ValueTasks by měly být přímo očekávány místo zahození nebo uložení do jiných umístění, jako jsou místní proměnné nebo pole.
Kdy potlačit upozornění
U ValueTask
objektů vrácených z libovolných volání členů volající musí předpokládat, že ValueTask
musí být spotřebováno (například očekáváno) jednou a pouze jednou. Pokud však vývojář také řídí vyvolání člena a má úplné znalosti o jeho implementaci, vývojář může vědět, že je bezpečné potlačit upozornění, například pokud vrácení ValueTask
vždy zabalí Task objekt.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.