A CA2252: Az előzetes funkciók használata előtt engedélyezze azokat.

Tulajdonság Érték
Szabályazonosító CA2252
Cím Előzetesen aktiválja a funkciókat, mielőtt használná őket.
Kategória Használat
A javítás romboló vagy nem romboló Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Hibaként
Alkalmazandó nyelvek C# és Visual Basic

Ok

Az ügyfél előzetes verziójú API-kat vagy típusokat használ az összeállításban anélkül, hogy kifejezetten döntenének erről helyileg vagy a modul, illetve az összeállítás szintjén.

Szabály leírása

Az RequiresPreviewFeaturesAttribute attribútummal dekorált API vagy összeállítás használata esetén ez a szabály ellenőrzi, hogy a hívási pont engedélyezte-e az előzetes verziójú funkciók használatát. Egy híváswebhely engedélyezte az előzetes verziójú funkciókat, ha az alábbiak valamelyike érvényes:

  • Egy RequiresPreviewFeaturesAttribute annotáció hatókörén belül van.
  • Ez egy olyan szerelvény vagy modul része, amely már engedélyezte az előzetes verziójú funkciók használatát.

Az alábbi képen a CA2252 diagnosztikára vonatkozó példa látható.

Kódszerkesztő CA2252 figyelmeztetéssel.

Itt található egy előzetes verziótípus, Lib amely a Main metódusban van létrehozva. Main nincs előzetes metódusként megjelölve, így diagnosztikát hoznak létre a Main-en belüli két konstruktorhívásra.

Szabálysértések kijavítása

A szabálysértések kétféleképpen oldhatóak meg:

  • Hozzon létre egy hívás helyét egy annotáció hatókörében, ha szülőjét a RequiresPreviewFeaturesAttribute annotációval látja el. Az előző példában a APreviewMethod attribútumként van megjelölve a RequiresPreviewFeatures hordozójával, így az elemző figyelmen kívül hagyja az előnézeti típus használatát a APreviewMethod elemen belül. Ebből következik, hogy a APreviewMethod hívóknak hasonló gyakorlatot kell végrehajtaniuk.

  • A funkciók előnézetét szerelvény- vagy modulszinten is választhatja. Ez azt jelzi az elemzőnek, hogy a szerelvény előzetes típushasználata kívánatos, és ennek következtében ez a szabály nem okoz hibákat. A legelőnyösebb módja az előzetes függőségek használatának. Az előzetes verziójú funkciók teljes szerelvényen belüli engedélyezéséhez állítsa be az EnablePreviewFeatures tulajdonságot egy .csproj fájlban:

  <PropertyGroup>
    <EnablePreviewFeatures>true</EnablePreviewFeatures>
  </PropertyGroup>

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetéseinek mellőzése csak olyan speciális használati esetekben ajánlott, ahol az API-kon végzett diagnosztikát explicit módon le kell tiltani. Ebben az esetben vállalnia kell az előzetes verziójú API-k megfelelő megjelölésének felelősségét. Vegyük például azt az esetet, amikor egy meglévő típus új előnézeti felületet implementál. Mivel a teljes típus nem jelölhető meg előnézetként (visszamenőleges kompatibilitás esetén), a típusdefiníció körüli diagnosztikát helyileg le lehet tiltani. Emellett meg kell jelölnie az előnézeti felület implementációit előzetes verzióként. A meglévő típus már használható a korábbiakhoz hasonlóan, de az új felületi metódusok hívásai diagnosztikát kapnak. A System.Private.CoreLib.csproj ezzel a technikával általános matematikai funkciókat tesz elérhetővé olyan numerikus típusok esetében, mint Int32a , Doubleés Decimal.

Az alábbi képeken a CA2252-elemző helyi letiltása látható.

CA2252 – Az előzetes verziójú funkciódiagnosztika észlelésének letiltása

CA2252 – Mark Interface implementációk explicit módon

Megjegyzés

Ha az alábbiak mindegyike érvényes, a szabály tévesen pozitív figyelmeztetéseket jeleníthet meg:

  • A Visual Studio 2022 17.5-ös vagy újabb verzióját használja a .NET SDK egy régebbi verziójával, vagyis a .NET 6-os vagy korábbi verziójával.
  • A .NET 6 SDK-ból származó elemzőket vagy az elemzőcsomagok egy régebbi verzióját használja, például a Microsoft.CodeAnalysis.FxCopAnalyzerst.

Ebben az esetben nyugodtan el lehet tiltani egy hamis pozitív figyelmeztetést. A hamis pozitív értékek egy kompatibilitástörő változás miatt a C#-fordítóban jelentkeznek. Fontolja meg egy újabb elemző használatát, amely tartalmazza a hamis pozitív figyelmeztetések javítását. Frissítsen a Microsoft.CodeAnalysis.NetAnalyzers 7.0.0-preview1.22464.1-es vagy újabb verziójára, vagy használja a .NET 7 SDK elemzőit.

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 CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252

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.CA2252.severity = none

A teljes szabálykategória letiltásához állítsa be a kategória súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Lásd még