Smíšené doporučená pravidla pravidlo
Pravidla Microsoft smíšené doporučuje zaměřit na nejběžnějších a kritické problémy v C++ projektech, které podporují modul Common Language Runtime včetně celistvosti potenciální chyby aplikací a jiné důležité chyby logiku a návrh.Toto pravidlo v nastavených vlastní pravidlo vytvořit C++ projektů, které podporují společný jazykový modul Runtime, by měla zahrnovat.Tato sada pravidel je určen nakonfigurovat Visual Studio Professional edition a vyšší.
Pravidlo |
Description |
---|---|
Použití neinicializované paměti |
|
Odkazování ukazatele s hodnotou Null |
|
Použití hodnoty Nekontrolovaná |
|
Vrácená hodnota ignorována |
|
Nula ukončení z volání |
|
Nula Chybějící ukončení |
|
Chybný zřetězení |
|
Chybějící Argument řetězec formátu funkce |
|
Chybějící Argument funkce Format celé číslo |
|
Chybějící Argument ukazatel funkce Format |
|
Chybějící Argument ukazatele řetězec formátu funkce |
|
Vrácení neinicializovaných paměti |
|
Index překračuje maximální vyrovnávací paměti |
|
Index překračuje maximální vyrovnávací zásobník |
|
Neplatné přetypování HRESULT K BOOL |
|
Neplatné přetypování BOOL na HRESULT |
|
Neplatný vložili kompilátor Cast BOOL na HRESULT |
|
Neplatný Test HRESULT ale |
|
Neplatná hodnota HRESULT porovnat-1 |
|
Neplatné přiřazení HRESULT-1 |
|
Neplatné použití HRESULT jako logická hodnota |
|
Konstanta nula s logickou- nebo |
|
Logické- nebo s nenulovou konstanta |
|
Nula s logickou- A ztratí vedlejší účinky |
|
Místní Unwind vynucené |
|
Vytváření Null DACL |
|
Nevydané adresu popisovače |
|
Nechráněné použití Alloca |
|
Pomocí ukončení podprocesu |
|
Kód mrtvých v bitové- nebo omezené přepínač |
|
Použití aritmetický bajt |
|
Nadměrné využití zásobníku |
|
Pomocí Alloca ve smyčce |
|
Chybějící závorky v osazení |
|
Zrušit reference struktury ukazatel ignorována |
|
Chybějící Argument funkce Format Float |
|
Další Argument funkce Format |
|
Typ Float argumenty funkce Format |
|
Argumen celé číslo funkce Format |
|
Než znak Argument funkce Format |
|
Neplatný řetězec osazení |
|
Neplatné volání CreateProcess |
|
Nové pole odstranit skalární neshoda |
|
Neshoda skalární nové pole odstranit |
|
Neshoda paměti přidělování-navracení zpět |
|
Bitový operátor přednost vztahu |
|
Přiřazení nahradí Test |
|
Nové pole odstranit skalární primitivní neshoda |
|
Neplatný objekt Argument funkce Format |
|
Logické- nebo konstant |
|
Nulová logické- nebo ztráty vedlejší účinky |
|
Redundantní Test |
|
Vzájemné zařazení přes logické- A hodnotu False |
|
Vzájemné vyloučení přes logické- nebo je PRAVDA |
|
Bitové logické ne-Priorita A |
|
Bitové logické ne- nebo Priorita |
|
Smyčka se počítá od maximální |
|
Smyčky vrátí z minimálních |
|
Tělo smyčky nikdy proveden. |
|
Nekonečné smyčky |
|
Opakovat pouze jednou spuštěn. |
|
Výsledek Shift přetypovat na větší velikost |
|
Bitfield na logické porovnání |
|
Neplatný Argument znak řetězce formátu funkce |
|
Neplatný široké Argument znak řetězce formátu funkce |
|
Chybná velikost a počet |
|
Nesprávné volání funkce proměnné Argument |
|
Únik Realloc |
|
Neplatná konstanta filtru výjimky |
|
Výjimka pokračovat v provádění smyčky. |
|
Bitové- nebo Priorita |
|
Není není doplňkem. |
|
Výjimka pokračovat v hledání |
|
Ignoruje čárka |
|
Kopírovat řetězec namísto řetězce porovnat |
|
Potenciální Neshoda typu Argument |
|
Neplatné příznaky VirtualFree |
|
Parametr VirtualFree je neplatný |
|
Velikost VirtualFree je neplatný |
|
Unikající popisovač procesu |
|
Chybějící informace o vypnutí |
|
Prvek počet bajtů-Počet přetečení vyrovnávací paměti |
|
Divize velikost ukazatele |
|
Čtení přetečení |
|
Zápis přetečení |
|
Neplatná hodnota parametru |
|
Neplatná hodnota parametru |
|
Neplatný atribut vlastnosti. |
|
Konfliktní hodnoty vlastnosti atributu |
|
Odkazy nemůže mít hodnotu Null |
|
Null na jiné ukazatele |
|
MustCheck na Void |
|
Velikost vyrovnávací paměti na-ukazatel myši nebo matici. |
|
Neshoda Null zrušit reference struktury nula |
|
Přístup pro zápis konstanta |
|
Návrat na předpokladem |
|
Null byla ukončena na jiné ukazatele |
|
MustCheck musí být Ano nebo ne |
|
Velikost prvku bez velikost vyrovnávací paměti |
|
Velikost vyrovnávací paměti přesahuje velikost pole |
|
Velikost vyrovnávací paměti na jiné ukazatele |
|
Žádné vlastnosti atributu |
|
Platné velikosti v nečitelném vyrovnávací paměti |
|
Zapisovatelný velikost vyrovnávací paměti zapisovat |
|
Neplatná anotace: musí být vlastnost 'NeedsRelease' hodnota Ano nebo ne. |
|
Neplatný řetězec velikost zrušit reference struktury |
|
Neplatný řetězec zadejte velikost |
|
Neplatný parametr řetězec velikost |
|
Neplatný řetězec velikost nedostupná umístění |
|
Neplatný typ řetězce vyrovnávací paměti velikost |
|
Neplatná anotace: vlastnost "NeedsRelease" lze na hodnoty typu void. |
|
Nerozpoznaný formát řetězce styl |
|
Použití atributu poznámky k této funkci způsobí neplatnost všech existujících poznámek __declspec |
|
Neplatná velikost specifikace: výrazu není parsable |
|
Neplatný Deref = nebo Notref =: výrazu není parsable |
|
Hodnota není platná hodnota Ano/Ne/možná |
|
Hodnota je hodnota řetězce |
|
Hodnota není číslo |
|
Neočekávaná chyba výrazu poznámky |
|
Očekávaný počet argumentů pro poznámku neodpovídá skutečný počet argumentů pro poznámku |
|
Neočekávaná chyba poznámku pro poznámku |
|
Nepodařilo se uložit soubor protokolu XML |
|
Časování |
|
Selhání operace ženského správně používat |
|
Volajícímu nejsou v držení zámku |
|
Není-li uvolnit uzamčení volajícího |
|
Volající nemůže obsahovat žádné uzamčení |
|
K uvolnění uzamčení |
|
Selhalo získání nebo držení zámku |
|
Uvolnění zámku unheld |
|
Chyba poznámek SAL souběžnosti |
|
Výraz není PRAVDA na volání |
|
Parametr je uvedena poznámka musí být ukazatel |
|
Funkce třídy k této funkci neodpovídají funkce třídy na typedef definovat ji používá. |
|
Funkce, které jsou přiřazeny nebo předány by měl mít _Function_class_ poznámku pro nejméně jeden třídy |
|
Ukazatel na funkci mu jsou přiděleny označena funkce třídy, která není obsažena v seznamu funkce třídy. |
|
Typ parametru skutečné by přesně odpovídat typu |
|
Proměnná, která je přístupná prostřednictvím funkce aplikace Interlocked vždy přístupná prostřednictvím funkce aplikace Interlocked. |
|
Přístup k místní proměnné prostřednictvím funkce aplikace Interlocked |
|
Funkce musí být volána z v rámci try / kromě bloku |
|
Proměnná argument měla by být konstanta (literál) |
|
Konstantní argument by měl být namísto proměnné |
|
Zvažte použití jiné funkce. |
|
Chyba poznámek |
|
Funkce by měla být volána z nikdy, v rámci try / kromě bloku |
|
Argument je předáním funkci, která očekává ukazatel na objekt (není ukazatel na ukazatel) |
|
Odkazování ukazatele s hodnotou NULL.Ukazatel obsahuje stejnou hodnotu NULL, stejně jako jiné ukazatele. |
|
Argument nemůže být jednu hodnotu a kopírovat hodnoty naleznete v ukazatel |
|
Proměnná obsahuje hodnotu, která musí být zkontrolován |
|
Požadavek není splněna.(Výraz nelze vyhodnotit na hodnotu true.) |
|
Neplatný odkaz k nestatickému členu |
|
Jednoznačný odkaz na člen třídy. |
|
_Success_ nebo _On_failure_ použit neplatný kontextu |
|
Operand body zleva struktura, použijte '-> " |
|
Levý operand je struktura, použijte '. " |
|
Prohlášení pro symbol má konfliktní prohlášení |
|
Poznámky pro kontext __on_failure nesmí být v kontextu explicitní pre |
|
Název statického kontextu pro SAL_context |
|
Ukazatel výraz pro poznámku |
|
_Use_decl_annotations_ Poznámka musí použít bez úprav, odkaz na předchozí prohlášení. |
|
Názvy atributů parametr musí být p1... p9 |
|
Typefix nelze použít parametr, který již typefix |
|
CheckReturn poznámky platí pouze pro určité funkce parametru postconditions. |
|
Funkci počet parametrů anotace neodpovídá adrese soubor |
|
Pro funkci paramteer na poznámku parametr neodpovídá adrese soubor |
|
Očekávané výčtu poznámky parametr Poznámka |
|
Očekáván výraz celé číslo poznámky parametr v poznámku |
|
Řetězcový výraz očekávání parametru v poznámku |
|
__yes, __no nebo __maybe očekávání pro poznámku |
|
Byl očekáván Token nebo identifikátor nebyla nalezena poznámka, parametr |
|
Vyžaduje parametry |
|
Nenašel správný počet požadovaných parametrů poznámek |
|
Annotation nemůže být PrimOp (v aktuální prohlášení) |
|
Annotation nemůže být PrimOp (viz předchozí prohlášení) |
|
Parametr Poznámka: nelze použít typ poznámky |
|
Poznámky nepodporuje parametry |
|
Žádný člen má typ parametru. |
|
Poznámka je platný pouze v matici |
|
Pre, účtovat nebo deref není použito žádné poznámky |
|
Pre, účtovat nebo deref pro blok |
|
__at výraz se nevztahuje na aktuální funkce |
|
Funkci nelze samostatně jako poznámky |
|
Poznámku nelze použít ve výrazu |
|
Poznámka pro parametr není podporován |
|
Poznámky na parametr má více než jednu hodnotu, String a Long.Pomocí paramn = xxx |
|
Poznámky na parametr má obě hodnoty, String nebo Long; a paramn = xxx.Použít pouze paramn = xxx |
|
Poznámky na parametr má param2, ale žádné param1 |
|
Poznámka pro funkci v parametru nebyl rozpoznán. |
|
Poznámka pro parametr funkce vyžaduje více dereferences než je skutečný typ poznámkami |
|
Poznámka pro funkci má Neanalyzovatelný parametr/externí poznámky |
|
Poznámka pro funkci 'this' zaznamenává na non člen funkce |
|
Anotace parametr pro funkci neodpovídá typu parametru |
|
Nekonzistentní poznámku pro funkci: předchozí instance došlo k chybě. |
|
Nekonzistentní poznámku pro funkci: Tato instance došlo k chybě. |
|
Nekonzistentní poznámku pro funkci: parametr má jiné poznámky v této instanci. |
|
Nekonzistentní poznámku pro funkci: parametr má jiné poznámky v této instanci. |
|
(dynamic_cast < >) nepodporuje poznámky |
|
Chyba syntaxe v poznámku byl nalezen ve funkci poznámky |
|
Chyba syntaxe v podmíněné poznámku pro vnitřní poznámku nebyl nalezen. |
|
Výsledek seznamy hodnot musí být konstanty. |
|
Chyba syntaxe v poznámky byl nalezen poznámky ve funkci. |
|
Poznámka pro funkci parametru při zkoumání je nekonzistentní s deklarace funkce |
|
Funkci záchytné body nejsou konzistentní s deklarace funkce |
|
Parametr _Macro_value_ je null |
|
Pro symbol "begin" byl nalezen bez odpovídající "end. |
|
Pro symbol k ukončení byl nalezen bez odpovídající "begin" |
|
Formát řetězce musí být v předpoklady |
|
Chyba v syntaxi parametru funkci |
|
Funkce Chyba syntaxe poblíž konce |
|
Funkce Chyba syntaxe v _At_() poznámky (název parametru nebyl rozpoznán) |
|
Funkce Chyba syntaxe v _At_() poznámky (název neplatný parametr) |
|
Funkce: ReadableTo nebo WritableTo neměl omezit spec jako parametr |
|
Poznámka pro funkce obsahuje více externích typů než skutečný počet parametrů |
|
Zaúčtovat hodnotu null nebo notnull na deref úrovni 0 je funkce nemá význam. |
|
Operandy nekompatibilní typy pro operátor výraz |
|
První prohlášení funkce žádné poznámky. |
|
Operátor extra _Deref_ byl nalezen na poznámku. |
|
Na poznámku byla nalezena dvojznačná _Deref_ operátor. |
|
Operátor nesprávně umístěné _Notref_ byl nalezen u token. |
|
Byla zjištěna chyba při analýze tokenu. |
|
Poznámky na parametr je obsolescent |
|
Poznámky na parametr je obsolescent |
|
Poznámka popisuje situaci, která není podmíněně použitelná. |
|
Poznámka popisuje, kde dynamická hodnota (proměnná) nelze použít v podmínce. |
|
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 |