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 |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per