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.
A megbízhatósági szabályok támogatják a kódtár és az alkalmazások megbízhatóságát, például a megfelelő memória- és szálhasználatot. A megbízhatósági szabályok a következők:
| Szabály | Leírás |
|---|---|
| CA2000: Objektumokat szabadít fel a hatókör elvesztése előtt | Mivel olyan kivételes esemény fordulhat elő, amely megakadályozza egy objektum véglegesítőjének futását, az objektumot explicit módon kell megsemmisíteni, mielőtt az összes rá mutató hivatkozás hatókörön kívül lenne. |
| CA2002: Ne zárolja a gyenge identitású objektumokat | A rendszer azt állítja, hogy egy objektum gyenge identitással rendelkezik, ha közvetlenül elérhető az alkalmazás tartományhatárai között. A gyenge identitással rendelkező objektumok zárolását lekérni próbáló szálakat egy másik alkalmazástartomány második szála blokkolhatja, amely ugyanahhoz az objektumhoz van zárolva. |
| CA2007: Ne várjon közvetlenül tevékenység | Az aszinkron metódus közvetlenülTask vár. |
| CA2008: Ne hozzon létre feladatokat TaskScheduler- | A tevékenységlétrehozási vagy -folytatási művelet olyan metódust használ, amely nem ad meg TaskScheduler paramétert. |
| CA2009: Ne hívja meg a ToImmutableCollection függvényt az ImmutableCollection értéken |
ToImmutable metódust szükségtelenül meghívták egy nem módosítható gyűjteményre System.Collections.Immutable névtérből. |
| CA2011: Ne rendeljen tulajdonságot a setter | Egy tulajdonság véletlenül hozzárendelt egy értéket a saját tartozék. |
| CA2012: ValueTasks helyes használata | A tagkihívásokból visszaadott ValueTask-elemeket közvetlenül várjuk. A ValueTask többszöri felhasználására vagy az eredmény közvetlen elérésére tett kísérletek az ismert befejezés előtt kivételt vagy sérülést okozhatnak. Az ilyen ValueTask figyelmen kívül hagyása valószínűleg egy funkcionális hiba jele, és ronthatja a teljesítményt. |
| CA2013: Ne használjon ReferenceEquals típusú | Az értékek System.Object.ReferenceEqualshasználatával történő összehasonlítása esetén, ha az objA és az objB értéktípusok, a rendszer azokat a ReferenceEquals metódusnak való továbbítás előtt bekeretezi. Ez azt jelenti, hogy még ha az objA és az objB is ugyanazt az értéktípus-példányt képviseli, a ReferenceEquals metódus ennek ellenére hamis értéket ad vissza. |
| CA2014: Ne használjon stackallocot hurkokban. | A stackalloc által lefoglalt veremterület csak az aktuális metódus meghívásának végén szabadul fel. A hurokban való használat kötetlen veremnövekedést és végső verem túlcsordulási feltételeket eredményezhet. |
| CA2015: Ne definiáljon véglegesítőket a MemoryManager<T> | Ha egy MemoryManager<T> származtatott típushoz véglegesítőt ad hozzá, akkor a memória felszabadítható, amíg a Span<T>még használatban van. |
| CA2016: A CancellationToken paraméter továbbítása egy | A CancellationToken paraméter továbbítása olyan metódusok felé, amelyek biztosítják, hogy a műveletlemondási értesítések megfelelően propagálásra kerülnek, vagy CancellationToken.None explicit módon adják át, hogy jelezzék, szándékosan nem propagálja a jogkivonatot. |
| CA2017: A paraméterszám eltérése | A naplózási üzenetsablonban megadott paraméterek száma nem egyezik meg az elnevezett helyőrzők számával. |
CA2018: A countBuffer.BlockCopy argumentumának meg kell adnia a másolási bájtok számát |
A Buffer.BlockCopyhasználatakor a count argumentum a másolandó bájtok számát adja meg. Csak olyan tömbök Array.Length argumentumához használjon count, amelyek elemei pontosan egy bájt méretűek.
byte, sbyteés bool tömbök egy bájt méretű elemeket tartalmaznak. |
CA2019: ThreadStatic mezők nem használhatnak beágyazott inicializálási |
A ThreadStaticAttribute jegyzettel ellátott mezők inicializálása beágyazott vagy explicit módon történik egy static (Shared a Visual Basicben) konstruktorban. |
| CA2020: Az IntPtr/UIntPtr beépített operátorai által okozott viselkedésváltozás megakadályozása | A .NET 7-ben hozzáadott egyes beépített operátorok eltérően viselkednek, mint a felhasználó által definiált operátorok a .NET 6-ban és a korábbi verziókban. Egyes operátorok, amelyek korábban nem ellenőrzött környezetbe dobtak túlcsordulás közben, nem dobtak többé, hacsak be nem csomagolták az ellenőrzött környezetbe. Egyes operátorok, amelyek korábban nem dobtak be ellenőrzött környezetet, most csak akkor dobnak, ha nem ellenőrzött környezetbe vannak csomagolva. |
| CA2021: Ne hívja meg az Enumerable.Cast<T> vagy Enumerable.OfType<T> nem kompatibilis típusok | A Enumerable.Cast<TResult>(IEnumerable) vagy Enumerable.OfType<TResult>(IEnumerable) hívása olyan típusparamétert határoz meg, amely nem kompatibilis a bemeneti gyűjtemény típusával. |
| CA2022: A Stream.Read | A Stream.Read hívás a kértnél kevesebb bájtot adhat vissza, ami megbízhatatlan kódot eredményez, ha a visszatérési érték nincs bejelölve. |
| CA2023: Érvénytelen zárójelek az üzenetsablonban | A naplózási üzenetsablonok kapcsos zárójeleket { és } használnak arra, hogy nevesített helyőrzőket jelöljenek az értékek számára. Az üzenetsablonok érvénytelen zárójelhasználata futásidejű kivételeket vagy váratlan naplózási viselkedést eredményezhet. |
| CA2024: Ne használja a StreamReader.EndOfStreamet aszinkron metódusokban | A StreamReader.EndOfStream tulajdonság nem szándékos szinkron blokkolást okozhat, ha nincs pufferelt adat. Ehelyett használja közvetlenül a StreamReader.ReadLineAsync(), amely a stream végének elérésekor null ad vissza. |
CA2025: Ne adjon át példányokat várakozás nélkül a feladatoknak IDisposable |
Nem várt feladatok, amelyek IDisposable példányokat használnak, hosszú időn keresztül használhatják ezeket a példányokat még azok elidegenítése után is. Győződjön meg arról, hogy az ilyen példányokat használó tevékenységek a példányok megsemmisítése előtt befejeződnek. |
| CA2026: A JsonElement.Parse előnyben részesítése a JsonDocument.Parse() helyett. RootElement | Hatékonyabb közvetlenül hívni JsonElement.Parse , mint hívni JsonDocument.Parse().RootElement. |
Dolgozzon együtt velünk a GitHubon
A tartalom forrása a GitHubon található, ahol létrehozhat és áttekinthet problémákat és lekéréses kérelmeket is. További információért tekintse meg a közreműködői útmutatónkat.