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.
Pravidla použití podporují správné využití .NET.
V této části
| Pravidlo | Popis |
|---|---|
| CA1801: Revize nepoužitých parametrů | Podpis metody obsahuje parametr, který není použit v těle metody. |
| CA1816: Volejte správně GC.SuppressFinalize | Metoda, která je implementací Dispose není volá GC.SuppressFinalize; nebo metoda, která není implementací Dispose volání GC.SuppressFinalize; nebo metoda volá GC.SuppressFinalize a předává něco jiného než this (Me v jazyce Visual Basic). |
| CA2200: Znovu vyvolejte pro zachování podrobností zásobníku | Výjimka je znovu vyvolána a je jednoznačně uvedena v příkazu throw. Jestliže je výjimka znovu vyvolána zadáním výjimky v příkazu throw, seznam volání metody mezi původní metodou, která vyvolala výjimku, a aktuální metodou je ztracen. |
| CA2201: Nevyvolávejte vyhrazené typy výjimek | Původní chyba se tak obtížně rozpozná a ladí. |
| CA2207: Inicializujte vloženou hodnotu statických polí | Hodnotový typ deklaruje explicitní statický konstruktor. Chcete-li opravit porušení tohoto pravidla, inicializujte všechna statická data při deklaraci a statický konstruktor odeberte. |
| CA2208: Vytvořte správně instance výjimky argumentu | Je provedeno volání výchozího konstruktoru (bez parametrů) typu výjimky, která je typu ArgumentException nebo je z něj odvozena, nebo je předán nesprávný řetězcový argument do konstruktoru s parametry typu výjimky, která je typu ArgumentException nebo je z něj odvozena. |
| CA2211: Nekonstantní pole by nemělo být viditelné | Statická pole, která nejsou konstantami nebo jen pro čtení, nejsou bezpečná pro přístup z více vláken. Přístup k takovému poli musí být pečlivě řízen a vyžaduje pokročilé programovací techniky pro synchronizaci přístupu k objektu třídy. |
| CA2213: Uvolnitelné pole by mělo být uvolněno | Typ, který implementuje deklaruje System.IDisposable pole, která jsou typy, které také implementují IDisposable.
Dispose Metoda pole není volána Dispose metodou deklarujícího typu. |
| CA2214: Nevolejte přepisovatelné metody v konstruktorech | Když konstruktor volá virtuální metodu, je možné, že konstruktor pro instanci, která vyvolá metodu, se nespustí. |
| CA2215: Metody Dispose by měly volat uvolnění třídy Base | Pokud typ dědí z jednorázového typu, musí volat Dispose metodu základního typu z vlastní Dispose metody. |
| CA2216: Uvolnitelné typy by měly deklarovat finalizační metodu | Typ, který implementuje System.IDisposablea má pole, která navrhují použití nespravovaných prostředků, neimplementuje finalizátor, jak je popsáno .Object.Finalize |
| CA2217: Neoznačujte výčty pomocí FlagsAttribute | Externě viditelný výčet je označený FlagsAttributea má jednu nebo více hodnot, které nejsou mocninami dvou nebo kombinace ostatních definovaných hodnot ve výčtu. |
| CA2218: Přepište GetHashCode při přepsání Equals | Veřejný typ přepisuje System.Object.Equals , ale nepřepíše System.Object.GetHashCode. |
| CA2219: Nevyvolávejte výjimky v klauzulích výjimky | Když je výjimka vyvolána v klauzuli finally nebo fault, je případná aktivní výjimka překryta novou výjimkou. Při vyvolání výjimky v klauzuli filtru modul runtime bezobslužně zachytí výjimku. Původní chyba se tak obtížně rozpozná a ladí. |
| CA2224: Přepište Equals při přetížení operátoru rovnosti | Veřejný typ implementuje operátor rovnosti, ale nepřepíše System.Object.Equals. |
| CA2225: Přetížení operátoru mají pojmenované alternativy | Bylo zjištěno přetížení operátoru a alternativní metoda s očekávaným názvem nebyla nalezena. Pojmenovaný alternativní člen poskytuje přístup ke stejné funkci jako operátor a je poskytován vývojářům, kteří programují v jazycích, které nepodporují přetížené operátory. |
| CA2226: Operátory by měly mít symetrické přetížení | Typ implementuje operátor rovnosti nebo nerovnosti a neimplementuje opačný operátor. |
| CA2227: Vlastnosti kolekce by měly být pouze pro čtení | Zapisovatelná vlastnost kolekce umožňuje uživateli nahradit kolekci jinou kolekcí. Vlastnost jen pro čtení neumožňuje kolekci nahradit, ale stále umožňuje nastavit jednotlivé členy. |
| CA2229: Implementovat serializační konstruktory | Implementací konstruktoru serializace se vyřeší porušení tohoto pravidla. Pro zapečetěnou třídu musí být konstruktor soukromý. V ostatních případech musí být chráněný. |
| CA2231: Přetižte operátor equals při přepsání ValueType.Equals | Typ hodnoty přepíše Object.Equals , ale neimplementuje operátor rovnosti. |
| CA2234: Předejte objekty System.Uri namísto řetězců | Je provedeno volání metody, která má řetězcový parametr, jehož název obsahuje „uri“, „URI“, „urn“, „URN“, „url“ nebo „URL“. Deklarující typ metody obsahuje odpovídající přetížení metody, které má System.Uri parametr. |
| CA2235: Označte všechna neserializovatelná pole | Neserializovatelný typ pole instance je deklarován v serializovatelném typu. |
| CA2237: Označte typy ISerializable pomocí SerializableAttribute | Aby modul CLR (Common Language Runtime) rozpoznal jako serializovatelný, musí být typy označeny atributem SerializableAttribute, i když typ používá vlastní serializační rutinu prostřednictvím implementace ISerializable rozhraní. |
| CA2241: Poskytněte správné argumenty metodě formátování | Argument formátu předaný String.Format neobsahuje položku formátu, která odpovídá jednotlivým argumentům objektu nebo naopak. |
| CA2242: Testujte správně NaN | Tento výraz testuje hodnotu proti Single.Nan hodnotě nebo Double.Nan. Použijte Single.IsNan(Single) nebo Double.IsNan(Double) otestujte hodnotu. |
| CA2243: Literály řetězce atributu by se měly správně analyzovat | Řetězcový literál parametr atributu neprovádí správnou analýzu adresy URL, identifikátoru GUID nebo verze. |
| CA2244: Neduplikujte inicializace indexovaných prvků | Inicializátor objektů má více než jeden inicializátor indexovaného prvku se stejným konstantním indexem. Všechny kromě posledního inicializátoru jsou redundantní. |
| CA2245: Nepřiřazujte vlastnost sama sobě | Vlastnost byla omylem přiřazena sama sobě. |
| CA2246: Nepřiřazujte symbol a jeho člena ve stejném příkazu | Přiřazení symbolu a jeho člena, tj. pole nebo vlastnosti, ve stejném příkazu se nedoporučuje. Není jasné, jestli byl přístup člena zamýšlen k použití staré hodnoty symbolu před přiřazením nebo novou hodnotou z přiřazení v tomto příkazu. |
| CA2247: Argument předaný Konstruktor TaskCompletionSource by měl být TaskCreationOptions výčtu místo TaskContinuationOptions výčtu | TaskCompletionSource má konstruktory, které přebírají TaskCreationOptions, které řídí základní úkol, a konstruktory, které přebírají stav objektu, který je uložen v úkolu. Náhodné předání TaskContinuationOptions místo TaskCreationOptions způsobí, že volání považuje možnosti za stav. |
| CA2248: Zadejte správný argument enum pro Enum.HasFlag | Typ výčtu předaný jako argument volání HasFlag metody se liší od typu volání výčtu. |
| CA2249: Zvažte použití string.Contains místo String.IndexOf | Volání, kde string.IndexOf se výsledek používá ke kontrole přítomnosti nebo nepřítomnosti podřetětědce, lze nahradit string.Contains. |
CA2250: Použití ThrowIfCancellationRequested |
ThrowIfCancellationRequested automaticky zkontroluje, jestli byl token zrušen, a vyvolá OperationCanceledException výjimku, pokud má. |
CA2251: Používejte String.EqualsString.Compare |
Místo porovnání výsledku String.Equals s nulou je to jasnější a pravděpodobně rychlejšíString.Compare. |
| CA2252: Výslovný souhlas s funkcemi ve verzi Preview | Před použitím rozhraní API verze Preview se přihlaste k funkcím ve verzi Preview. |
| CA2253: Pojmenované zástupné symboly by neměly být číselné hodnoty | Pojmenované zástupné symboly v šabloně zprávy protokolování by se neměly skládat pouze z číselných znaků. |
| CA2254: Šablona by měla být statický výraz | Šablona zprávy protokolování by se neměla mezi voláními lišit. |
CA2255: Atribut ModuleInitializer by neměl být použit v knihovnách |
Inicializátory modulů jsou určeny k použití kódu aplikace k zajištění inicializace komponent aplikace před zahájením provádění kódu aplikace. |
| CA2256: Všichni členové deklarovaní v nadřazených rozhraních musí mít implementaci v dynamicInterfaceCastableImplementation-attributed rozhraní | Typy atributy, které DynamicInterfaceCastableImplementationAttribute fungují jako implementace rozhraní pro typ, který implementuje IDynamicInterfaceCastable typ. V důsledku toho musí poskytnout implementaci všech členů definovaných v zděděných rozhraních, protože typ, který implementuje IDynamicInterfaceCastable , je jinak nezadá. |
| CA2257: Členy definované v rozhraní s dynamicInterfaceCastableImplementationAttribute by měly být statické. | Vzhledem k tomu, že typ, který implementuje IDynamicInterfaceCastable , nemusí implementovat dynamické rozhraní v metadatech, volání člena rozhraní instance, který není explicitní implementace definovaná na tomto typu, pravděpodobně selžou za běhu. Označte nové členy static rozhraní, aby nedocházelo k chybám za běhu. |
| CA2258: Poskytnutí rozhraní DynamicInterfaceCastableImplementation v jazyce Visual Basic není podporováno | Poskytnutí funkčního DynamicInterfaceCastableImplementationAttributerozhraní atributu -attributed vyžaduje funkci Výchozí členy rozhraní, která není podporována v jazyce Visual Basic. |
CA2259: Ujistěte se, že ThreadStatic se používá jenom se statickými poli |
ThreadStaticAttribute
static ovlivňuje pouze pole (Sharedv jazyce Visual Basic). Při použití u polí instance nemá atribut žádný vliv na chování. |
| CA2260: Správně implementujte obecná matematická rozhraní | Obecná matematická rozhraní vyžadují, aby byl odvozený typ použit pro parametr samoopakujícího typu. |
CA2261: Nepoužívejte ConfigureAwaitOptions.SuppressThrowing s Task<TResult> |
Obecná ConfigureAwaitOptions.SuppressThrowing možnost nepodporuje Task<TResult>, protože to může vést k vrácení neplatného TResultkódu . |
CA2262: Správně nastavte MaxResponseHeadersLength |
Ujistěte se, MaxResponseHeadersLength že je hodnota zadaná správně. Tato hodnota se měří v kilobajtech. |
| CA2264: Nepředávejte nenulnutelnou hodnotu argumentu ArgumentNullException.ThrowIfNull | ArgumentNullException.ThrowIfNull vyvolá, když je předaný argument null. Některé konstrukty, jako jsou struktury bez hodnoty null, a výrazy nameof() a new nejsou nikdy null, takže ArgumentNullException.ThrowIfNull nikdy nevyvolá výjimku. |
CA2265: Nerovnávejte Span<T> se s nulldefault |
Porovnání rozsahu s rozsahem null nebo default nemusí dělat to, co jste chtěli.
default
null literál je implicitně převeden na Span<T>.Empty. |
| CA2263: Preferujte obecné přetížení, pokud je typ známý | Použití obecného přetížení je vhodnější pro předání argumentu System.Type , pokud je typ známý, protože propagují čistější a bezpečnější kód s vylepšenými kontrolami doby kompilace. |
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.