Sada pravidel Spravovaná doporučená pravidla pro spravovaný kód
Sadu pravidel Spravovaná doporučená pravidla společnosti Microsoft lze zacílit na nejdůležitější problémy ve spravovaném kódu, jako jsou potenciální bezpečnostní chyby, pády aplikací a další důležité implementační chyby a chyby v návrh.Tato sada pravidel by měla být obsažena v jakékoli vlastní sadě pravidel, která byla pro projekt vytvořena.
Pravidlo |
Popis |
---|---|
Typy, které vlastní uvolnitelné pole, by měly být uvolnitelné |
|
Deklarujte správně ovladače událostí |
|
Označte sestavení pomocí AssemblyVersionAttribute |
|
Metody rozhraní by měly jít volat podřízenými typy |
|
Typy, které vlastní nativní prostředky, by měly být uvolnitelné |
|
Přesuňte volání nespravovaných kódů do třídy NativeMethods |
|
Neskrývejte metody základní třídy |
|
Implementuje správně rozhraní IDisposable |
|
Nevyvolávejte výjimky v neočekávaných umístěních |
|
Vyhněte se duplicitním akcelerátorům |
|
Vstupní body volání nespravovaného kódu by měly existovat |
|
Volání nespravovaných kódů by neměla být viditelná |
|
Typy automatického rozložení by neměly být viditelné modelu COM |
|
Volejte metodu GetLastError ihned po volání nespravovaného kódu |
|
Základní typy viditelného typu modelu COM by měly být viditelné modelu COM |
|
Metody registrace modelu COM by si měly odpovídat |
|
Deklarujte správně volání nespravovaných kódů |
|
Odstraňte prázdné finalizační metody |
|
Pole hodnotového typu by měla být přenosná |
|
Deklarace volání nespravovaného kódu by měla být přenosná |
|
Nepoužívejte zámky na objekty se slabou identitou |
|
Zkontrolujte dotazy SQL pro chyby zabezpečení |
|
Určete zařazování pro argumenty řetězce volání nespravovaného kódu |
|
Zkontrolujte deklarativní zabezpečení na hodnotových typech |
|
Ukazatele by neměly být viditelné |
|
Zabezpečené typy by neměly vystavovat pole |
|
Zabezpečení metody by mělo být nadmnožinou typu |
|
Metody APTCA by měly volat pouze metody APTCA |
|
Typy APTCA by měly rozšiřovat pouze základní typy APTCA |
|
Nezveřejňujte nepřímo metody s požadavky propojení |
|
Požadavky odkazu přepisu by měly být shodné se základem |
|
Zabalte ohrožené klauzule finally do vnějšího bloku try |
|
Požadavky propojení typů vyžadují požadavky dědičnosti |
|
Důležité typy zabezpečení se nemusí účastnit rovnocennosti typu |
|
Výchozí konstruktory musí být alespoň tak kritické jako výchozí konstruktory základního typu |
|
Delegáti musí navázat na metody s konzistentní transparentností |
|
Metody musí při přepisu základních metod zachovat konzistentní transparentnost |
|
Transparentní metody musí obsahovat pouze ověřitelné IL |
|
Transparentní metody nesmí volat metody s atributem SuppressUnmanagedCodeSecurity |
|
Transparentní kód nesmí odkazovat na důležité položky zabezpečení |
|
Transparentní metody nesmí splňovat LinkDemands |
|
Typy musí být alespoň tak kritické jako jejich rozhraní a základní typy |
|
Transparentní metody nemohou používat bezpečnostní vyhodnocení |
|
Transparentní metody nesmí volat do nativního kódu |
|
Znovu vyvolejte pro zachování podrobností zásobníku |
|
Neuvolňujte objekty několikrát |
|
Statická pole hodnotového typu inicializujte vloženým kódem |
|
Neoznačujte obsluhované komponenty pomocí WebMethod |
|
Uvolnitelná pole by měla být uvolněna |
|
Nevolejte přepisovatelné metody v konstruktorech |
|
Uvolnitelné typy by měly deklarovat finalizační metodu |
|
Finalizační metody by měly volat finalizační metodu základní třídy |
|
Implementujte konstruktory serializace |
|
Je třeba přetížit operátor rovnosti při přetížení ValueType.Equals |
|
Označte vstupní body modelu Windows Forms pomocí STAThread |
|
Označte všechna neserializovatelná pole |
|
Volejte metody základní třídy na typech ISerializable |
|
Označte typy ISerializable pomocí SerializableAttribute |
|
Implementujte správně metody serializace |
|
Implementujte správně rozhraní ISerializable |
|
Poskytněte správné argumenty metodám formátování |
|
Testujte správně hodnotu NaN |