Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA2252 |
| Název | Přihlášení k funkcím ve verzi Preview před jejich použitím |
| Kategorie | Využití |
| Oprava, která může být destruktivní nebo nedestruktivní | Nezlomitelný |
| Povoleno ve výchozím nastavení v .NET 10 | Jako chyba |
| Příslušné jazyky | C# a Visual Basic |
Příčina
Klient používá náhledová rozhraní API nebo typy ve svém sestavení, aniž by se výslovně rozhodl buď místně, nebo na úrovni modulu či sestavení.
Popis pravidla
Když je spotřebováno rozhraní API nebo sestavení, které je opatřeno atributem RequiresPreviewFeaturesAttribute , toto pravidlo zkontroluje, jestli se web volání přihlásil k funkcím ve verzi Preview. Web volání se přihlásil k funkcím ve verzi Preview, pokud platí jedna z následujících možností:
- Je v rozsahu poznámky
RequiresPreviewFeaturesAttribute. - Je součástí sestavení nebo modulu, který se už přihlásil k funkcím ve verzi Preview.
Následující obrázek ukazuje příklad diagnostiky CA2252.
Lib je typ náhledu, který je konstruovaný v metodě Main.
Main sama o sobě není označena jako metoda náhledu, takže diagnostika se vytváří na dvou voláních konstruktorů uvnitř Main.
Jak opravit porušení
Porušení můžete opravit dvěma způsoby:
Přesuňte místo volání do rozsahu anotace tím, že anotujete jeho nadřazený objekt
RequiresPreviewFeaturesAttribute. V předchozím příkladuAPreviewMethodje anotována atributemRequiresPreviewFeatures, takže analyzátor ignoruje použití typu preview uvnitřAPreviewMethod. Z toho vyplývá, že volajícíAPreviewMethodbudou muset provést podobné cvičení.Můžete se také přihlásit k funkcím ve verzi Preview na úrovni sestavení nebo modulu. To značí analyzátoru, že použití typu Preview v sestavení je žádoucí a v důsledku toho se tímto pravidlem nevygenerují žádné chyby. Toto je upřednostňovaný způsob, jak využívat závislosti ve verzi Preview. Pokud chcete povolit funkce preview v celém sestavení, nastavte vlastnost EnablePreviewFeatures v
.csprojsouboru:
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
Kdy potlačit upozornění
Potlačení upozornění z tohoto pravidla se doporučuje pouze pro pokročilé případy použití, kdy je potřeba explicitně zakázat diagnostiku rozhraní API. V takovém případě musíte být ochotni převzít odpovědnost za správné označení rozhraní API ve verzi Preview. Představte si například případ, kdy existující typ implementuje nové rozhraní Preview. Vzhledem k tomu, že celý typ nelze označit jako náhled (kvůli zpětné kompatibilitě), může být diagnostika kolem definice typu zakázána místně. Dále je potřeba označit implementace rozhraní Preview jako Preview. Stávající typ je teď možné použít jako předtím, ale volání metod nového rozhraní budou diagnostikovány.
System.Private.CoreLib.csproj používá tuto techniku k zpřístupnění obecných matematických funkcí u číselných typů, jako jsou Int32, Double a Decimal.
Následující obrázky ukazují, jak místně zakázat analyzátor CA2252.
Poznámka:
Falešně pozitivní upozornění z tohoto pravidla se můžou zobrazit, pokud platí všechny tyto skutečnosti:
- Používáte Sadu Visual Studio 2022 verze 17.5 nebo novější se starší verzí sady .NET SDK, tj. .NET 6 nebo starší.
- Používáte analyzátory ze sady .NET 6 SDK nebo starší verze balíčků analyzátoru, například Microsoft.CodeAnalysis.FxCopAnalyzers.
V tomto případě je bezpečné potlačit falešně pozitivní upozornění. Falešně pozitivní výsledky jsou způsobeny zásadní změnou kompilátoru jazyka C#. Zvažte použití novějšího analyzátoru, který obsahuje opravu falešně pozitivních upozornění. Upgradujte na Microsoft.CodeAnalysis.NetAnalyzers verze 7.0.0-preview1.22464.1 nebo novější nebo použijte analyzátory ze sady .NET 7 SDK.
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 CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252
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.CA2252.severity = none
Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none hodnotu v konfiguračním souboru.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.