Condividi tramite


Set di regole consigliate miste

Le regole consigliate microsoft miste si concentrano sui problemi più comuni e critici nei progetti C++ che supportano Common Language Runtime, inclusi potenziali problemi di sicurezza, arresti anomali dell'applicazione e altri importanti errori di logica e progettazione. Questo set di regole include tutte le regole nel set di regole minime miste.

Includere questo set di regole in qualsiasi set di regole personalizzato creato per i progetti C++ che supportano Common Language Runtime.

Regola Descrizione
C6001 Utilizzo di memoria non inizializzata
C6011 Dereferenziazione del puntatore Null
C6029 Utilizzo del valore non verificato
C6031 Valore restituito ignorato
C6053 Terminazione zero da chiamata
C6054 Nessuna terminazione mancante
C6059 Concatenazione non valida
C6063 Argomento stringa mancante per formattare la funzione
C6064 Argomento Integer mancante per formattare la funzione
C6066 Argomento puntatore mancante per formattare la funzione
C6067 Argomento puntatore stringa mancante per formattare la funzione
C6101 Restituzione di memoria non inizializzata
C6200 L'indice supera il limite massimo del buffer
C6201 L'indice supera il limite massimo del buffer di stack
C6214 Cast HRESULT non valido in BOOL
C6215 Cast BOOL non valido in HRESULT
C6216 Cast BOOL non valido inserito dal compilatore in HRESULT
C6217 Test HRESULT non valido con NOT
C6220 HRESULT non valido confronto con -1
C6226 Assegnazione HRESULT non valida a -1
C6230 Utilizzo HRESULT non valido come valore booleano
C6235 Costante non zero con logica o
C6236 Logico o con costante non zero
C6237 Zero con effetti collaterali logici e perde
C6242 Rimozione locale forzata
C6248 Creazione di DACL Null
C6250 Descrittori di indirizzi non rilasciati
C6255 Uso non protetto di Alloca
C6258 Uso del thread terminate
C6259 Codice inattivo in commutatore bit per bit o limitato
C6260 Uso dell'aritmetica dei byte
C6262 Utilizzo eccessivo dello stack
C6263 Uso del ciclo Alloca in
C6268 Parentesi mancanti nel cast
C6269 Dereferenziazione puntatore ignorata
C6270 Argomento Float mancante per formattare la funzione
C6271 Argomento aggiuntivo per formattare la funzione
C6272 Argomento non Float per formattare la funzione
C6273 Argomento non Integer per formattare la funzione
C6274 Argomento non Character per formattare la funzione
C6276 Cast stringa non valido
C6277 Chiamata CreateProcess non valida
C6278 Nuova mancata corrispondenza dell'eliminazione scalare-nuova
C6279 Mancata corrispondenza di Scalar-New Array-Delete
C6280 Mancata corrispondenza allocazione memoria-deallocazione
C6281 Precedenza relazione bit per bit
C6282 Assegnazione sostituisce il test
C6283 Matrice primitiva- Nuova mancata corrispondenza di eliminazione scalare
C6284 Argomento di oggetto non valido per formattare la funzione
C6285 Costanti logical-or of
C6286 Effetti collaterali non zero logici o persi
C6287 Test ridondante
C6288 Inclusione reciproca su logica e false
C6289 Esclusione reciproca su logica o true
C6290 Precedenza Logical-Not Bitwise-And
C6291 Precedenza Logical-Not Bitwise-Or
C6292 Numero di cicli fino al massimo
C6293 Il conteggio dei cicli viene ridotto dal minimo
C6294 Corpo del ciclo mai eseguito
C6295 Ciclo infinito
C6296 Ciclo eseguito una sola volta
C6297 Risultato del cast di spostamento a dimensioni maggiori
C6299 Confronto tra bitfield e booleano
C6302 Argomento stringa di caratteri non valido per formattare la funzione
C6303 Argomento stringa di caratteri wide non valido per formattare la funzione
C6305 Uso dimensione e conteggio non corrispondente
C6306 Chiamata di funzione dell'argomento variabile non corretto
C6308 Perdita di riallocazione
C6310 Costante filtro eccezioni non valide
C6312 Ciclo di esecuzione continuazione eccezioni
C6314 Precedenza bit per bit
C6317 Non complemento
C6318 Ricerca continuazione eccezioni
C6319 Ignorato da virgola
C6324 Copia di stringhe anziché confronto tra stringhe
C6328 Tipo argomento potenzialmente non corrispondente
C6331 Flag virtualfree non validi
C6332 Parametro VirtualFree non valido
C6333 Dimensioni non valide virtualfree
C6335 Handle del processo di perdita
C6381 Informazioni di arresto mancanti
C6383 Sovraccarico del buffer dei byte conteggi degli elementi
C6384 Divisione dimensioni puntatore
C6385 Overrun di lettura
C6386 Overrun di scrittura
C6387 Valore parametro non valido
C6388 Valore parametro non valido
C6500 Proprietà attributo non valido
C6501 Conflitto valori di proprietà attributo
C6503 I riferimenti non possono essere Null
C6504 Null su non puntatore
C6505 MustCheck su nullo
C6506 Dimensioni buffer su non puntatore o matrice
C6508 Accesso in scrittura a costante
C6509 Restituzione utilizzati in precondizione
C6510 Null terminato su non puntatore
C6511 MustCheck deve essere Yes o No
C6513 Dimensioni elemento senza dimensione buffer
C6514 Le dimensioni del buffer superano le dimensioni della matrice
C6515 Dimensioni buffer su non puntatore
C6516 Nessuna proprietà su attributo
C6517 Dimensioni valide su buffer non leggibile
C6518 Dimensioni scrivibili su buffer non scrivibile
C6522 Tipo stringa dimensioni non valida
C6525 Percorso irraggiungibile stringa dimensioni non valida
C6527 Annotazione non valida: la proprietà 'NeedsRelease' non può essere utilizzata con valori di tipo void
C6530 Stile stringa formato non riconosciuto
C6540 L'utilizzo delle annotazioni di attributo in questa funzione invalida tutte le relative annotazioni __declspec
C6551 Specifica di dimensione non valida: espressione non analizzabile
C6552 Deref= o Notref= non valido: espressione non analizzabile
C6701 Il valore non è un valore Yes/No/Maybe valido
C6702 Il valore non è un valore stringa
C6703 Il valore non è un numero
C6704 Errore imprevisto dell'espressione dell'annotazione
C6705 Numero previsto di argomenti per l'annotazione non corrispondente al numero effettivo di argomenti per l'annotazione
C6706 Errore di annotazione imprevisto per l'annotazione
C6995 Impossibile salvare il file di log XML
C26100 Race condition
C26101 Non è possibile usare correttamente l'operazione interlocked
C26110 Il chiamante non riesce a bloccare il blocco
C26111 Il chiamante non riesce a rilasciare il blocco
C26112 Il chiamante non può contenere alcun blocco
C26115 Non è possibile rilasciare il blocco
C26116 Mancata acquisizione o blocco
C26117 Rilascio di un blocco non bloccato
C26140 Errore di annotazione SAL di concorrenza
C28020 L'espressione non è true in questa chiamata
C28021 Il parametro annotato deve essere un puntatore
C28022 La classe di funzione (es) in questa funzione non corrisponde alla classe della funzione (es) nel typedef usato per definirlo.
C28023 La funzione assegnata o passata deve avere un'annotazione _Function_class_ per almeno una delle classi
C28024 Il puntatore a funzione assegnato a viene annotato con la classe funzione, che non è contenuta nell'elenco di classi di funzione.
C28039 Il tipo di parametro effettivo deve corrispondere esattamente al tipo
C28112 È necessario accedere a una variabile a cui si accede tramite una funzione interlocked tramite una funzione interlocked.
C28113 Accesso a una variabile locale tramite una funzione interlocked
C28125 La funzione deve essere chiamata dall'interno di un blocco try/except
C28137 L'argomento variabile deve essere invece una costante (letterale)
C28138 L'argomento costante deve essere invece variabile
C28159 Prendere invece in considerazione l'uso di un'altra funzione.
C28160 Error (annotazione)
C28163 La funzione non deve mai essere chiamata dall'interno di un blocco try/except
C28164 L'argomento viene passato a una funzione che prevede un puntatore a un oggetto (non un puntatore a un puntatore)
C28182 Deferenziazione del puntatore NULL. Il puntatore contiene lo stesso valore NULL contenuto in un altro puntatore.
C28183 L'argomento può essere un valore ed è una copia del valore trovato nel puntatore
C28193 La variabile contiene un valore che deve essere esaminato
C28196 Il requisito non è soddisfatto. L'espressione non restituisce true.
C28202 Riferimento non valido a membro non statico
C28203 Riferimento ambiguo al membro di classe.
C28205 _Success_ o _On_failure_ utilizzato in un contesto non valido
C28206 L'operando sinistro punta a uno struct, usare '->'
C28207 L'operando sinistro è uno struct. Utilizzare '.'
C28209 La dichiarazione per il simbolo ha una dichiarazione in conflitto
C28210 Impossibile definire le annotazioni per il contesto __On_failure in un precontesto esplicito
C28211 Previsto nome contesto statico per SAL_context
C28212 Prevista espressione del puntatore per l'annotazione
C28213 L'annotazione _Use_decl_annotations_ deve essere utilizzata per fare riferimento, senza modifiche, a una dichiarazione precedente.
C28214 I nomi di parametro di attributo devono essere p1...p9
C28215 Impossibile applicare typefix a un parametro che già dispone di un typefix
C28216 L'annotazione checkReturn si applica soltanto a postcondizioni per il parametro di funzione specifico.
C28217 Per la funzione, il numero di parametri per l'annotazione non corrisponde a quello trovato nel file
C28218 Per il parametro della funzione, il parametro dell'annotazione non corrisponde a quello trovato nel file
C28219 Membro di enumerazione previsto per l'annotazione del parametro nell'annotazione
C28220 Espressione integer prevista per l'annotazione del parametro nell'annotazione
C28221 Prevista espressione di tipo String per il parametro nell'annotazione
C28222 __yes, __no o __maybe previsto per l'annotazione
C28223 Token o identificatore previsto mancante per l'annotazione, parametro
C28224 L'annotazione richiede parametri
C28225 Numero non corretto di parametri necessari nell'annotazione
C28226 L'annotazione non può essere anche PrimOp nella dichiarazione corrente
C28227 L'annotazione non può essere anche PrimOp nella dichiarazione precedente
C28228 Parametro di annotazione: Impossibile utilizzare il tipo nelle annotazioni
C28229 L'annotazione non supporta parametri
C28230 Il tipo di parametro non ha membro.
C28231 L'annotazione è valida solo in una matrice
C28232 Pre, post o deref non applicato ad alcuna annotazione
C28233 Pre, post o deref applicato a un blocco
C28234 L'espressione __At non si applica alla funzione corrente
C28235 La funzione non può fungere autonomamente da annotazione
C28236 Impossibile utilizzare l'annotazione in un'espressione
C28237 L'annotazione nel parametro non è più supportata
C28238 L'annotazione nel parametro presenta più di un valore, stringValue e longValue. Utilizzare paramn=xxx
C28239 L'annotazione nel parametro presenta sia stringValue, o longValue, che paramn=xxx. Utilizzare solo paramn=xxx
C28240 L'annotazione nel parametro presenta param2 ma nessun param1
C28241 Annotazione per la funzione nel parametro non riconosciuta
C28243 L'annotazione per la funzione nel parametro richiede più dereferenziazioni di quante ne siano consentite dal tipo annotato effettivo
C28244 L'annotazione per la funzione ha un parametro non verificabile/annotazione esterna
C28245 L'annotazione per la funzione annota 'this' in una funzione non membro
C28246 Nell'annotazione per la funzione, il parametro non corrisponde al tipo del parametro
C28250 Annotazione incoerente per la funzione: errore dell'istanza precedente.
C28251 Annotazione incoerente per la funzione: errore dell'istanza.
C28252 Annotazione incoerente per la funzione: il parametro presenta altre annotazioni su questa istanza.
C28253 Annotazione incoerente per la funzione: il parametro presenta altre annotazioni su questa istanza.
C28254 <>dynamic_cast() non è supportato nelle annotazioni
C28262 Errore di sintassi dell'annotazione rilevato nella funzione per l'annotazione
C28263 Errore di sintassi nell'annotazione condizionale rilevato nell'oggetto annotazione intrinseco
C28267 Errore di sintassi dell'annotazione rilevato nella funzione per l'annotazione.
C28272 L'annotazione per la funzione, parametro, durante l'analisi non è coerente con la dichiarazione della funzione
C28273 Per la funzione, le informazioni non sono coerenti con la dichiarazione della funzione
C28275 Il parametro da _Macro_value_ è null
C28279 Per il simbolo è stato trovato un 'begin' senza il corrispondente 'end'
C28280 Per il simbolo, è stato trovato un 'end' senza un 'begin' corrispondente
C28282 Le stringhe di formato devono essere nelle precondizioni
C28285 Per la funzione, errore di sintassi nel parametro
C28286 Per la funzione, errore di sintassi vicino alla fine
C28287 Per la funzione, errore di sintassi nell'annotazione _At_() (nome parametro non riconosciuto)
C28288 Per la funzione, errore di sintassi nell'annotazione _At_() (nome parametro non valido)
C28289 Per la funzione: ReadableTo o WritableTo non disponeva di limit-spec come parametro
C28290 L'annotazione per la funzione contiene un numero di riferimenti esterni maggiore del numero di parametri effettivi
C28291 Il post null/notnull al livello deref 0 è privo di significato per la funzione.
C28300 Operandi dell'espressione di tipi incompatibili per l'operatore
C28301 Nessuna annotazione per la prima dichiarazione di funzione.
C28302 È stato trovato un operatore _Deref_ aggiuntivo nell'annotazione.
C28303 È stato trovato un operatore _Deref_ ambiguo nell'annotazione.
C28304 È stato trovato un operatore _Notref_ posizionato in modo non corretto al token.
C28305 È stato individuato un errore durante l'analisi di un token.
C28306 L'annotazione sul parametro è obsolescente
C28307 L'annotazione sul parametro è obsolescente
C28350 L'annotazione descrive una situazione non applicabile in modo condizionale.
C28351 L'annotazione descrive la posizione nella condizione in cui non è possibile utilizzare un valore dinamico (variabile).
CA1001 I tipi proprietari di campi Disposable devono essere Disposable
CA1009 Dichiarare correttamente i gestori eventi
CA1016 Contrassegnare gli assembly con AssemblyVersionAttribute
CA1033 I metodi di interfaccia devono essere richiamabili dai tipi figlio
CA1049 I tipi delle risorse native devono essere disposable
CA1060 Spostare P/Invoke nella classe NativeMethods
CA1061 Non nascondere i metodi di una classe base
CA1063 Implementare IDisposable correttamente
CA1065 Non generare eccezioni in posizioni non previste
CA1301 Evitare tasti di scelta rapida duplicati
CA1400 I punti di ingresso P/Invoke devono esistere
CA1401 I P/Invoke non devono essere visibili
CA1403 I tipi layout automatici non devono essere visibili a COM
CA1404 Chiamare GetLastError immediatamente dopo P/Invoke
CA1405 I tipi di base del tipo visibile a COM devono essere visibili a COM
CA1410 I metodi di registrazione COM devono corrispondere
CA1415 Dichiarare correttamente i P/Invoke
CA1821 Rimuovere i finalizzatori vuoti
CA1900 I campi dei tipi di valore devono essere portabili
CA1901 Le dichiarazioni P/Invoke devono essere portabili
CA2002 Non bloccare oggetti con identità debole
CA2100 Controllare la vulnerabilità della sicurezza nelle query SQL
CA2101 Specificare il marshalling per gli argomenti di stringa P/Invoke
CA2108 Controllare la sicurezza dichiarativa sui tipi di valori
CA2111 I puntatori non devono essere visibili
CA2112 I tipi protetti non devono esporre campi
CA2114 La sicurezza del metodo deve essere un superset del tipo
CA2116 I metodi APTCA devono chiamare solo metodi APTCA
CA2117 I tipi APTCA devono estendere solo tipi di base APTCA
CA2122 Non esporre in modo indiretto metodi con richieste di collegamento
CA2123 Le richieste di collegamento negli override devono essere identiche a quelle nei metodi di base
CA2124 Eseguire il wrapping delle clausole finally vulnerabili in un try esterno
CA2126 Per le richieste di collegamento dei tipi sono necessarie richieste di ereditarietà
CA2131 I tipi SecurityCritical possono non partecipare all'equivalenza del tipo
CA2132 I costruttori predefiniti devono essere Critical almeno come i costruttori predefiniti del tipo base
CA2133 I delegati devono essere associati ai metodi con trasparenza consistente
CA2134 I metodi devono mantenere trasparenza consistente durante l'override dei metodi base
CA2137 I metodi Transparent devono contenere solo IL verificabile
CA2138 I metodi Transparent non devono chiamare i metodi con l'attributo SuppressUnmanagedCodeSecurity
CA2140 Il codice Transparent non deve far riferimento a elementi SecurityCritical
CA2141 I metodi Transparent non devono soddisfare LinkDemands
CA2146 I tipi devono essere Critical almeno come le interfacce e i tipi base relativi
CA2147 I metodi Transparent non possono usare asserzioni di sicurezza
CA2149 I metodi Transparent non devono effettuare chiamate nel codice nativo
CA2200 Eseguire il rethrow per mantenere i dettagli dello stack
CA2202 Non eliminare gli oggetti più volte
CA2207 Inizializzare i campi statici dei tipi di valore inline
CA2212 Non contrassegnare componenti serviti con WebMethod
CA2213 I campi eliminabili devono essere eliminati
CA2214 Non chiamare metodi sottoponibili a override nei costruttori
CA2216 I tipi eliminabili devono dichiarare un finalizzatore
CA2220 I finalizzatori devono chiamare il finalizzatore della classe di base
CA2229 Implementare costruttori di serializzazione
CA2231 Eseguire l'overload dell'operatore "uguale a" all'override di ValueType.Equals
CA2232 Contrassegnare i punti di ingresso del Windows Form con STAThread
CA2235 Contrassegnare tutti i campi non serializzabili
CA2236 Chiamare metodi della classe di base su tipi ISerializable
CA2237 Contrassegnare i tipi ISerializable con SerializableAttribute
CA2238 Implementare correttamente i metodi di serializzazione
CA2240 Implementare ISerializable in modo corretto
CA2241 Specificare argomenti corretti ai metodi di formattazione
CA2242 Testare i valori NaN in modo corretto