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á implementuje Dispose, nevolá GC.SuppressFinalize; nebo metoda, která není implementací Dispose, volá 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 tato výjimka je explicitně zadána 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 | To ztěžuje odhalení a opravu původní chyby. |
| CA2207: Inicializujte statická pole hodnotového typu přímo v deklaraci | 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 konstantní ani jen pro čtení, nejsou vláknově bezpečná. 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 System.IDisposable, deklaruje pole typu, který také implementuje IDisposable. Metoda Dispose tohoto pole není volána metodou Dispose 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 Dispose základní třídy | 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.IDisposable a má pole, která naznačují použití nespravovaných prostředků, neimplementuje finalizátor, jak je popsáno v Object.Finalize. |
| CA2217: Neoznačujte výčty atributem 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 metodu GetHashCode při přepisování metody Equals | Veřejný typ přepisuje System.Object.Equals, ale nepřepisuje System.Object.GetHashCode. |
| CA2219: Nevyvolávejte výjimky v klauzulích výjimky | Když je v klauzuli finally nebo fault vyvolána výjimka, nová výjimka skryje aktivní výjimku. Při vyvolání výjimky v klauzuli filtru modul runtime bezobslužně zachytí výjimku. To ztěžuje odhalení a opravu původní chyby. |
| CA2224: Přepište metodu 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: Implementujte 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řetěžte operátor rovnosti při přepsání metody 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 porovnává hodnotu s Single.Nan nebo Double.Nan. Použijte Single.IsNan(Single) nebo Double.IsNan(Double) otestujte hodnotu. |
| CA2243: Řetězcové literály atributů by se měly správně parsovat | Ř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ý konstruktoru TaskCompletionSource by měl být typu výčtu TaskCreationOptions namísto typu výčtu TaskContinuationOptions | 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 při volání metody HasFlag se liší od typu volajícího výčtu. |
| CA2249: Zvažte použití string.Contains místo String.IndexOf | Volání string.IndexOf, jejichž výsledek se používá ke kontrole přítomnosti či nepřítomnosti podřetězce, lze nahradit výrazem string.Contains. |
CA2250: Použijte ThrowIfCancellationRequested |
ThrowIfCancellationRequested automaticky ověří, zda byl token zrušen, a pokud ano, vyvolá výjimku OperationCanceledException. |
CA2251: Používejte String.Equals místo String.Compare |
Je to přehlednější a pravděpodobně i rychlejší použít String.Equals místo porovnávání výsledku String.Compare s nulou. |
| 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 rozhraní označeném atributem DynamicInterfaceCastableImplementation | Typy opatřené atributem DynamicInterfaceCastableImplementationAttribute slouží jako implementace rozhraní pro typ, který implementuje typ IDynamicInterfaceCastable. V důsledku toho musí implementovat všechny členy definované ve zděděných rozhraních, protože typ, který implementuje IDynamicInterfaceCastable, je jinak neposkytne. |
| 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 rozhraní s atributem DynamicInterfaceCastableImplementationAttribute vyžaduje funkci výchozích členů rozhraní, která není v jazyce Visual Basic podporována. |
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> |
Možnost ConfigureAwaitOptions.SuppressThrowing není podporována obecným Task<TResult>, protože by to mohlo vést k vrácení neplatného TResult. |
CA2262: Správně nastavte MaxResponseHeadersLength |
Ujistěte se, že je hodnota MaxResponseHeadersLength zadána správně. Tato hodnota se měří v kilobajtech. |
| CA2263: Preferujte obecné přetížení, pokud je typ známý | Použití obecného přetížení je vhodnější než předání argumentu System.Type, pokud je typ známý, protože vede k přehlednějšímu a typově bezpečnějšímu kódu s lepšími kontrolami při kompilaci. |
| CA2264: Nepředávejte nenulnutelnou hodnotu argumentu ArgumentNullException.ThrowIfNull | ArgumentNullException.ThrowIfNull vyvolá, když je předaný argument null. Je známo, že některé konstrukty, jako jsou struktury nepovolující hodnotu null a výrazy „nameof()“ a „new“, nikdy nejsou null, takže metoda ArgumentNullException.ThrowIfNull nikdy nevyvolá výjimku. |
CA2265: Neporovnávejte Span<T> s null ani s default |
Porovnání spanu s null nebo default nemusí fungovat tak, jak jste zamýšleli.
default a literál null jsou implicitně převedeny na Span<T>.Empty. |
CA2266: Vstupní bod programu založený na souborech by měl začínat na #! |
Pokud se program založený na souborech skládá z více souborů, měl by soubor vstupního bodu začínat čárou shebang (#!), aby se jasně odlišil od ostatních zahrnutých souborů. |
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.