Sdílet prostřednictvím


Sada pravidel Základní pravidla správnosti pro spravovaný kód

Sada pravidel Základní pravidla správnosti se zaměřuje na logické chyby a obvyklé chyby při využití architektury API.Základní pravidla správnosti zahrnují pravidla v sadě pravidel Minimální doporučená pravidla.Další informace naleznete v Sada pravidel Spravovaná doporučená pravidla pro spravovaný kód. Tuto sadu pravidel byste měli zahrnout jako rozříšení seznamu upozornění hlášených minimálními doporučenými pravidly.

Následující tabulka popisuje všechna pravidla v sadě pravidel Základní pravidla správnosti společnosti Microsoft.

Pravidlo

Description

CA1001

Typy, které vlastní uvolnitelná pole, by měly být uvolnitelné

CA1009

Deklarujte správně ovladače událostí

CA1016

Označte sestavení pomocí AssemblyVersionAttribute

CA1033

Metody rozhraní by měly být volatelné podřízenými typy

CA1049

Typy, které vlastní nativní prostředky, by měly být uvolnitelné

CA1060

Přesuňte volání nespravovaných kódů do třídy NativeMethods

CA1061

Neskrývejte metody základní třídy

CA1063

Implementuje správně IDisposable

CA1065

Nevyvolávejte výjimky v neočekávaných umístěních

CA1301

Vyhněte se duplicitním akcelerátorům

CA1400

Vstupní body volání nespravovaného kódu by měly existovat

CA1401

Volání nespravovaných kódů by neměla být viditelná

CA1403

Typy automatického rozložení by neměly být viditelné modelu COM

CA1404

Volejte GetLastError ihned po volání nespravovaného kódu

CA1405

Základní typy viditelného typu modelu COM by měly být viditelné modelu COM

CA1410

Metody registrace modelu COM by si měly odpovídat

CA1415

Deklarujte správně volání nespravovaných kódů

CA1821

Odstraňte prázdné finalizační metody

CA1900

Pole hodnotového typu by měla být přenosná

CA1901

Deklarace volání nespravovaného kódu by měla být přenosná

CA2002

Nepoužívejte zámky na objekty se slabou identitou

CA2100

Zkontrolujte dotazy SQL pro chyby zabezpečení

CA2101

Určete zařazování pro argumenty řetězce volání nespravovaného kódu

CA2108

Zkontrolujte deklarativní zabezpečení na hodnotových typech

CA2111

Ukazatele by neměly být viditelné

CA2112

Zabezpečené typy by neměly vystavovat pole

CA2114

Zabezpečení metody by mělo být nadmnožinou typu

CA2116

Metody APTCA by měly volat pouze metody APTCA

CA2117

Typy APTCA by měly rozšiřovat pouze základní typy APTCA

CA2122

Nezveřejňujte nepřímo metody s požadavky propojení

CA2123

Požadavky odkazu přepisu by měly být shodné se základem

CA2124

Zabalte ohrožené klauzule finally do vnějšího bloku try

CA2126

Požadavky propojení typů vyžadují požadavky dědičnosti

CA2131

Důležité typy zabezpečení se nemusí účastnit rovnocennosti typu

CA2132

Výchozí konstruktory musí být alespoň tak kritické jako výchozí konstruktory základního typu

CA2133

Delegáti musí navázat na metody s konzistentní transparentností

CA2134

Metody musí při přepisu základních metod zachovat konzistentní transparentnost

CA2137

Transparentní metody musí obsahovat pouze ověřitelné IL

CA2138

Transparentní metody nesmí volat metody s atributem SuppressUnmanagedCodeSecurity

CA2140

Transparentní kód nesmí odkazovat na důležité položky zabezpečení

CA2141

Transparentní metody nesmí splňovat LinkDemands

CA2146

Typy musí být alespoň tak kritické jako jejich rozhraní a základní typy

CA2147

Transparentní metody nemohou používat bezpečnostní vyhodnocení

CA2149

Transparentní metody nesmí volat do nativního kódu

CA2200

Znovu vyvolejte výjimku pro zachování podrobností zásobníku

CA2202

Neuvolňujte objekty několikrát

CA2207

Statická pole hodnotového typu inicializujte vloženým kódem

CA2212

Neoznačujte obsluhované komponenty pomocí WebMethod

CA2213

Uvolnitelná pole by měla být uvolněna

CA2214

Nevolejte přepisovatelné metody v konstruktorech

CA2216

Uvolnitelné typy by měly deklarovat finalizační metodu

CA2220

Finalizační metody by měly volat finalizační metodu základní třídy

CA2229

Implementujte konstruktory serializace

CA2231

Je třeba přetížit operátor rovnosti při přetížení ValueType.Equals

CA2232

Označte vstupní body modelu Windows Forms pomocí STAThread

CA2235

Označte všechna neserializovatelná pole

CA2236

Volejte metody základní třídy na typech ISerializable

CA2237

Označte typy ISerializable pomocí SerializableAttribute

CA2238

Implementujte správně metody serializace

CA2240

Implementujte správně rozhraní ISerializable

CA2241

Poskytněte správné argumenty metodám formátování

CA2242

Testujte správně hodnotu NaN

CA1008

Výčty by měly mít nulovou hodnotu

CA1013

Je třeba přetížit operátor rovnosti při přetížení sčítání a odečítání

CA1303

Nepředávejte literály jako lokalizované parametry

CA1308

Normalizujte řetězce na velká písmena

CA1806

Neignorujte výsledky metody

CA1816

Volejte GC.SuppressFinalize správně

CA1819

Vlastnosti by neměly vracet pole

CA1820

Testujte prázdné řetězce pomocí délky řetězce

CA1903

Použijte pouze rozhraní API z cílové architektury

CA2004

Odeberte volání GC.KeepAlive

CA2006

Použijte SafeHandle pro zapouzdření nativních zdrojů

CA2102

Zachycujte výjimky bez CLSCompliant v obecných obslužných rutinách

CA2104

Nedeklaruje proměnlivé odkazové typy pouze pro čtení

CA2105

Pole polí by neměla být pouze pro čtení

CA2106

Zabezpečte výrazy

CA2115

Volejte GC.KeepAlive při použití nativních zdrojů

CA2119

Zapečeťte metody, které vyhovují privátním rozhraním

CA2120

Zabezpečte konstruktory serializace

CA2121

Statické konstruktory by měly být privátní

CA2130

Důležité bezpečnostní konstanty by měly být průhledné

CA2205

Použijte spravované ekvivalenty rozhraní Win32 API

CA2215

Metody Dispose by měly volat uvolnění základní třídy

CA2221

Finalizační metody by měly být chráněné

CA2222

Nesnižujte viditelnost zděděných členů

CA2223

Členy by se měly lišit o více než jen návratový typ

CA2224

Přepište metodu rovnosti při přetížení operátoru rovnosti

CA2226

Operátory by měly mít symetrická přetížení

CA2227

Vlastnosti vracející kolekce by měly být určeny pouze pro čtení

CA2239

Poskytněte metody deserializace pro volitelná pole