Sada pravidel Rozšířená pravidla správnosti pro spravovaný kód
Sada pravidel Microsoft Extended správnosti pravidla maximalizuje logiku a rámcové chyby využití hlášené analýzou kódu.Je zvláštní důraz kladen na konkrétní scénáře spolupráce COM a mobilních aplikací.Měli byste zvážit, včetně tohoto pravidla, pokud jeden z těchto scénářů se vztahuje k projektu nebo najít další problémy v projektu nastavit.
Sada pravidel Microsoft Extended správnosti pravidla obsahuje pravidla, nastavené v pravidle Microsoft základní pravidla správnosti.Základní pravidla správnosti obsahují pravidla, nastavené v pravidle Microsoft Minimální doporučená pravidla.Další informace naleznete v Sada pravidel Základní pravidla správnosti pro spravovaný kód aSada pravidel Spravovaná doporučená pravidla pro spravovaný kód
Následující tabulka popisuje všechna pravidla v sadě Microsoft Extended správnosti pravidla pravidlo.
Pravidlo |
Description |
---|---|
Typy, které vlastní jednorázových polí by mělo být na jedno použití |
|
Správně deklarovat obslužné rutiny událostí |
|
Značka sestav s AssemblyVersionAttribute |
|
Metody rozhraní by měla být volána skriptem podřízené typy |
|
Typy vlastních nativní zdrojů by měly být na jedno použití |
|
Přesunout do třídy NativeMethods P/Invokes |
|
Nelze skrýt metody základní třídy. |
|
Správně implementovat IDisposable |
|
Nevyvolávají výjimky v neočekávané umístění |
|
Vyhnout se duplicitní akcelerátory |
|
Vstupní body P/Invoke by existovat. |
|
P/Invokes nemusí být viditelné |
|
Typy automatického rozložení nesmí být viditelné COM |
|
Volání funkce GetLastError ihned po vyvolání/P |
|
Základní typy viditelný typ COM musí být viditelné COM |
|
Najít odpovídající registraci metod modelu COM |
|
Správně deklarovat P/Invokes |
|
Odstranit prázdné finalizačních metod |
|
Pole typu hodnota by měla být přenosný |
|
P/Invoke prohlášení by mělo být přenosný |
|
Zamknout na objekty s identitou slabé |
|
Zkontrolujte chyby zabezpečení dotazy SQL |
|
Určit zařazování pro řetězcové argumenty P/Invoke. |
|
Přezkoumání deklarativní zabezpečení na hodnotu typy |
|
Ukazatele nemusí být viditelné |
|
Nesmí vystavovat zabezpečené typy polí |
|
Metoda zabezpečení by měl být nadmnožinou typu |
|
Metody APTCA by pouze volání metod APTCA |
|
Typy APTCA by měl rozšířit pouze základní typy APTCA |
|
Nepřímo neuvádějí metody s požadavky propojení |
|
Přepsat spojení, které by měly být shodné základní požadavky |
|
Obtékání ohrožen nakonec klauzulí ve vnější akci |
|
Typ propojení požadavků vyžadují dědičnost poptávek |
|
Důležité typy zabezpečení není součástí typu rovnocennost |
|
Musí být výchozí konstruktory důležité jako základní typ výchozí konstruktory |
|
Delegáti musí navázat na metody s konzistentní průhlednost |
|
Metody musí zachovat konzistentní průhlednost při přepsání základní metody |
|
Transparentní metody musí obsahovat pouze ověřitelné IL |
|
Transparentní metody musí nelze volat metody s atributem SuppressUnmanagedCodeSecurity |
|
Průhledné kód musí odkazovat není zabezpečení důležité položky |
|
Transparentní metody musí splňovat není LinkDemands |
|
Typy musí být důležité jako rozhraní a základní typy |
|
Transparentní metody nelze použít zabezpečení nepodmíněných výrazů |
|
Transparentní metody musí není volání do nativního kódu |
|
Rethrow zachovat podrobnosti zásobníku |
|
Neodstraňovat několikrát objekty |
|
Inicializace vložené statické pole typu hodnota |
|
Neoznačovat servisu komponenty s WebMethod |
|
Na jedno použití polí by vyřazen. |
|
Nevolejte overridable metody konstruktory |
|
Typy jednorázových by měla deklarovat finalizačních metod |
|
Základní třída finalizačních metod by měla zavolat finalizačních metod |
|
Implementovat serializace konstruktory |
|
Přetížení operátor rovná se na přepsání ValueType.Equals |
|
Značka model Windows Forms vstupní body s STAThread |
|
Označit všechna pole není serializovatelný. |
|
Typy ISerializable volat metody základní třídy. |
|
Typy ISerializable značka s SerializableAttribute |
|
Správně implementovat metody serializace |
|
Správně implementovat ISerializable |
|
Poskytovat správné argumenty metody formátování |
|
Test správně NaN |
|
Výčty musí mít nulovou hodnotu |
|
Rovná se operátor přetížení na přetížení sečíst a odečíst |
|
Jako parametry lokalizované neprojde literály |
|
Normalizovat řetězce na velká písmena |
|
Ignorování výsledky metody |
|
Volání GC.Funkce SuppressFinalize správně |
|
Vlastnosti by měly nevrací matice |
|
Test prázdné řetězce pomocí délka řetězce |
|
Použít pouze API z cílový rámec |
|
Odeberte volání do GC.Udržení naživu |
|
Zapouzdření nativní zdrojů pomocí SafeHandle |
|
Zachycení výjimek bez CLSCompliant v obecné obslužné rutiny |
|
Čtení pouze proměnlivých referenční typy prohlásí. |
|
Pole Array by pouze číst. |
|
Zabezpečené nepodmíněných výrazů |
|
Volání GC.Udržovací při použití nativních zdrojů |
|
Těsnění metod, které vyhovují privátní rozhraní |
|
Zabezpečené serializace konstruktory |
|
Statické konstruktory by měly být soukromé |
|
Zabezpečení důležitých konstant, by měly být průhledné |
|
Použití spravovaných ekvivalenty rozhraní Win32 API |
|
Metody Dispose by volání dispose základní třídy. |
|
Finalizačních metod by měly být chráněny. |
|
Viditelnost zděděný člen poklesu. |
|
Členové by se lišit o více než návratový typ |
|
Rovná se přepsat na přetížení operátor rovná se |
|
Operátory by měly mít symetricky přetížení |
|
Vlastnosti kolekce by pouze čtení |
|
Poskytovat rekonstrukci metody pro volitelné pole |
|
Implementace standardní výjimku konstruktory |
|
Parametry URI by neměl být řetězce |
|
Identifikátor URI vrátit hodnoty by neměl být řetězce |
|
Vlastnosti identifikátoru URI by neměl být řetězce |
|
Řetězec identifikátoru URI přetížení volat přetížení System.Uri |
|
Zabránit přetížení v viditelné rozhraní COM |
|
Zamezení Int64 argumenty pro klienty Visual Basic 6 |
|
Vyhnout se statickým členům v viditelné typy modelu COM |
|
Nepoužívejte AutoDual ClassInterfaceType |
|
Viditelné typy com by mělo být možné vytvořit |
|
Registrace metod modelu COM nemusí být viditelné |
|
Označit jako rozhraní IDispatch rozhraní ComSource |
|
Nepoužívejte neveřejné pole zobrazena hodnota typů COM |
|
Logické argumenty P/Invoke s MarshalAs má označení |
|
Nepoužívejte priority Nečinný proces |
|
Nepoužívejte časovače, změny stavu napájení |
|
Značka sestav s NeutralResourcesLanguageAttribute |
|
Zamezení volání metod problematické |
|
Považovat tkaniva podprocesů |
|
Sestavení úroveň 2 by měla obsahovat LinkDemands |
|
Členové by nemělo být konfliktní průhlednost poznámky |
|
Atribut HandleProcessCorruptingExceptions nelze použít průhledné metody |
|
Průhledné kód by chráněn pomocí LinkDemands |
|
Transparentní metody není vhodné používat zabezpečení požadavků |
|
Průhledné kód by načíst sestavení z Bajtová pole |
|
Transparentní metody by měly není upraven pomocí SuppressUnmanagedCodeSecurityAttribute |
|
Literály by měla být zadána správně |
|
Konstanta není pole nemusí být viditelné |
|
Neoznačovat výčty s FlagsAttribute |
|
Přepsat na potlačení se rovná GetHashCode |
|
Nevyvolávají výjimky v klauzulích výjimky |
|
Operátor přetížení jsou pojmenovány alternativy |
|
Nedodávejte nevydané prostředku formáty |
|
Použijte parametry pro proměnné argumenty |
|
Operace by není přetečení. |
|
Průchod System.Uri objekty namísto řetězce |
|
Atribut řetězcové literály by správně analyzovat. |