Condividi tramite


Set di regole consigliate miste

Il Microsoft Mixed Recommended Rules si incentra sui problemi più comuni e quelli critici dei progetti C++ che supportano Common Language Runtime, incluse potenziali lacune della sicurezza, arresti anomali delle applicazioni e altri errori importanti relativi a logica e progettazione.È necessario includere questo set di regole in ogni set di regole personalizzato, creato per i progetti C++ che supportano Common Language Runtime.Questo set di regole è progettato per essere configurato con l'edizione di Visual Studio Professional e superiori.

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

Terminazione zero mancante

C6059

Concatenazione non valida

C6063

Argomento di tipo stringa mancante per formattare la funzione

C6064

Argomento Intero mancante per formattare la funzione

C6066

Argomento puntatore mancante per formattare la funzione

C6067

Argomento puntatore a 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 di HRESULT a BOOL non valido

C6215

Cast di BOOL a HRESULT non valido

C6216

Cast inserito dal compilatore di BOOL a HRESULT non valido

C6217

Test HRESULT non valido con NOT

C6220

Confronto HRESULT non valido a -1

C6226

Assegnazione HRESULT non valido in -1

C6230

Uso HRESULT non valido come valore booleano

C6235

Costante diversa da zero con un'operazione di OR logico

C6236

Operazione di OR logico con costante diversa da zero

C6237

Zero con operazione di AND logico senza effetti collaterali

C6242

Rimozione locale forzata

C6248

Creazione di DACL null

C6250

Descrittori di indirizzo non rilasciati

C6255

Uso di allocazione non protetto

C6258

Uso thread di terminazione

C6259

Codice non utilizzato in opzione limitata Bitwise-OR

C6260

Uso dell'aritmetica di byte

C6262

Utilizzo eccessivo dello stack

C6263

Uso di allocazione in ciclo

C6268

Parentesi mancanti nel cast

C6269

Dereferenziazione del puntatore ignorata

C6270

Argomento Float mancante per formattare la funzione

C6271

Argomento aggiuntivo per formattare la funzione

C6272

Argomento non di tipo float per formattare funzione

C6273

Argomento non Integer per formattare la funzione

C6274

Argomento non di tipo Carattere per formattare la funzione

C6276

Cast della stringa non valido

C6277

Chiamata CreateProcess non valida

C6278

Array-New Scalar-Delete non corrispondenti

C6279

Scalar-New Array-Delete non corrispondenti

C6280

Allocazione/deallocazione memoria non corrispondenti

C6281

Precedenza relazione bit per bit

C6282

L'assegnazione sostituisce il test

C6283

Array-new scalar-delete primitivi non corrispondenti

C6284

Argomento oggetto non valido per formattare la funzione

C6285

Operazione di OR logico di costanti

C6286

Operazione di OR logico non zero con perdita di effetti collaterali

C6287

Test ridondante

C6288

L'inclusione reciproca su AND logico è false

C6289

L'esclusione reciproca su OR logico è true

C6290

Precedenza Logical-Not Bitwise-And

C6291

Precedenza Logical-Not Bitwise-Or

C6292

Conteggi cicli dal massimo

C6293

Conteggi cicli dal minimo

C6294

Corpo del ciclo mai eseguito

C6295

Ciclo infinito

C6296

Ciclo eseguito solo una volta

C6297

Risultato Cast operatore Shift a dimensione maggiore

C6299

Confronto da campo di bit a booleano

C6302

Argomento stringa di caratteri non valido per formattare la funzione

C6303

Argomento non valido per una stringa con caratteri estesi per formattare la funzione

C6305

Utilizzo non corrispondente di conteggio e di dimensione

C6306

Chiamata di funzione dell'argomento variabile non corretto

C6308

Perdita di riallocazione

C6310

Costante filtro eccezioni non valida

C6312

L'eccezione continua il ciclo di esecuzione

C6314

Precedenza Bitwise-Or

C6317

Complemento non Not

C6318

L'eccezione continua la ricerca

C6319

Ignorato da virgola

C6324

Copia la stringa invece di confrontare la stringa

C6328

Tipo argomento potenzialmente non corrispondente

C6331

Flag VirtualFree non validi

C6332

Parametro VirtualFree non valido

C6333

Dimensioni VirtualFree non valide

C6335

Perdite handle di processo

C6381

Informazioni di arresto mancanti

C6383

Sovraccarico del buffer del conteggio elementi e conteggio byte

C6384

Divisione dimensioni puntatore

C6385

Sovraccarico di lettura

C6386

Sovraccarico di scrittura

C6387

Valore del parametro non valido

C6388

Valore del parametro non valido

C6500

Proprietà di attributo non valida

C6501

Valori delle proprietà di attributo in conflitto

C6503

Riferimenti non possono essere null.

C6504

Null su tipo non Puntatore

C6505

MustCheck su void

C6506

Dimensione del buffer non su tipo Puntatore o Vettore

C6507

Mancata corrispondenza di Null in dereferenza a zero

C6508

Accesso alla costante in scrittura

C6509

Ritorno utilizzato in precondizione

C6510

Null terminato su non puntatore

C6511

MustCheck deve essere Yes o No

C6513

Dimensione elemento senza dimensioni del buffer

C6514

Le dimensioni del buffer superano le dimensioni dell'array

C6515

Dimensione del buffer su Non Puntatore

C6516

Nessuna proprietà sull'attributo

C6517

Dimensione valida nel buffer non leggibile

C6518

Dimensioni scrivibili su buffer non scrivibile

C6519

Annotazione non valida: il valore della proprietà 'NeedsRelease' deve essere Yes o No.

C6521

Risoluzione di un riferimento non valida della stringa di dimensione

C6522

Tipo della dimensione della stringa non valido

C6523

Parametro della dimensione della stringa non valido

C6525

Percoso della dimensione della stringa irraggiungibile

C6526

Tipo della dimensione del buffer della stringa non valido

C6527

Annotazione non valida: la proprietà 'NeedsRelease' non può essere utilizzata con valori di tipo void.

C6530

Stile formato stringa non riconosciuto

C6540

L'utilizzo delle annotazioni di attributo in questa funzione invalida tutte le relative annotazioni __declspec esistenti.

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 è una stringa.

C6703

Il valore non è un numero.

C6704

Errore imprevisto di espressione di annotazione:

C6705

Il numero degli argomenti previsto per l'annotazione non corrisponde all'effettivo numero 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

Impossibile utilizzare correttamente l'operazione con interlock

C26110

Il chiamante non riesce a mantenere il blocco

C26111

Il chiamante non riesce a rilasciare il blocco

C26112

Il chiamante non è in grado di mantenere blocchi

C26115

Impossibile rilasciare il blocco

C26116

Impossibile acquisire o mantenere il blocco

C26117

Rilascio blocco non mantenuto

C26140

Errore di annotazione di concorrenza SAL

C28020

L'espressione non è true per questa chiamata

C28021

Il parametro che viene annotato deve essere un puntatore

C28022

Le classi di funzioni in questa funzione non corrispondono alle classi di funzioni del typedef utilizzato per definirla.

C28023

La funzione assegnata o passata deve disporre di un'annotazione di _Function_class_ per almeno una classe

C28024

Il puntatore a funzione assegnato è annotato con la classe di funzioni, non contenuta nell'elenco delle classi di funzioni.

C28039

Il tipo di parametro effettivo deve corrispondere esattamente al tipo

C28112

Se una variabile è accessibile mediante una funzione Interlocked, sarà necessario accedervi sempre mediante tale tipo di funzione.

C28113

Accedere a una variabile locale tramite una funzione Interlocked

C28125

La funzione deve essere chiamata da un blocco try/except

C28137

L'argomento della variabile deve essere una costante (letterale).

C28138

L'argomento della costante deve essere variabile.

C28159

Considerare l'utilizzo di un'altra funzione.

C28160

Error, annotazione

C28163

La funzione non deve mai essere chiamata da un blocco try/except

C28164

L'argomento viene passato ad una funzione per cui è atteso un puntatore ad un oggetto (non a un altro puntatore).

C28182

Deferenziazione del puntatore NULL.Il puntatore contiene lo stesso valore null come su un altro puntatore.

C28183

L'argomento può essere un valore e una copia del valore trovato nel puntatore

C28193

La variabile contiene un valore che deve essere esaminato

C28196

Il requisito non viene soddisfatto.(L'espressione non è stata valutata vera.)

C28202

Riferimento non valido al membro non statico.

C28203

Riferimento ambiguo al membro di classe.

C28205

_Success_ or _On_failure_ utilizzato in un contesto non valido

C28206

L'operando sinistro punta a uno struct. Utilizzare '->'.

C28207

L'operando sinistro è uno struct. Utilizzare '.'

C28209

La dichiarazione del simbolo dispone di una dichiarazione in conflitto

C28210

Le annotazioni per il contesto __on_failure non devono trovarsi in un pre-contesto esplicito:

C28211

Nome di contesto statico previsto per SAL_context

C28212

Espressione del puntatore prevista per l'annotazione

C28213

L'annotazione _Use_decl_annotations_ deve essere utilizzata per fare riferimento, senza alcuna modifica, 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 di checkReturn viene applicata solo alle post-condizioni per il parametro di funzione specifico.

C28217

Per la funzione il numero di parametri per l'annotazione non corrisponde con quello trovato nel file

C28218

Per il parametro della funzione, il parametro di annotazione non corrisponde a quello trovato sul file

C28219

Membro di enumerazione previsto per l'annotazione del parametro nell'annotazione

C28220

Espressione intera prevista per annotare il parametro nell'annotazione

C28221

Espressione stringa prevista per il parametro nell'annotazione

C28222

Previsto __yes, __no, o __maybe per l'annotazione

C28223

Impossibile trovare parametro Token o identificatore previsto per l'annotazione

C28224

L'annotazione richiede parametri.

C28225

Non è stato trovato il numero corretto di parametri necessari nell'annotazione

C28226

L'annotazione non può essere anche un PrimOp (nella dichiarazione corrente).

C28227

L'annotazione non può essere anche un PrimOp (vedere la dichiarazione precedente).

C28228

Parametro di annotazioni: impossibile utilizzare il tipo nelle annotazioni

C28229

L'annotazione non supporta parametri.

C28230

Il tipo del parametro non include membri.

C28231

L'annotazione è valida soltanto su array

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

L'annotazione non può essere utilizzata in un'espressione.

C28237

L'annotazione sul parametro non è più supportata

C28238

L'annotazione sul parametro presenta più di un valore, stringValue e longValue.Utilizzare paramn=xxx

C28239

L'annotazione sul parametro presenta sia stringValue, o longValue, che paramn=xxx.Utilizzare solo paramn=xxx

C28240

L'annotazione sul parametro presenta param2 ma nessun param1.

C28241

L'annotazione per la funzione sul parametro non è riconosciuto

C28243

L'annotazione per la funzione sul parametro richiede più dereferenziazioni di quante ne siano consentite dall'effettivo tipo annotato

C28244

L'annotazione per la funzione presenta un parametro o annotazione esterna non analizzabile.

C28245

L'annotazione per la funzione annota 'this' in una funzione non membro.

C28246

Il parametro dell'annotazione per la funzione non corrisponde al tipo del parametro.

C28250

Annotazione non coerente per la funzione: l'istanza precedente ha un errore.

C28251

Annotazione non coerente per la funzione: questa istanza ha un errore.

C28252

Annotazione non coerente per la funzione: il parametro include altre annotazioni in questa istanza.

C28253

Annotazione non coerente per la funzione: il parametro include altre annotazioni in questa istanza.

C28254

dynamic_cast() non è supportato nelle annotazioni.

C28262

Errore di sintassi nell'annotazione rilevato nella funzione per l'annotazione

C28263

Errore di sintassi in un'annotazione condizionale rilevato per l'annotazione intrinseca

C28264

I valori dell'elenco dei risultati devono essere costanti.

C28267

Errore di sintassi nell'annotazione rilevato nella funzione per l'annotazione

C28272

L'annotazione per la funzione, il parametro durante l'analisi non è coerente con la dichiarazione della funzione.

C28273

Per la funzione, le tracce non sono coerenti con la dichiarazione della funzione.

C28275

Il parametro per _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 presenti nelle precondizioni

C28285

Per la funzione, errore di sintassi nel parametro

C28286

Per la funzione, errore di sintassi nei pressi della 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 dispone 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

Nessun annotazione per la prima dichiarazione di funzione.

C28302

Un operatore aggiuntivo di _Deref_ è stato rilevato nell'annotazione.

C28303

Un operatore ambiguo di _Deref_ è stato trovato nell'annotazione.

C28304

Un operatore _Notref_ non correttamente posizionato è stato trovato applicato al token.

C28305

E' stato individuato un errore durante l'analisi di un token.

C28306

L'annotazione nel parametro è obsoleta

C28307

L'annotazione nel parametro è obsoleta

C28350

L'annotazione descrive una situazione non applicabile in modo condizionale.

C28351

L'annotazione descrive dove non è possibile utilizzare un valore dinamico (variabile) nella condizione.

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 i 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 l'eventuale vulnerabilità di sicurezza delle 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 non possono partecipare all'equivalenza del tipo

CA2132

I costruttori predefiniti devono essere Critical almeno come i costruttori predefiniti del tipo base

CA2133

Delegati devono essere associati ai metodi con trasparenza consistente

CA2134

I metodi devono conservare 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 i LinkDemand

CA2146

I tipi devono essere Critical almeno come le interfacce e i tipi base relativi

CA2147

I metodi Transparent non possono utilizzare asserzioni di sicurezza

CA2149

I metodi Transparent non devono effettuare chiamate nel codice nativo

CA2200

Eseguire il rethrow per conservare i dettagli dello stack

CA2202

Non eliminare oggetti più volte

CA2207

Inizializzare i campi statici dei tipi di valore inline

CA2212

Non contrassegnare componenti serviti con WebMethod

CA2213

I campi Disposable devono essere eliminati

CA2214

Non chiamare metodi sottoponibili a override nei costruttori

CA2216

I tipi Disposable devono dichiarare un finalizzatore

CA2220

I finalizzatori devono chiamare il finalizzatore della classe 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 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

Fornire argomenti corretti ai metodi di formattazione

CA2242

Testare i valori NaN in modo corretto