Kód analýzy upozornění pro spravovaný kód podle CheckId
Následující tabulka obsahuje seznam upozornění analýzy kódu pro spravovaný kód podle identifikátoru upozornění CheckId.
Upozornění
CheckId |
Upozornění |
Description |
---|---|---|
CA1000 |
Při volání statického členu generického typu musí být pro tento typ zadán argument typu.Je-li zavolán generický člen instance, který nepodporuje odvozování, musí být pro tento člen zadán argument typu.V těchto dvou případech je syntaxe zadávání argumentu typu různá a snadno zaměnitelná. |
|
CA1001 |
CA1001: Typy, které vlastní jednorázových polí by mělo být na jedno použití |
Třída deklaruje a implementuje pole instance typu System.IDisposable, přičemž neimplementuje rozhraní IDisposable.Třída, která deklaruje pole IDisposable nepřímo, vlastní nespravovaný zdroj a měla by rozhraní IDisposable implementovat. |
CA1002 |
Třída System.Collections.Generic.List<(Of <(T>)>) je obecná kolekce navržená pro výkon, nikoli dědičnost.Proto třída List neobsahuje žádné virtuální členy.Místo ní by měly být vystaveny kolekce navržené pro dědičnost. |
|
CA1003 |
Typ obsahuje delegát vracející hodnotu void, jehož předpis obsahuje dva parametry (první je objekt a druhý typ přiřaditelný do typu EventArgs), přičemž je příslušné sestavení zacíleno na rozhraní Microsoft .NET Framework 2.0. |
|
CA1004 |
Argument typu generické metody je z argumentu typu předávaného metodě odvozen namísto explicitního určení argumentu typu.Má-li být odvozování povoleno, musí předpis parametrů generické metody zahrnovat parametr stejného typu jako parametr typu metody.V tomto případě nemusí být argument typu zadán.Používáte-li odvození pro všechny parametry typu, je syntaxe volání generických a negenerických metod instancí identická, což zjednodušuje použití generických metod. |
|
CA1005 |
Čím více parametrů typu generický typ obsahuje, tím obtížnější je vědět a zamapatovat si, co každý z parametrů typu představuje.To je obvykle zřejmé v případě jednoho parametru typu, například u třídy List<T>, a v některých případech se dvěma parametry typu, například u třídy Dictionary<TKey, TValue>.Pokud však existují více než dva parametry typu, stává se pro většinu uživatelů použití příliš obtížným. |
|
CA1006 |
Vnořený typ argumentu je typ argumentu, který je také generickým typem.Chce-li uživatel zavolat člen, jehož předpis obsahuje vnořený argument typu, musí nejprve vytvořit instanci jednoho generického typu a předat tento typ konstruktoru druhého generického typu.Potřebná procedura a syntaxe je složitá a je vhodné se jí vyhnout. |
|
CA1007 |
Externě viditelná metoda obsahuje referenční parametr typu System.Object.Použitím generických metod lze metodě předávat všechny typy (s určitými omezeními) bez předchozího přetypování typu na referenční typ parametru. |
|
CA1008 |
Výchozí hodnota neinicializovaného výčtu je stejně jako u jiných typů hodnot nula.Atributovaný výčet bez příznaků by měl definovat člen za použití hodnoty nula tak, aby výchozí hodnota byla platnou hodnotou výčtu.Definuje-li výčet, který má aplikován atribut FlagsAttribute, člen s hodnotou nula, měl by jeho název být "None", aby tak označoval, že ve výčtu nebyly nastaveny žádné hodnoty. |
|
CA1009 |
Metody zpracování událostí přebírají dva parametry.První je typu System.Object a je pojmenován "sender".Je jím objekt, který vyvolal událost.Druhý parametr je typu System.EventArgs a je pojmenován "e".Představuje data přidružená k události.Metody zpracování událostí by neměly vracet hodnotu; v programovacím jazyce C# je toto označeno návratovým typem void. |
|
CA1010 |
Použitelnost kolekce lze rozšířit implementací jednoho z rozhraní generické kolekce.Pak lze tuto kolekci použít k zaplnění typů generických kolekcí. |
|
CA1011 |
Je-li v deklaraci metody zadán jako parametr základní typ, lze jako příslušný argument metodě předat kterýkoliv typ odvozený z tohoto základního typu.Pokud není dodatečná funkčnost poskytovaná odvozeným parametrem vyžadována, umožňuje použití základního typu širší využití metody. |
|
CA1012 |
Konstruktory abstraktních typů mohou být volány pouze odvozenými typy.Jelikož veřejné konstruktory vytváření instance typu, přičemž nelze vytvořit instance abstraktního typu, je abstraktní typ obsahující veřejný konstruktor nesprávně navržen. |
|
CA1013 |
CA1013: Operátor rovná přetížení na přetížení sečíst a odečíst |
Veřejný nebo chráněný typ implementuje operátory sčítání a odčítání, aniž by implementoval operátor rovnosti. |
CA1014 |
Specifikace Common Language Specification (CLS) definuje omezení názvů, datové typy a pravidla, která musí sestavení dodržovat, pokud budou použita napříč programovacími jazyky.Dobrý návrh přikazuje, že všechna sestavení explicitně uvedou dodržování standardu CLS použitím atributu CLSCompliantAttribute.Není-li tento atribut v sestavení přítomen, nedodržuje sestavení specifikaci. |
|
CA1016 |
Rozhraní .NET Framework používá číslo verze k jednoznačné identifikaci sestavení a pro svázání s typy v sestaveních se silným názvem.Číslo verze je používáno spolu se zásadou verze a vydavatele.Ve výchozím nastavení mohou být aplikace spuštěny pouze ve verzi sestavení, v níž byly sestaveny. |
|
CA1017 |
Atribut ComVisibleAttribute určuje způsob přístupu klientů COM ke spravovanému kódu.Dobrý návrh přikazuje, že sestavení explicitně uvedou viditelnost modelu COM.Viditelnost modelu COM může být nastavena pro celé sestavení a poté přepsána pro jednotlivé typy a členy typů.Není-li tento atribut přítomen, je obsah sestavení viditelný klientům COM. |
|
CA1018 |
Při definování vlastního atributu jej označte použitím atributu AttributeUsageAttribute, čímž je určeno, kde ve zdrojovém kódu může být vlastní atribut použit.Význam a zamýšlené použití atributu určuje jeho platné umístění v kódu. |
|
CA1019 |
CA1019: Definování přístupové objekty pro argumenty atributu |
Atributy mohou definovat povinné argumenty, které musejí být specifikovány při použití atributu na cíl.Říká se jim také poziční argumenty, jelikož jsou konstruktorům atributů předány jako poziční parametry.Pro každý povinný argument by měl atribut navíc poskytovat odpovídající vlastnost jen pro čtení, aby mohla být hodnota argumentu během spuštění získána.Atributy mohou také definovat volitelné argumenty, které jsou rovněž známy jako pojmenované argumenty.Tyto argumenty jsou podle názvu poskytovány konstruktorům atributů a měly by mít odpovídající vlastnost pro čtení i zápis. |
CA1020 |
Ujistěte se, že všechny obory názvů mají logické uspořádání a že je vložení typů do řídce zaplněných oborů názvů odůvodněné. |
|
CA1021 |
Předávání typů odkazem (za použití klíčových slov out nebo ref) vyžaduje zkušenosti s ukazateli, pochopení, jak se liší typy hodnot a typy odkazů a schopnost práce s metodami vracejícími více návratových typů.Také rozdíl mezi parametry out a ref není běžně chápán. |
|
CA1023 |
Indexery (tj. indexované vlastnosti) by měly používat jediný index.Vícerozměrné indexery mohou výrazně snížit použitelnost knihovny. |
|
CA1024 |
Veřejná nebo chráněná metoda má název začínající na "Get", nepřijímá žádné parametry a vrací hodnotu, která není polem.Metoda může být dobrým kandidátem stát se vlastností. |
|
CA1025 |
Není-li znám přesný počet argumentů a jsou-li proměnné argumenty stejného typu (nebo je lze předat jako stejný typ), použijte namísto opakovaných argumentů pole parametrů. |
|
CA1026 |
Ve specifikaci CLS jsou povoleny metody používající výchozí parametry, avšak specifikace umožňuje kompilátorům ignorovat hodnoty přiřazené těmto parametrům.Chcete-li zachovat shodné chování napříč programovacími jazyky, měly by být metody používající výchozí parametry nahrazeny přetíženími metody, které výchozí parametry poskytují. |
|
CA1027 |
Výčet je typ hodnoty, který definuje množinu souvisejících pojmenovaných konstant.Mohou-li být pojmenované konstanty smysluplně kombinovány, použijte ve výčtu atribut FlagsAttribute. |
|
CA1028 |
Výčet je typ hodnoty, který definuje množinu souvisejících pojmenovaných konstant.Ve výchozím nastavení je pro uložení konstantní hodnoty použit datový typ System.Int32.Přestože lze tento typ změnit, není to ve většině případů zapotřebí ani doporučováno. |
|
CA1030 |
Toto pravidlo zjišťuje metody, které mají názvy obvykle používané pro události.Je-li metoda volána jako odpověď na jednoznačně definovanou změnu stavu, měla by být metoda volána obslužnou rutinou události.Objekty volající tuto metodu by měly místo přímého volání metody vyvolat událost. |
|
CA1031 |
Obecné výjimky by neměly být zachycovány.Zachyťte více specifickou výjimku nebo jako poslední příkaz bloku catch vyvolejte obecnou výjimku znovu. |
|
CA1032 |
Není-li dodána úplná sada konstruktorů, může být obtížné správně zpracovávat výjimky. |
|
CA1033 |
CA1033: Metody rozhraní by měla být volána skriptem podřízené typy |
Nezapečetěný externě viditelný typ poskytuje explicitní implementaci metod veřejného rozhraní a neposkytuje alternativní externě viditelné metody stejného názvu. |
CA1034 |
Vnořený typ je typ deklarovaný v rámci jiného typu.Vnořené typy jsou užitečné pro zapouzdření soukromých podrobností implementace v daném typu.Jsou-li vnořené typy používány za tímto účelem, neměly by být externě viditelné. |
|
CA1035 |
Toto pravidlo vyžaduje, aby implementace rozhraní ICollection poskytovaly členy se silnými typy, aby uživatelé nemuseli při využívání funkčnosti poskytované rozhraním přetypovávat argumenty na typ Object.Toto pravidlo předpokládá, že typ implementuje rozhraní ICollection proto, aby mohl spravovat kolekci instancí typu silnějšího než Object. |
|
CA1036 |
Veřejný nebo chráněný typ implementuje rozhraní System.IComparable.Nepřepisuje metodu Object.Equals, ani nepřetěžuje operátory rovnosti, nerovnosti, menší než a větší než specifické pro daný jazyk. |
|
CA1038 |
Toto pravidlo vyžaduje, aby implementace rozhraní IEnumerator také poskytovaly verze vlastnosti Current se silnými typy, aby uživatelé nemuseli při použití funkčnosti poskytované tímto rozhraním přetypovávat návratovou hodnotu na silný typ. |
|
CA1039 |
Toto pravidlo vyžaduje, aby implementace rozhraní IList poskytovaly členy se silnými typy, aby uživatelé nemuseli při využívání funkčnosti poskytované rozhraním přetypovávat argumenty na typ System.Object. |
|
CA1040 |
Rozhraní definují členy ujednávající jejich chování nebo užití.Funkčnost popsaná rozhraním může být osvojena libovolným typem bez ohledu na to, kde se typ vyskytuje v hierarchii dědičnosti.Typ implementuje rozhraní tím, že poskytuje implementace jeho členů.Prázdné rozhraní nedefinuje žádné členy, tudíž ani nedefinuje žádná implementovatelná ujednání. |
|
CA1041 |
Je označen typ nebo člen atributem System.ObsoleteAttribute, aniž by měl zadánu vlastnost ObsoleteAttribute.Message.Při kompilaci typu nebo členu označeného atributem ObsoleteAttribute, je zobrazena vlastnost Message tohoto atributu.To uživateli poskytuje informace o zastaralém typu nebo členu. |
|
CA1043 |
CA1043: Pomocí integrálního nebo řetězec argumentu pro indexování |
Indexery (tj. indexované vlastnosti) by měly jako index používat celočíselné typy nebo typy řetězců.Tyto typy se obvykle používají pro indexování datových struktur a zvyšují použitelnost knihovny.Použití typu Object by mělo být omezeno na ty případy, kdy během návrhu není možné určit konkrétní celočíselný nebo řetězcový typ. |
CA1044 |
Ačkoli je přijatelné a často nezbytné použít vlastnosti pouze pro čtení, směrnice návrhu zakazují použití vlastností pouze pro zápis.Důvodem je skutečnost, že umožnit uživateli nastavit hodnotu a poté uživateli zabránit v zobrazení této hodnoty není bezpečné.Taktéž bez přístupu pro čtení není možné zobrazit stav sdílených objektů, což omezuje jejich užitečnost. |
|
CA1045 |
Předávání typů odkazem (za použití klíčových slov out nebo ref) vyžaduje zkušenosti s ukazateli, pochopení, jak se liší typy hodnot a typy odkazů a schopnost práce s metodami vracejícími více návratových typů.Návrháři knihoven, kteří navrhují knihovny pro širokou veřejnost, by neměli očekávat schopnost uživatelů pracovat s parametry out či ref. |
|
CA1046 |
U referenčních typů je výchozí implementace operátoru rovnosti téměř vždy správná.Ve výchozím nastavení jsou dva odkazy rovny pouze pokud ukazují na stejný objekt. |
|
CA1047 |
Typy deklarují chráněné členy, aby k nim odvozené typy mohly přistupovat nebo je přepisovat.Dle definice nelze dědit zapečetěné typy, což znamená, že nelze volat chráněné metody zapečetěných typů. |
|
CA1048 |
Typy deklarují metody jako virtuální, aby odvozující typy mohly přepsat implementaci virtuálních metod.Dle definice nelze zdědit zapečetěný typ.Díky tomu postrádají virtuální metody v zapečetěných typech význam. |
|
CA1049 |
CA1049: Typy vlastních nativní zdrojů by měly být na jedno použití |
Typy, které přidělují nespravované prostředky, by měly implementovat rozhraní IDisposable a umožnit tak volajícím uvolnit tyto prostředky na požádání a zkrátit životní cyklus objektů, které je využívají. |
CA1050 |
Typy jsou deklarovány v oborech názvů, aby bylo zabráněno kolizím názvů a zároveň jako způsob organizace souvisejících typů v hierarchii objektů. |
|
CA1051 |
Hlavní použití pole by mělo být jako podrobnost implementace.Pole by měla být soukromá nebo vnitřní a měla by být vystavena za použití vlastností. |
|
CA1052 |
Veřejný nebo chráněný typ obsahuje pouze statické členy a není deklarován za použití modifikátoru sealed (jazyk C#) nebo modifikátoru NonInheritable (jazyk Visual Basic).Typu, u nějž není zamýšleno dědění, by mělo být zabráněno v použití jako základního typu označením zapečetěným modifikátorem. |
|
CA1053 |
Veřejný nebo vnořený veřejný typ deklaruje pouze statické členy a má veřejný nebo chráněný výchozí konstruktor.Konstruktor je nezbytný, protože volání statických členů nevyžaduje instanci typu.Z důvodu bezpečnosti a zabezpečení by řetězcová přetížení měla volat přetížení identifikátoru URI použitím argumentu řetězce. |
|
CA1054 |
Pakliže metoda přijímá řetězcovou reprezentaci identifikátoru URI, mělo by být poskytnuto odpovídající přetížení přijímající instanci třídy URI, která tyto služby poskytuje bezpečným a zabezpečeným způsobem. |
|
CA1055 |
Toto pravidlo předpokládá, že metoda vrací identifikátor URI.Řetězcová reprezentace identifikátoru URI je náchylná k chybám analýzy a kódování a může vést k ohrožení bezpečnosti.Třída System.Uri poskytuje tyto služby bezpečným a zabezpečeným způsobem. |
|
CA1056 |
Toto pravidlo předpokládá, že vlastnost představuje identifikátor URI.Řetězcová reprezentace identifikátoru URI je náchylná k chybám analýzy a kódování a může vést k ohrožení bezpečnosti.Třída System.Uri poskytuje tyto služby bezpečným a zabezpečeným způsobem. |
|
CA1057 |
CA1057: Řetězec identifikátoru URI přetížení volat přetížení System.Uri |
Typ deklaruje přetížení metod, které se liší pouze nahrazením řetězcového parametru parametrem typu System.Uri.Přetížení přijímající řetězcový parametr nevolá přetížení, které přijímá parametr identifikátoru URI. |
CA1058 |
Externě viditelný typ rozšiřuje určité základní typy.Použijte jednu z alternativ. |
|
CA1059 |
Konkrétní typ je typ, který je zcela implementován a lze tudíž vytvořit jeho instanci.Chcete-li umožnit široké využití členu, nahraďte konkrétní typ použitím navrhovaného rozhraní. |
|
CA1060 |
Metody vyvolání platformy, například ty, které jsou označeny pomocí atributu System.Runtime.InteropServices.DllImportAttribute nebo metody, které jsou v jazyce Visual Basic definovány pomocí klíčového slova Declare, umožňují přístup k nespravovanému kódu.Tyto metody by měly patřit třídě NativeMethods, SafeNativeMethods nebo UnsafeNativeMethods. |
|
CA1061 |
Metoda základního typu je skryta identicky pojmenovanou metodou v odvozeném typu, kde je předpis parametrů odvozené metody odlišný od odpovídajících typů v předpisu parametrů základní metody pouze ve slaběji odvozených typech. |
|
CA1062 |
Všechny argumenty odkazu předané externě viditelným metodám by měly být porovnány s hodnotou NULL. |
|
CA1063 |
Všechny typy IDisposable by měly správně implementovat vzor Dispose. |
|
CA1064 |
Interní výjimka je viditelná pouze uvnitř svého vlastního vnitřního rozsahu.Jakmile výjimka přesáhne hranice vnitřního rozsahu, lze pro zachycení výjimky použít pouze základní výjimku.Pokud je vnitřní výjimka zděděna z typů T:System.Exception, T:System.SystemException nebo T:System.ApplicationException, externí kód nebude mít dostatečné informace o tom, co s výjimkou udělat. |
|
CA1065 |
Metoda, u které není předpokládáno vyvolání výjimky, vyvolala výjimku. |
|
CA1300 |
Chcete-li správně zobrazit okno pro kultury, které používají směr čtení zprava doleva, musí být členy RightAlign a RtlReading výčtu MessageBoxOptions předány metodě Show. |
|
CA1301 |
Přístupová klávesa, neboli akcelerátor, umožňuje klávesnici přístup k ovládacímu prvku pomocí klávesy ALT.Když má vícero ovládacích prvků duplicitní přístupové klávesy, není chování přístupové klávesy dobře definováno. |
|
CA1302 |
CA1302: To není hardcode řetězce pro specifické národní prostředí |
Výčet System.Environment.SpecialFolder obsahuje členy, které odkazují na speciální systémové složky.Umístění těchto složek mohou mít různé hodnoty v různých operačních systémech, uživatel může změnit některé z míst a místa jsou lokalizována.Metoda Environment.GetFolderPath vrátí lokace, které jsou spojeny s výčtem Environment.SpecialFolder, lokalizované a vhodné pro aktuálně spuštěný počítač. |
CA1303 |
Externě viditelná metoda předává řetězec literálu jako parametr do konstruktoru nebo metody v knihovně tříd rozhraní .NET Framework a tento řetězec by měl být lokalizovatelný. |
|
CA1304 |
Metoda nebo konstruktor volá člen, který má přetížení přijímající parametr System.Globalization.CultureInfo a tato metoda nebo konstruktor nevolá přetížení přebírající parametr CultureInfo.Pokud objekt CultureInfo nebo System.IFormatProvider není zadán, nemusí mít výchozí hodnota zadaná pomocí přetíženého členu ve všech národních prostředích požadovaný efekt. |
|
CA1305 |
Metoda nebo konstruktor volá jeden nebo více členů, které mají přetížení přijímající parametr System.IFormatProvider a tato metoda nebo konstruktor nevolá přetížení, která přebírá parametr IFormatProvider.Pokud objekt System.Globalization.CultureInfo nebo System.IFormatProvider není zadán, nemusí mít výchozí hodnota zadaná pomocí přetíženého členu ve všech národních prostředích požadovaný efekt. |
|
CA1306 |
Národní prostředí určuje prvky prezentace specifické kultury pro data, například formátování použité pro číselné hodnoty, symbolů měny a pořadí řazení.Při vytváření objektu DataSet nebo DataTable byste měli explicitně nastavit národní prostředí. |
|
CA1307 |
Operace porovnání řetězců používá přetížení metody, která nenastavuje parametr StringComparison. |
|
CA1308 |
Řetězce by měly být normalizované na velká písmena.Malá skupina znaků nedokáže po převodu na malá písmena provést zpáteční cestu. |
|
CA1309 |
Nelingvistická operace porovnání řetězců nemá nastaven parametr StringComparison na hodnotu Ordinal ani na hodnotu OrdinalIgnoreCase.Explicitním nastavením parametru na hodnotou StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase dojde ke zrychlení kódu, zvýšení přesnosti a spolehlivosti. |
|
CA1400 |
Veřejná nebo chráněná metoda je označena pomocí atributu System.Runtime.InteropServices.DllImportAttribute.Nespravovanou knihovnu nelze nalézt, nebo nelze metodu porovnat s funkcí v knihovně. |
|
CA1401 |
Veřejná nebo chráněná metoda veřejného typu má nastaven atribut System.Runtime.InteropServices.DllImportAttribute (také implementováno pomocí klíčového slova Declare v jazyce Visual Basic).Tyto metody by neměly být vystaveny. |
|
CA1402 |
Když jsou přetížené metody vystaveny klientům modulu COM, zachová svůj název pouze první přetížení metody.Následné přetížení jsou jednoznačně přejmenována přidáním přípony podtržítko (_) a celého čísla odpovídajícího pořadí deklarace tohoto přetížení. |
|
CA1403 |
CA1403: Typy automatického rozložení nesmí být viditelné COM |
Hodnotový typ viditelný modulem COM je označen pomocí atributu System.Runtime.InteropServices.StructLayoutAttribute nastaveného na hodnotu LayoutKind.Auto.Rozložení těchto typů se může změnit mezi verzemi rozhraní .NET Framework, což naruší klienty modulu COM, kteří očekávají specifické rozložení. |
CA1404 |
Je provedeno volání metody Marshal.GetLastWin32Error nebo ekvivalentní funkce GetLastError rozhraní Win32 a bezprostředně předchozí volání není metoda vyvolání operačního systému. |
|
CA1405 |
CA1405: Základní typy viditelný typ COM musí být viditelné COM |
Typ viditelný modulem COM je odvozen od typu, který není viditelný modulem COM. |
CA1406 |
Klienti modulu COM jazyka Visual Basic 6 COM nemohou přistupovat k 64bitovým celým číslům. |
|
CA1407 |
CA1407: Vyhnout se statickým členům v viditelné typy modelu COM |
Modul COM nepodporuje statické metody. |
CA1408 |
Typy, které používají duální rozhraní umožňují klientům se navázat na určité rozložení rozhraní.Změny v budoucí verzi rozložení typu nebo jakéhokoli základního typu přeruší klienty modulu COM, kteří jsou navázáni na toto rozhraní.Pokud ve výchozím nastavení není zadán atribut ClassInterfaceAttribute, použije se pouze rozhraní určené pro odesílání. |
|
CA1409 |
Odkazový typ, který je označen jako viditelný modulům COM obsahuje veřejný parametrizovaný konstruktor, ale neobsahuje veřejný výchozí konstruktor (bez parametrů).Typ bez veřejného výchozího konstruktoru není možné vytvořit klienty typu COM. |
|
CA1410 |
Typ deklaruje metodu, která je označena atributem System.Runtime.InteropServices.ComRegisterFunctionAttribute, ale nedeklaruje metodu označenou pomocí atributu System.Runtime.InteropServices.ComUnregisterFunctionAttribute nebo naopak. |
|
CA1411 |
Metoda označené pomocí atributu System.Runtime.InteropServices.ComRegisterFunctionAttribute nebo atributu System.Runtime.InteropServices.ComUnregisterFunctionAttribute je externě viditelná. |
|
CA1412 |
Typ je označen atributem System.Runtime.InteropServices.ComSourceInterfacesAttribute a alespoň jedno ze zadaných rozhraní není označeno pomocí atributu System.Runtime.InteropServices.InterfaceTypeAttribute nastaveného na hodnotu ComInterfaceType.InterfaceIsIDispatch. |
|
CA1413 |
CA1413: Nepoužívejte neveřejné pole zobrazena hodnota typů COM |
Neveřejné pole instance hodnotových typů viditelných modulům COM jsou viditelné klientům typu COM.Zkontrolujte obsah polí, zda neobsahují informace, které by neměly být vystaveny nebo které budou mít nežádoucí účinky na návrh nebo zabezpečení. |
CA1414 |
Datový typ Boolean má v nespravovaném kódu různé reprezentace. |
|
CA1415 |
Toto pravidlo hledá deklarace metod vyvolání operačního systému cílené na funkce rozhraní Win32, které mají ukazatel na parametr struktury OVERLAPPED a odpovídající spravovaný parametr není ukazatel na strukturu System.Threading.NativeOverlapped. |
|
CA1500 |
Metoda instance deklaruje parametr nebo lokální proměnnou, jejichž název odpovídá poli instance deklarovaného typu, což vede k chybám. |
|
CA1501 |
Typ je více než čtyři úrovně hluboko v hierarchii dědičnosti.Hluboce vnořené hierarchie typů může být obtížné sledovat, pochopit a udržovat. |
|
CA1502 |
Toto pravidlo měří počet lineárně nezávislých cest skrze metodu, což je určeno počtem a složitostí podmínkových větví. |
|
CA1504 |
Název pole instance začíná předponou "s_" a název statického pole (Shared v jazyce Visual Basic) začíná předponou "m_". |
|
CA1505 |
Typ nebo metoda má nízkou hodnotu indexu údržby.Nízký index údržby označuje, že typ nebo metodu je pravděpodobně obtížné udržovat a je vhodné ji znovu navrhnout. |
|
CA1506 |
Toto pravidlo měří párování tříd podle počtu jedinečných odkazů na typ, které typ nebo metoda obsahuje. |
|
CA1600 |
Nenastavujte prioritu procesu na Neaktivní.Procesy, které mají nastaveny System.Diagnostics.ProcessPriorityClass.Idle budou zaměstnávat procesor, když by jinak byly nečinné a tím budou blokovat úsporný režim. |
|
CA1601 |
Vyšší frekvence periodické aktivity budou udržovat procesor zaneprázdněný a ovlivňovat časovače úspory energie nečinnosti, které vypnou zobrazení a pevné disky. |
|
CA1700 |
Toto pravidlo předpokládá, že člen výčtu, který má název obsahující "reserved" není aktuálně používán, ale je zástupným symbolem k přejmenování nebo odstranění v budoucí verzi.Přejmenování nebo odstranění členu je narušující změna. |
|
CA1701 |
CA1701: Uváděna velkými složená slova řetězec zdroje by měly být písmeny správně |
Každé slovo řetězce zdroje je rozděleno na tokeny na základě velikosti písmen.Každá kombinace dvou sousedících tokenů je zkontrolována knihovnou kontroly pravopisu společnosti Microsoft.Je-li kombinace rozpoznána, způsobí slovo porušení pravidla. |
CA1702 |
CA1702: Uváděna velkými složená slova by měla být písmeny správně |
Název identifikátoru obsahuje více slov a alespoň jedno ze slov se zdá být složené slovo, které není správně formátováno. |
CA1703 |
Zdrojový řetězec obsahuje jedno nebo více slov, které Knihovna kontroly pravopisu společnosti Microsoft nerozpoznala. |
|
CA1704 |
Název externě viditelného identifikátoru obsahuje jedno nebo více slov, které nejsou rozpoznány knihovnou pravopisu společnosti Microsoft. |
|
CA1707 |
Názvy identifikátorů podle konvence neobsahují znak podtržítko (_).Toto pravidlo kontroluje obory názvů, typy, členy a parametry. |
|
CA1708 |
Identifikátory pro obory názvů, typy, členy a parametry nelze odlišit pouze ve velikosti písmen, protože jazyky cílené na společný jazykový modul runtime nemusí rozlišovat malá a velká písmena. |
|
CA1709 |
CA1709: Uváděna velkými identifikátory by měla být písmeny správně |
Dle úmluvy používají názvy parametrů zápis typu camelCase a názvy oborů názvů, typů a členů používají zápis typu PascalCase. |
CA1710 |
Podle konvence by měly názvy typů, které rozšiřují některé základní typy nebo určitá rozhraní, nebo typů odvozených z těchto typů, mít příponu přidruženou těmto typům nebo rozhraním. |
|
CA1711 |
Pouze názvy typů, které rozšiřují určité základní typy nebo které implementují určitá rozhraní nebo typy, které jsou odvozeny z těchto typů by podle úmluvy měly končit určitými vyhrazenými příponami.Další názvy typu by neměly používat tyto vyhrazené přípony. |
|
CA1712 |
Názvy členů výčtu nemají předponu názvu typu, protože se očekává , že vývojové nástroje poskytují informace o typu. |
|
CA1713 |
Název události začíná řetězcem "Before" nebo "After".Pro pojmenování souvisejících událostí vyvolaných v určitém pořadí je vhodné používat přítomný a minulý čas, který naznačí relativní pozici v pořadí akcí. |
|
CA1714 |
Veřejný výčet má atribut System.FlagsAttribute a jeho název nekončí písmenem "s".Typy označené pomocí atributu FlagsAttribute mají názvy, které jsou v množném čísle, protože tento atribut označuje, že lze zadat více než jednu hodnotu. |
|
CA1715 |
Název externě viditelného rozhraní nezačíná velkým písmenem "I".Název obecného typu parametru externě viditelného typu nebo metody nezačíná velkým písmenem "T". |
|
CA1716 |
Název oboru názvů nebo název typu odpovídá rezervovanému klíčovému slovu programovacího jazyka.Identifikátory pro obory názvů a typů by neměly odpovídat klíčovým slovům, která jsou definována jazyky cílenými na společný jazykový modul runtime. |
|
CA1717 |
CA1717: Pouze výčty FlagsAttribute by měly mít názvy v množném čísle |
Konvence pojmenování přikazují, že množný název výčtu označuje, že lze současně zadat více než jednu hodnotu výčtu. |
CA1719 |
Název parametru by měl sdělit význam parametru a název člena by měl sdělit význam člena.Byl by to vzácný návrh, pokud by byly stejné.Stejné pojmenování parametru jako jeho názvu členu je neintuitivní a činí knihovnu obtížně použitelnou. |
|
CA1720 |
Název parametru externě viditelného člena obsahuje název datového typu nebo název externě viditelného člena obsahuje název datového typu daného jazyka. |
|
CA1721 |
Název soukromého nebo chráněného členu začíná na "Get" a dále se shoduje s názvem veřejné nebo chráněné vlastnosti. "Metody Get a vlastnosti by měly mít názvy, které zřetelně rozliší jejich funkce. |
|
CA1722 |
Dle úmluvy mají pouze některé programovací prvky názvy začínající určitou předponou. |
|
CA1724 |
Názvy typů by se neměly shodovat s názvy v oborech názvů definovaných v knihovně tříd rozhraní .NET Framework.Porušení tohoto pravidla může snížit použitelnost knihovny. |
|
CA1725 |
CA1725: Názvy parametrů by měly odpovídat základní prohlášení |
Konzistentní pojmenování parametrů v hierarchii přetěžování zvyšuje použitelnost přetížení metody.Název parametru, který se v odvozené metodě liší od názvu v základní deklaraci, může způsobit zmatení, zda se jedná o přetíženou metodu základní metody nebo o nové přetížení metody. |
CA1726 |
Název externě viditelného identifikátoru zahrnuje výraz, pro který existuje alternativní, upřednostňovaný výraz.Případně název obsahuje také výraz Flag nebo Flags. |
|
CA1800 |
Duplicitní přetypování snižuje výkon, zvláště když jsou přetypování vykonány v příkazech kompaktní iterace. |
|
CA1801 |
Podpis metody obsahuje parametr, který není použit v těle metody. |
|
CA1802 |
Pole je deklarováno jako statické a jen pro čtení (Shared a ReadOnly v jazyce Visual Basic) a je inicializováno pomocí hodnoty, kterou lze vypočítat v době kompilace.Protože hodnotu přiřazenou cílovému poli lze vypočítat v době kompilace, změňte deklaraci tohoto pole pomocí klíčového slova const (Const v jazyce Visual Basic) tak, aby hodnota byla vypočítána v době kompilace místo za běhu. |
|
CA1804 |
Nepoužité místní proměnné a zbytečné přiřazení zvětšují velikost sestavení a snižují výkon. |
|
CA1806 |
Nový objekt je vytvořen, ale není nikdy použit nebo je zavolána metoda, která vytvoří a vrátí nový řetězec a ten se nikdy používá nebo metoda modulu COM nebo P/Invoke vrací hodnotu HRESULT nebo kód chyby, který není nikdy použit. |
|
CA1809 |
Běžnou optimalizaci výkonu je k uložení hodnoty v registru procesoru místo v paměti, což je označováno jako uložení hodnoty do registru.Chcete-li zvýšit pravděpodobnost, že jsou všechny místní proměnné uložené v registrech procesoru, omezte počet místních proměnných na 64. |
|
CA1810 |
Pokud typ deklaruje explicitní statický konstruktor, kompilátor just-in-time (JIT) ke každé statické metodě a konstruktoru instance tohoto typu přidá kontrolu, zda již byl dříve zavolán statický konstruktor typu.Kontroly statického konstruktoru mohou snížit výkon. |
|
CA1811 |
Soukromý nebo interní člen (na úrovni sestavení) nemá v sestavení žádné volající, není vyvolán společným jazykovým modulem runtime ani není vyvolán delegátem. |
|
CA1812 |
Instance typu na úrovni sestavení není vytvořena kódem v sestavení. |
|
CA1813 |
Knihovna tříd rozhraní .NET Framework poskytuje metody pro načítání vlastních atributů.Ve výchozím nastavení tyto metody prohledávají hierarchii dědičnosti atributů.Označení atributu klíčovým slovem sealed eliminuje prohledávání hierarchie dědičnosti a může zlepšit výkon. |
|
CA1814 |
Vícenásobné pole je pole, jehož prvky jsou pole.Pole, tvořené prvky mohou být různě velké, což vede k menšímu nevyužitému místu u některých sad dat. |
|
CA1815 |
Pro hodnotové typy, zděděná implementace metody Equals používá knihovnu reflexe a porovnává obsah všech polí.Reflexe je výpočetně náročná a porovnání rovnosti všech polí může být zbytečné.Očekáváte-li, že uživatelé budou porovnávat nebo třídit instance či je používat jako klíče zatřiďovací tabulky, měl by typ hodnoty implementovat metodu Equals. |
|
CA1816 |
Metoda, která je implementací metody Dispose nevolá metodu GC.SuppressFinalize nebo metodu, která není implementací metody Dispose volá metodu GC.SuppressFinalize nebo metoda volá metodu GC.SuppressFinalize a předává něco jiného než klíčové slovo this (Me v jazyce Visual Basic). |
|
CA1819 |
Pole vrácená vlastnostmi nejsou chráněna proti zápisu, i když je vlastnost pouze pro čtení.Abyste pole ochránili před změnou, musí vlastnost vrátit kopii tohoto pole.Uživatelé obvykle nebudou rozumět nepříznivým výkonnostním důsledkům volání těchto vlastností. |
|
CA1820 |
Porovnání řetězců pomocí vlastnosti String.Length nebo metody String.IsNullOrEmpty je výrazně rychlejší než při použití metody Equals. |
|
CA1821 |
Kdykoli je to možné, vyhněte se použití finalizačních metod kvůli dodatečné režii spojené se sledováním životního cyklu objektu.Prázdná finalizační metoda přidává režii a nemá žádný užitek. |
|
CA1822 |
Členy, které nemají přístup k datům instance nebo metodám instance volání mohou být označeny jako statické (Shared v jazyce Visual Basic).Po označení metod jako statických bude kompilátor generovat těmto členům nevirtuální místa volání.Tím lze dosáhnout měřitelného zisku výkon pro výkonově citlivý kód. |
|
CA1823 |
Byly zjištěny soukromá pole, která nejsou zjevně přístupná v rámci sestavení. |
|
CA1824 |
Atribut NeutralResourcesLanguage informuje správce zdrojů o jazyce, který byl použit k zobrazení zdrojů neutrální kultury sestavení.To zlepšuje výkon vyhledávání při prvním získání zdrojů a může snížit vaši pracovní sadu. |
|
CA1900 |
Toto pravidlo kontroluje, zda struktury, které jsou deklarovány pomocí explicitního rozložení budou zarovnány správně při zařazení na nespravovaný kód v 64bitových operačních systémech. |
|
CA1901 |
Toto pravidlo vyhodnotí velikost každého parametru a vrácené hodnoty vyvolání P/Invoke a ověří, zda je velikost parametru správná při zařazení na nespravovaný kód na 32bitových a 64bitových operačních systémem. |
|
CA1903 |
Člen nebo typ používá člena nebo typ, který byl uveden v aktualizaci service pack, která nebyla zahrnuta společně s cílovým rozhraním framework projektu. |
|
CA2000 |
Protože může dojít k mimořádné události, která zabrání spuštění finalizátoru objektu, objekt by měl být explicitně uvolněn před tím, než se všechny odkazy na něj dostanou mimo rozsah. |
|
CA2001 |
Člen volá potencionálně nebezpečnou nebo problematickou metodu. |
|
CA2002 |
Objekt má slabou identitu, pokud k němu lze přímo přistupovat přes hranice aplikační domény.Podproces, který se pokouší získat zámek na objekt, který má slabou identitu může být blokován jiným podprocesem v jiné aplikační doméně, který má zámek na stejný objekt. |
|
CA2003 |
Se spravovaným podprocesem se zachází jako s podprocesem rozhraní Win32. |
|
CA2004 |
Pokud převádíte na použití SafeHandle, odeberte veškerá volání GC.KeepAlive(object).V tomto případě by třídy neměly volat metodu GC.KeepAlive.To předpokládá, že nemají finalizátor, ale spoléhá na SafeHandle, že dokončí popisovače operačního systému za ně. |
|
CA2006 |
Použití IntPtr ve spravovaném kódu může znamenat možný problém zabezpečení a spolehlivosti.Všechna použití IntPtr musí být přezkoumána, k určení, zda je použití SafeHandle (nebo podobné technologie) na tom to místě vyžadováno. |
|
CA2100 |
Metoda nastavuje vlastnost System.Data.IDbCommand.CommandText pomocí řetězce, který je sestaven z řetězcového argumentu k metodě.Toto pravidlo předpokládá, že řetězcový argument obsahuje vstup uživatele.Řetězec příkazu SQL sestavený ze vstupu uživatele je ohrožen útoky prostřednictvím injektáže SQL. |
|
CA2101 |
CA2101: Zadejte zařazování pro řetězcové argumenty P/Invoke. |
Člen vyvolání platformy umožňuje částečně důvěryhodným volajícím mít řetězcový parametr a explicitně nezařazovat řetězec.To může způsobit potenciální ohrožení zabezpečení. |
CA2102 |
CA2102: Zachycení výjimek bez CLSCompliant v obecné obslužné rutiny |
Člen v sestavení, které není označeno pomocí atributu RuntimeCompatibilityAttribute nebo je označeno atributem RuntimeCompatibility(WrapNonExceptionThrows = false) obsahuje blok catch, který zpracovává typ System.Exception a neobsahuje bezprostředně následující obecný blok catch. |
CA2103 |
Metoda používá imperativní zabezpečení a může vytvářet oprávnění pomocí stavové informace nebo návratové hodnoty, která se může změnit pokud je žádost aktivní.Používejte deklarativní zabezpečení vždy, když je to možné. |
|
CA2104 |
CA2104: Nelze deklarovat čtení pouze proměnlivých referenční typy |
Externě viditelný typ obsahuje externě viditelné pole měnitelného referenčního typu, které je určeno jen pro čtení.Měnitelný typ je typ, jehož instanční data lze upravit. |
CA2105 |
Pokud použijete modifikátor pouze pro čtení (ReadOnly v jazyce Visual Basic) na pole, které obsahuje pole, toto pole nelze změnit tak, aby obsahovalo jiné pole.Avšak prvky pole, které jsou uloženy v poli určeném pouze pro čtení mohou být změněny. |
|
CA2106 |
Metoda uplatňuje oprávnění a na volajícím nejsou vykonány žádné kontroly zabezpečení.Uplatňování oprávnění zabezpečení bez provedení jakékoliv kontroly zabezpečení, může zanechat ve vašem kódu zneužitelné slabé stránky zabezpečení. |
|
CA2107 |
Metoda PermitOnly a akce zabezpečení CodeAccessPermission.Deny by měly být používány pouze těmi, kdo mají pokročilé znalosti o zabezpečení rozhraní .NET Framework.Kód používající tyto bezpečnostní akce by měl být podroben revizi zabezpečení. |
|
CA2108 |
Veřejný nebo chráněný hodnotový typ je zabezpečen pomocí přístupu k datům nebo požadavků na propojení. |
|
CA2109 |
Byla zjištěna veřejná nebo chráněná metoda zpracování událostí.Metody zpracování události by neměly být vystaveny, pokud to není nezbytně nutné. |
|
CA2111 |
Ukazatel není soukromý, interní nebo jen pro čtení.Škodlivý kód může změnit hodnotu ukazatele, což potenciálně umožňuje přístup do libovolného umístění v paměti nebo může způsobit selhání aplikace nebo systému. |
|
CA2112 |
Veřejný nebo chráněný typ obsahuje veřejné pole a je zabezpečen pomocí požadavků na propojení.Pokud má kód přístup k instanci typu, která je zabezpečena pomocí požadavku na propojení, nemusí kód vyhovět požadavku na propojení pro přístup k polím tohoto typu. |
|
CA2114 |
Metoda by neměla mít pro stejnou akci deklarativní zabezpečení jak na úrovni metody, tak na úrovni typu. |
|
CA2115 |
Toto pravidlo zjistí chyby, které mohou nastat, protože nespravovaný prostředek je finalizován v době, kdy je stále používán nespravovaným kódem. |
|
CA2116 |
Když je atribut APTCA (AllowPartiallyTrustedCallersAttribute) uveden pro plně důvěryhodná sestavení a sestavení spustí kód v jiném sestavení, které neumožňuje volání částečně důvěryhodným sestavením, může se jednat o chybu v zabezpečení. |
|
CA2117 |
Když je atribut APTCA uveden pro plně důvěryhodná sestavení a typ v sestavení je odvozen z typu, který neumožňuje volání částečně důvěryhodným sestavením, může se jednat o chybu v zabezpečení. |
|
CA2118 |
CA2118: Využití přezkoumání SuppressUnmanagedCodeSecurityAttribute |
Atribut SuppressUnmanagedCodeSecurityAttribute mění výchozí chování zabezpečení systému pro členy vykonávající nespravovaný kód, který používá zprostředkovatele komunikace s objekty COM a vyvolání operačního systému.Tento atribut slouží především ke zvýšení výkonu, ačkoliv nárůst výkonu může být spojen s významnými riziky zabezpečení. |
CA2119 |
Odvoditelný veřejný typ poskytuje implementaci přepisovatelné metody vnitřního (Friend v jazyce Visual Basic) rozhraní.Chcete-li opravit porušení tohoto pravidla, zabraňte přepsání metody mimo sestavení. |
|
CA2120 |
Tento typ má konstruktor, který přebírá objekt System.Runtime.Serialization.SerializationInfo a System.Runtime.Serialization.StreamingContext (podpis konstruktoru serializace).Tento konstruktor není zabezpečen pomocí kontroly zabezpečení, ale jeden nebo více běžných konstruktorů tohoto typu je zabezpečených. |
|
CA2121 |
Systém volá statický konstruktor před vytvořením první instance typu nebo před tím, než jsou odkazovány jakékoli statické členy.Pokud statický konstruktor není privátní, může být volán jiným kódem než kódem systému.V závislosti na operacích, které jsou provedeny v konstruktoru, toto může způsobit neočekávané chování. |
|
CA2122 |
Veřejný nebo chráněný člen má požadavek Link Demands a je volán členem, který neprovádí žádné bezpečnostní kontroly.Požadavek na odkaz kontroluje pouze oprávnění bezprostředního volajícího. |
|
CA2123 |
Toto pravidlo přiřazuje metodu své základní metodě, kterou je buď rozhraní nebo virtuální metoda jiného typu, a poté v obou metodách srovnává požadavky na odkazy.Je-li toto pravidlo porušeno, může chybný volající obejít požadavek na odkaz pouhým voláním nezabezpečené metody. |
|
CA2124 |
Veřejná nebo chráněná metoda obsahuje blok try/finally.Blok finally nejspíše obnovuje stav zabezpečení a sám není uzavřen v bloku finally. |
|
CA2126 |
Veřejný neuzavřený typ je chráněn pomocí požadavku na propojení a má přepisovatelnou metodu.Tento typ ani tato metoda nejsou chráněny pomocí vyžádané dědičnosti. |
|
CA2127 |
CA2136: Členové by nemělo být konfliktní průhlednost poznámky |
Ve 100% transparentním sestavení nemůže nastat kritický kód.Toto pravidlo analyzuje 100% transparentní sestavení pro jakoukoliv anotace SecurityCritical na úrovni typu, pole nebo metody. |
CA2128 |
CA2147: Průhledné metody nelze použít zabezpečení nepodmíněných výrazů |
Toto pravidlo analyzuje všechny metody a typy v sestavení, které je buď 100% transparentní nebo smíšené transparentní/kritické a označí všechny deklarativní nebo imperativní použití Assert. |
CA2129 |
CA2140: Průhledné kód musí odkaz zabezpečení důležitých položek |
Metody označené pomocí atributu SecurityTransparentAttribute volají neveřejné členy, které jsou označené jako SecurityCritical.Toto pravidlo analyzuje všechny metody a typy v sestavení, který je transparentní/kritické a označí všechna volání z transparentního kódu do neveřejného kritického kódu, který není označen jako SecurityTreatAsSafe. |
CA2130 |
CA2130: Zabezpečení důležitých konstant by měly být průhledné |
Pro konstantní hodnoty není vynucována průhlednost, protože kompilátory vkládají konstantní hodnoty do kódu, aby za běhu programu nebylo zapotřebí žádné vyhledávání.Konstantní pole by měla být průhledná z pohledu zabezpečení, aby kontroloři kódu nepředpokládali, že průhledný kód nemůže ke konstantě přistoupit. |
CA2131 |
CA2131: Důležité typy zabezpečení není účastnit typu rovnocennost |
Typ se účastní porovnávání typu, přičemž typ samotný nebo jeho člen nebo pole je označen atributem SecurityCriticalAttribute.Toto pravidlo nastává pro všechny kritické typy nebo typy obsahující kritické metody nebo pole, které se účastní porovnávání typu.Když modul CLR zjistí takový typ, nenačítá jej a za běhu vyvolá výjimku TypeLoadException.Obvykle je toto pravidlo vyvoláno pouze v případě, že uživatelé implementují rovnocennost typu ručně namísto prostřednictvím tlbimp a provedení rovnocennosti typu kompilátorem. |
CA2132 |
CA2132: Musí být výchozí konstruktory důležité jako základní typ výchozí konstruktory |
Typy a členy, které mají atribut SecurityCriticalAttribute nelze použít kódem aplikace Silverlight.Typy a členy kritické na zabezpečení lze použít pouze prostřednictvím důvěryhodného kódu v knihovně tříd rozhraní .NET Framework aplikace Silverlight.Protože veřejné nebo chráněné konstrukce v odvozené třídě musí mít stejnou nebo větší transparentnost než jejich základní třída, třídu v aplikaci nelze odvodit z třídy označené jako SecurityCritical. |
CA2133 |
CA2133: Delegáti musí navázat na metody s konzistentní průhlednost |
Toto upozornění je vyvoláno na metodě, která vytvoří vazbu delegáta označeného pomocí atributu SecurityCriticalAttribute na metodu, která je transparentní nebo která je označena pomocí atributu SecuritySafeCriticalAttribute.Upozornění je také vyvoláno na metodě, která vytvoří vazbu transparentního nebo na bezpečnost kritického delegáta na kritickou metodu. |
CA2134 |
CA2134: Metody uchovává konzistentní průhlednost při přepsání základní metody |
Toto pravidlo je vyvoláno, když metoda označená pomocí atributu SecurityCriticalAttribute přepíše metodu, která je transparentní nebo označená pomocí atributu SecuritySafeCriticalAttribute.Toto pravidlo je vyvoláno také, když transparentní metoda nebo metoda označená pomocí atributu SecuritySafeCriticalAttribute přepíše metodu, která je označená pomocí atributu SecurityCriticalAttribute.Pravidlo je použito při přepisování virtuální metody nebo implementaci rozhraní. |
CA2135 |
LinkDemands se již nepoužívá v sadě pravidel zabezpečení úrovně 2.Namísto použití LinkDemands k vynucení zabezpečení v době kompilace JIT, označte metody, typy a pole pomocí atributu SecurityCriticalAttribute. |
|
CA2136 |
CA2136: Členové by nemělo být konfliktní průhlednost poznámky |
Atributy transparentnosti jsou použity z prvků kódu většího rozsahu na prvky menšího rozsahu.Atributy transparentnosti prvků kódu, které mají větší rozsah, mají přednost před atributy transparentnosti prvků kódu, které jsou obsaženy v prvním prvku.Například třída označená atributem SecurityCriticalAttribute nemůže obsahovat metodu, která je označena atributem SecuritySafeCriticalAttribute. |
CA2137 |
Metoda obsahuje kód, který nelze ověřit nebo vrací typ odkazem.Toto pravidlo je vyvoláno při pokusech transparentního kódu zabezpečení spustit jazyk MSIL, který nelze ověřit.Pravidlo však neobsahuje úplný ověřovatel jazyka IL a místo toho k zachycení většiny porušení ověření jazyka MSIL používá heuristiky. |
|
CA2138 |
CA2138: Průhledné metody musí nelze volat metody s atributem SuppressUnmanagedCodeSecurity |
Transparentní metoda zabezpečení volá metodu, která je označena atributem SuppressUnmanagedCodeSecurityAttribute. |
CA2139 |
CA2139: Průhledné metody nelze použít atribut HandleProcessCorruptingExceptions |
Toto pravidlo je vyvoláno, je-li jakákoliv metoda transparentní a pokusí se zpracovat výjimku poškozující proces použitím atributu HandleProcessCorruptedStateExceptionsAttribute.Výjimka poškozující proces je klasifikace výjimek dle specifikace CLR verze 4.0, například výjimka AccessViolationException.Atribut HandleProcessCorruptedStateExceptionsAttribute lze použít pouze metodami kritickými pro bezpečnost a bude ignorován, je-li použit u průhledných metod. |
CA2140 |
CA2140: Průhledné kód musí odkaz zabezpečení důležitých položek |
Prvek kódu označený atributem SecurityCriticalAttribute je kritický pro zabezpečení.Transparentní metoda nemůže použít prvek kritický pro zabezpečení.Pokud se transparentní typ pokusí použít typ kritický pro zabezpečení, je vyvolána výjimka TypeAccessException, MethodAccessException nebo FieldAccessException. |
CA2141 |
Metoda s transparentním zabezpečením volá metodu v sestavení, které není označeno atributem APTCA nebo metodu s transparentním zabezpečením, která splňuje LinkDemand pro typ nebo metodu. |
|
CA2142 |
Toto pravidlo je vyvoláno transparentními metodami, které vyžadují přístup LinkDemands.Kód transparentní pro zabezpečení by neměl být odpovědný za ověření zabezpečení operace, a proto by neměl požadovat oprávnění. |
|
CA2143 |
CA2143: Průhledné metody není vhodné používat zabezpečení požadavků |
Kód transparentní pro zabezpečení by neměl být odpovědný za ověření zabezpečení operace, a proto by neměl požadovat oprávnění.Transparentní kód pro zabezpečení k učinění rozhodnutí o zabezpečení používá úplné požadavky a kritický kód pro zabezpečení by neměl spoléhat na to, že transparentní kód tyto úplné požadavky provede. |
CA2144 |
Přezkoumání zabezpečení transparentního kódu není tak úplné jako přezkoumání zabezpečení kritického kódu, protože transparentní kód nemůže provádět akce citlivé na zabezpečení.Sestavení, která jsou načtena z pole bajtů nemohou být v transparentním kódu zaznamenána, takové pole bajtů může obsahovat kritický nebo důležitější kód kritický na zabezpečení, který musí být auditován. |
|
CA2145 |
CA2145: Průhledné metod by nesmí být upraven pomocí SuppressUnmanagedCodeSecurityAttribute |
Metody označené atributem SuppressUnmanagedCodeSecurityAttribute mají implicitní LinkDemand umístěn na jakoukoli metodu, kterou volají.Tento LinkDemand vyžaduje, aby volající kód byl kriticky zabezpečený.Označení metody, která používá SuppressUnmanagedCodeSecurity, atributem SecurityCriticalAttribute zviditelňuje tento požadavek pro volající metody. |
CA2146 |
CA2146: Typy musí být důležité jako rozhraní a základní typy |
Toto pravidlo je vyvoláno, když má odvozený typ atribut transparentnosti zabezpečení, který není tak kritický jako jeho základního typu nebo implementovaného rozhraní.Pouze kritické typy lze odvodit z kritických základních typů nebo mohou implementovat kritická rozhraní a pouze kritické typy nebo typy kritické pro zabezpečení mohou být odvozeny ze základních typů kritických na zabezpečení nebo mohou implementovat rozhraní kritické pro zabezpečení. |
CA2147 |
CA2147: Průhledné metody nelze použít zabezpečení nepodmíněných výrazů |
U kódu označeného atributem SecurityTransparentAttribute není uděleno dostatečné oprávnění k vyhodnocení. |
CA2149 |
Toto pravidlo je vyvoláno na každé transparentní metodě, která přímo volá nativní kód (například prostřednictvím P/Invoke).Porušení tohoto pravidla vede k vyvolání výjimky MethodAccessException v modelu transparentnosti úrovně 2 a k úplnému požadavku na nespravovaný kód v modelu transparentnosti úrovně 1. |
|
CA2200 |
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 |
Díky tomu je obtížné rozpoznat a ladit původní chybu. |
|
CA2202 |
Implementace metody obsahuje cesty kódu, které by mohly způsobit více volání metody System.IDisposable.Dispose nebo ekvivalentní metody pro uvolnění (například metoda Close() některých typů) stejného objektu. |
|
CA2204 |
Řetězcový literál v těle metody obsahuje jedno nebo více slov, které nejsou rozpoznávány knihovnou pravopisu společnosti Microsoft. |
|
CA2205 |
Je definována metoda vyvolání operačního systému a metoda, která obsahuje ekvivalentní funkce je umístěna v knihovně tříd .NET Framework. |
|
CA2207 |
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 |
Je provedeno volání výchozího konstruktoru (bez parametrů) typu výjimky, která je typu nebo je odvozena z typu ArgumentException nebo je předán nesprávný řetězcový argument do konstruktoru s parametry typu výjimky, která je typu nebo je odvozena z typu ArgumentException. |
|
CA2210 |
Silný název chrání klienty před neúmyslným načtením narušeného sestavení.Sestavení bez silných názvů by krom velmi omezených scénářů neměla být nasazována.Pokud sdílíte nebo šíříte sestavení, která nejsou správně podepsána, může být sestavení záměrně poškozeno, modul CLR jej nemusí načíst nebo uživatelé mohou být nuceni vypnout na svém počítači ověřování. |
|
CA2211 |
Statická pole, která nejsou konstantami ani nejsou jen pro čtení nejsou bezpečné pro podprocesy.Přístup k takovému poli musí být pečlivě kontrolován a vyžaduje pokročilé programovací techniky synchronizace přístupu k objektu třídy. |
|
CA2212 |
Metoda typu, který je odvozen z typu System.EnterpriseServices.ServicedComponent je označena pomocí atributu System.Web.Services.WebMethodAttribute.Protože atribut WebMethodAttribute a metoda ServicedComponent mají konfliktní chování a požadavky na kontext a tok transakcí, bude chování metody v některých případech nesprávné. |
|
CA2213 |
Typ implementující rozhraní System.IDisposable deklaruje pole typu, který také implementuje rozhraní System.IDisposable.Metoda Dispose pole není volána pomocí metody Dispose deklarujícího typu. |
|
CA2214 |
Při volání virtuální metody konstruktorem, konstruktor instance, která volá tuto metodu nemusí být proveden. |
|
CA2215 |
Pokud typ dědí z uvolnitelného typu, musí volat metodu Dispose ze základního typu v rámci své vlastní metody Dispose. |
|
CA2216 |
CA2216: Na jedno použití typů by měla deklarovat finalizačních metod |
Typ, který implementuje rozhraní System.IDisposable a obsahuje pole, která navrhují použití nespravovaných zdrojů prostředky, neimplementuje finalizační metodu jak je popsáno metodou Object.Finalize. |
CA2217 |
Výčet viditelný z vnějšku je označen atributem FlagsAttribute a má jednu nebo více hodnot, které nejsou mocninami dvou nebo kombinací jiných definovaných hodnot výčtu. |
|
CA2218 |
GetHashCode vrací hodnotu založenou na aktuální instanci, která je vhodná pro algoritmy hash a datové struktury, například tabulku hash.Dva objekty, které jsou stejného typu a jsou stejné, musí vrátit stejný kód hash. |
|
CA2219 |
Když je výjimka vyvolána v klauzuli finally nebo fault, je případná aktivní výjimka překryta novou výjimkou.Pokud je v klauzuli filtru vyvolána výjimka, modul runtime tuto výjimku tiše zachytí.Díky tomu je obtížné rozpoznat a ladit původní chybu. |
|
CA2220 |
CA2220: Finalizačních metod by měl zavolat finalizačních metod základní třídy. |
Finalizační metoda musí být šířena přes hierarchii dědičnosti.Chcete-li to zaručit, musí typy zavolat metodu Finalize své základní třídy ve své vlastní metodě Finalize. |
CA2221 |
Finalyzéry musí použít modifikátor přístupu family. |
|
CA2222 |
Modifikátor přístupu byste neměli měnit u zděděných členů.Změna zděděného členu na soukromý nezabrání volajícím v přístupu k implementaci základní třídy dané metody. |
|
CA2223 |
Přestože společný jazykový modul runtime umožňuje používat návratové typy k rozlišení mezi jinak identickými členy, tato funkce není ve specifikaci CLS, ani není běžnou funkcí v programovacích jazycích rozhraní .NET. |
|
CA2224 |
Veřejný typ implementuje operátor rovnosti, ale nepřepisuje metodu Object.Equals. |
|
CA2225 |
Byl zjištěn při přetížení operátor a očekávané pojmenované alternativní metoda nebyla nalezena.Pojmenovaný alternativní člen poskytuje přístup ke stejným funkcím jako operátor a je k dispozici pro vývojáře, kteří programují v jazycích nepodporujících přetížené operátory. |
|
CA2226 |
Typ implementuje operátor rovnosti nebo nerovnosti a neimplementuje opačný operátor. |
|
CA2227 |
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. |
|
CA2228 |
Soubory prostředků, které byly vytvořeny pomocí předprodejní verze rozhraní .NET Framework nemusí být použitelné podporovanou verzí rozhraní .NET Framework. |
|
CA2229 |
Implementací konstruktoru serializace se vyřeší porušení tohoto pravidla.Pro zapouzdřené třídy by měl být konstruktor privátní, jinak by měl být chráněný. |
|
CA2230 |
Veřejný nebo chráněný typ obsahuje veřejnou nebo chráněnou metodu, která používá konvenci volání VarArgs místo klíčového slova params. |
|
CA2231 |
CA2231: Přetížení operátor rovná se na přepsání ValueType.Equals |
Hodnotový typ přepisuje metodu Object.Equals, ale neimplementuje operátor rovnosti. |
CA2232 |
Attribut STAThreadAttribute znamená, že model podprocesu COM aplikace je jedno vláknový objekt apartment (STA).Tento atribut musí být přítomen u vstupního bodu jakékoliv aplikace Windows Forms, pokud je vynechán, součásti systému Windows nemusí pracovat správně. |
|
CA2233 |
Aritmetické operace byste neměli provádět bez ověření operandů.Tím zajistíte, že výsledek operace není mimo rozsah možných hodnot použitých datových typů. |
|
CA2234 |
Je provedeno volání metody, která má parametr typu string, jehož název obsahuje "uri", "URI", "urn", "URN", "url" nebo "URL".Typ deklarující metodu obsahuje odpovídající přetížení metody, která má parametr typu System.Uri. |
|
CA2235 |
Neserializovatelný typ pole instance je deklarován v serializovatelném typu. |
|
CA2236 |
Chcete-li napravit porušení tohoto pravidla, zavolejte metodu GetObjectData základního typu nebo konstruktor serializace z odpovídající metody nebo konstruktoru odvozeného typu. |
|
CA2237 |
Aby byl typ společným jazykovým modulem runtime rozpoznán jako serializovatelný, musí být označen pomocí atributu SerializableAttribute, i když typ používá vlastní rutinu serializace prostřednictvím implementace rozhraní ISerializable. |
|
CA2238 |
Metoda, která zpracovává událost serializace nemá správný podpis, návratový typ nebo viditelnost. |
|
CA2239 |
Typ má pole označené atributem System.Runtime.Serialization.OptionalFieldAttribute a neposkytuje metody zpracování událostí deserializace. |
|
CA2240 |
Chcete-li opravit porušení tohoto pravidla, nastavte metodu GetObjectData jako viditelnou a přepisovatelnou a ujistěte se, že všechna pole instance jsou součástí procesu serializace nebo výslovně označena pomocí atributu NonSerializedAttribute. |
|
CA2241 |
Formátovací argument, který je předán metodě System.String.Format neobsahuje formátovací položku, která odpovídá každému objektu argumentu nebo naopak. |
|
CA2242 |
Tento výraz testuje hodnotu proti Single.Nan nebo Double.Nan.Chcete-li tuto hodnotu otestovat, použijte metodu Single.IsNan(Single) nebo Double.IsNan(Double). |
|
CA2243 |
CA2243: Atribut řetězcové literály by měla analyzovat správně |
Parametr literálový řetězec atributu nesprávně analyzuje adresu URL, identifikátor GUID nebo verzi. |