Set di regole consigliate native
Le regole Native Recommended Rules sono incentrate sui problemi più critici e comuni nel codice nativo, incluse eventuali lacune della sicurezza e arresti anomali delle applicazioni.È necessario includere questo set di regole in ogni set di regole personalizzato, creato per i progetti nativi.Questo set di regole è progettato per funzionare con l'edizione di Visual Studio Professional e superiori.
Regola |
Descrizione |
---|---|
Utilizzo di memoria non inizializzata. |
|
Dereferenziazione del puntatore NULL. |
|
Utilizzo del valore non verificato. |
|
Valore restituito ignorato |
|
Terminazione zero da chiamata |
|
Terminazione zero mancante |
|
Concatenazione non valida |
|
Argomento di tipo stringa mancante per formattare la funzione |
|
Argomento Intero mancante per formattare la funzione |
|
Argomento puntatore mancante per formattare la funzione |
|
Argomento puntatore a stringa mancante per formattare la funzione |
|
Restituzione di memoria non inizializzata |
|
L'indice supera il limite massimo del buffer |
|
L'indice supera il limite massimo del buffer di stack |
|
Cast di HRESULT a BOOL non valido |
|
Cast di BOOL a HRESULT non valido |
|
Cast inserito dal compilatore di BOOL a HRESULT non valido |
|
Test HRESULT non valido con NOT |
|
Confronto HRESULT non valido a -1 |
|
Assegnazione HRESULT non valido in -1 |
|
Uso HRESULT non valido come valore booleano |
|
Costante diversa da zero con un'operazione di OR logico |
|
Operazione di OR logico con costante diversa da zero |
|
Zero con operazione di AND logico senza effetti collaterali |
|
Rimozione locale forzata |
|
Creazione di DACL null |
|
Descrittori di indirizzo non rilasciati |
|
Uso di allocazione non protetto |
|
Uso thread di terminazione |
|
Codice non utilizzato in opzione limitata Bitwise-OR |
|
Uso dell'aritmetica di byte |
|
Utilizzo eccessivo dello stack |
|
Uso di allocazione in ciclo |
|
Parentesi mancanti nel cast |
|
Dereferenziazione del puntatore ignorata |
|
Argomento Float mancante per formattare la funzione |
|
Argomento aggiuntivo per formattare la funzione |
|
Argomento non di tipo float per formattare funzione |
|
Argomento non Integer per formattare la funzione |
|
Argomento non di tipo Carattere per formattare la funzione |
|
Cast della stringa non valido |
|
Chiamata CreateProcess non valida |
|
Array-New Scalar-Delete non corrispondenti |
|
Scalar-New Array-Delete non corrispondenti |
|
Allocazione/deallocazione memoria non corrispondenti |
|
Precedenza relazione bit per bit |
|
L'assegnazione sostituisce il test |
|
Array-new scalar-delete primitivi non corrispondenti |
|
Argomento oggetto non valido per formattare la funzione |
|
Operazione di OR logico di costanti |
|
Operazione di OR logico non zero con perdita di effetti collaterali |
|
Test ridondante |
|
L'inclusione reciproca su AND logico è false |
|
L'esclusione reciproca su OR logico è true |
|
Precedenza Logical-Not Bitwise-And |
|
Precedenza Logical-Not Bitwise-Or |
|
Conteggi cicli dal massimo |
|
Conteggi cicli dal minimo |
|
Corpo del ciclo mai eseguito |
|
Ciclo infinito |
|
Ciclo eseguito solo una volta |
|
Risultato Cast operatore Shift a dimensione maggiore |
|
Confronto da campo di bit a booleano |
|
Argomento stringa di caratteri non valido per formattare la funzione |
|
Argomento non valido per una stringa con caratteri estesi per formattare la funzione |
|
Utilizzo non corrispondente di conteggio e di dimensione |
|
Chiamata di funzione dell'argomento variabile non corretto |
|
Perdita di riallocazione |
|
Costante filtro eccezioni non valida |
|
L'eccezione continua il ciclo di esecuzione |
|
Precedenza Bitwise-Or |
|
Complemento non Not |
|
L'eccezione continua la ricerca |
|
Ignorato da virgola |
|
Copia la stringa invece di confrontare la stringa |
|
Tipo argomento potenzialmente non corrispondente |
|
Flag VirtualFree non validi |
|
Parametro VirtualFree non valido |
|
Dimensioni VirtualFree non valide |
|
Perdite handle di processo |
|
Informazioni di arresto mancanti |
|
Sovraccarico del buffer del conteggio elementi e conteggio byte |
|
Divisione dimensioni puntatore |
|
Sovraccarico di lettura |
|
Sovraccarico di scrittura |
|
Valore del parametro non valido |
|
Valore del parametro non valido |
|
Proprietà di attributo non valida |
|
Valori delle proprietà di attributo in conflitto |
|
Riferimenti non possono essere null. |
|
Null su tipo non Puntatore |
|
MustCheck su void |
|
Dimensione del buffer non su tipo Puntatore o Vettore |
|
Mancata corrispondenza di Null in dereferenza a zero |
|
Accesso alla costante in scrittura |
|
Ritorno utilizzato in precondizione |
|
Null terminato su non puntatore |
|
MustCheck deve essere Yes o No |
|
Dimensione elemento senza dimensioni del buffer |
|
Le dimensioni del buffer superano le dimensioni dell'array |
|
Dimensione del buffer su Non Puntatore |
|
Nessuna proprietà sull'attributo |
|
Dimensione valida nel buffer non leggibile |
|
Dimensioni scrivibili su buffer non scrivibile |
|
Annotazione non valida: il valore della proprietà 'NeedsRelease' deve essere Yes o No. |
|
Risoluzione di un riferimento non valida della stringa di dimensione |
|
Tipo della dimensione della stringa non valido |
|
Parametro della dimensione della stringa non valido |
|
Percorso della dimensione della stringa irraggiungibile |
|
Tipo della dimensione del buffer della stringa non valido |
|
Annotazione non valida: la proprietà 'NeedsRelease' non può essere utilizzata con valori di tipo void. |
|
Stile formato stringa non riconosciuto |
|
L'utilizzo delle annotazioni di attributo in questa funzione invalida tutte le relative annotazioni __declspec esistenti. |
|
Specifica di dimensione non valida: espressione non analizzabile |
|
Deref= o Notref= non valido : espressione non analizzabile |
|
Il valore non è un valore Yes/No/Maybe valido: |
|
Il valore non è una stringa. |
|
Il valore non è un numero. |
|
Errore imprevisto di espressione di annotazione: |
|
Il numero degli argomenti previsto per l'annotazione non corrisponde all'effettivo numero di argomenti per l'annotazione |
|
Errore di annotazione imprevisto per l'annotazione |
|
Impossibile salvare il file di log XML. |
|
Race condition |
|
Impossibile utilizzare correttamente l'operazione con interlock |
|
Il chiamante non riesce a mantenere il blocco |
|
Il chiamante non riesce a rilasciare il blocco |
|
Il chiamante non è in grado di mantenere blocchi |
|
Impossibile rilasciare il blocco |
|
Impossibile acquisire o mantenere il blocco |
|
Rilascio blocco non mantenuto |
|
Errore di annotazione di concorrenza SAL |
|
L'espressione non è true per questa chiamata |
|
Il parametro che viene annotato deve essere un puntatore |
|
Le classi di funzioni in questa funzione non corrispondono alle classi di funzioni del typedef utilizzato per definirla. |
|
La funzione assegnata o passata deve disporre di un'annotazione di _Function_class_ per almeno una classe |
|
Il puntatore a funzione assegnato è annotato con la classe di funzioni, non contenuta nell'elenco delle classi di funzioni. |
|
Il tipo di parametro effettivo deve corrispondere esattamente al tipo |
|
Se una variabile è accessibile mediante una funzione Interlocked, sarà necessario accedervi sempre mediante tale tipo di funzione. |
|
Accedere a una variabile locale tramite una funzione Interlocked |
|
La funzione deve essere chiamata da un blocco try/except |
|
L'argomento della variabile deve essere una costante (letterale). |
|
L'argomento della costante deve essere variabile. |
|
Considerare l'utilizzo di un'altra funzione. |
|
Error, annotazione |
|
La funzione non deve mai essere chiamata da un blocco try/except |
|
L'argomento viene passato ad una funzione per cui è atteso un puntatore ad un oggetto (non a un altro puntatore). |
|
Deferenziazione del puntatore NULL.Il puntatore contiene lo stesso valore null come su un altro puntatore. |
|
L'argomento può essere un valore e una copia del valore trovato nel puntatore |
|
La variabile contiene un valore che deve essere esaminato |
|
Il requisito non viene soddisfatto.(L'espressione non è stata valutata vera.) |
|
Riferimento non valido al membro non statico. |
|
Riferimento ambiguo al membro di classe. |
|
_Success_ or _On_failure_ utilizzato in un contesto non valido |
|
L'operando sinistro punta a uno struct. Utilizzare '->'. |
|
L'operando sinistro è uno struct. Utilizzare '.' |
|
La dichiarazione del simbolo dispone di una dichiarazione in conflitto |
|
Le annotazioni per il contesto __on_failure non devono trovarsi in un pre-contesto esplicito: |
|
Nome di contesto statico previsto per SAL_context |
|
Espressione del puntatore prevista per l'annotazione |
|
L'annotazione _Use_decl_annotations_ deve essere utilizzata per fare riferimento, senza alcuna modifica, a una dichiarazione precedente. |
|
I nomi di parametro di attributo devono essere p1...p9 |
|
Impossibile applicare typefix a un parametro che già dispone di un typefix |
|
L'annotazione di checkReturn viene applicata solo alle post-condizioni per il parametro di funzione specifico. |
|
Per la funzione il numero di parametri per l'annotazione non corrisponde con quello trovato nel file |
|
Per il parametro della funzione, il parametro di annotazione non corrisponde a quello trovato sul file |
|
Membro di enumerazione previsto per l'annotazione del parametro nell'annotazione |
|
Espressione intera prevista per annotare il parametro nell'annotazione |
|
Espressione stringa prevista per il parametro nell'annotazione |
|
Previsto __yes, __no, o __maybe per l'annotazione |
|
Impossibile trovare parametro Token o identificatore previsto per l'annotazione |
|
L'annotazione richiede parametri. |
|
Non è stato trovato il numero corretto di parametri necessari nell'annotazione |
|
L'annotazione non può essere anche un PrimOp (nella dichiarazione corrente). |
|
L'annotazione non può essere anche un PrimOp (vedere la dichiarazione precedente). |
|
Parametro di annotazioni: impossibile utilizzare il tipo nelle annotazioni |
|
L'annotazione non supporta parametri. |
|
Il tipo del parametro non include membri. |
|
L'annotazione è valida soltanto su array |
|
pre, post o deref non applicato ad alcuna annotazione. |
|
pre, post o deref applicato a un blocco. |
|
L'espressione __at non si applica alla funzione corrente. |
|
La funzione non può fungere autonomamente da annotazione. |
|
L'annotazione non può essere utilizzata in un'espressione. |
|
L'annotazione sul parametro non è più supportata |
|
L'annotazione sul parametro presenta più di un valore, stringValue e longValue.Utilizzare paramn=xxx |
|
L'annotazione sul parametro presenta sia stringValue, o longValue, che paramn=xxx.Utilizzare solo paramn=xxx |
|
L'annotazione sul parametro presenta param2 ma nessun param1. |
|
L'annotazione per la funzione sul parametro non è riconosciuto |
|
L'annotazione per la funzione sul parametro richiede più dereferenziazioni di quante ne siano consentite dall'effettivo tipo annotato |
|
L'annotazione per la funzione presenta un parametro o annotazione esterna non analizzabile. |
|
L'annotazione per la funzione annota 'this' in una funzione non membro. |
|
Il parametro dell'annotazione per la funzione non corrisponde al tipo del parametro. |
|
Annotazione non coerente per la funzione: l'istanza precedente ha un errore. |
|
Annotazione non coerente per la funzione: questa istanza ha un errore. |
|
Annotazione non coerente per la funzione: il parametro include altre annotazioni in questa istanza. |
|
Annotazione non coerente per la funzione: il parametro include altre annotazioni in questa istanza. |
|
dynamic_cast() non è supportato nelle annotazioni. |
|
Errore di sintassi nell'annotazione rilevato nella funzione per l'annotazione |
|
Errore di sintassi in un'annotazione condizionale rilevato per l'annotazione intrinseca |
|
I valori sell'elenco dei risultati devono essere costanti. |
|
Errore di sintassi nell'annotazione rilevato nella funzione per l'annotazione |
|
L'annotazione per la funzione, il parametro durante l'analisi non è coerente con la dichiarazione della funzione. |
|
Per la funzione, le tracce non sono coerenti con la dichiarazione della funzione. |
|
Il parametro per _Macro_value_ è null. |
|
Per il simbolo, è stato trovato un 'begin' senza il corrispondente 'end'. |
|
Per il simbolo, è stato trovato un 'end' senza un 'begin' corrispondente. |
|
Le stringhe di formato devono essere presenti nelle precondizioni |
|
Per la funzione, errore di sintassi nel parametro |
|
Per la funzione, errore di sintassi nei pressi della fine |
|
Per la funzione, errore di sintassi nell'annotazione _At_() (nome parametro non riconosciuto). |
|
Per la funzione, errore di sintassi nell'annotazione _At_() (nome parametro non valido). |
|
Per la funzione: ReadableTo o WritableTo non dispone di limit-spec come parametro. |
|
L'annotazione per la funzione contiene un numero di riferimenti esterni maggiore del numero di parametri effettivi. |
|
Il post null/notnull al livello deref 0 è privo di significato per la funzione. |
|
Operandi dell'espressione di tipi incompatibili per l'operatore |
|
Nessun annotazione per la prima dichiarazione di funzione. |
|
Un operatore aggiuntivo di _Deref_ è stato rilevato nell'annotazione. |
|
Un operatore ambiguo di _Deref_ è stato trovato nell'annotazione. |
|
Un operatore _Notref_ non correttamente posizionato è stato trovato applicato al token. |
|
E' stato individuato un errore durante l'analisi di un token. |
|
L'annotazione nel parametro è obsoleta |
|
L'annotazione nel parametro è obsoleta |
|
L'annotazione descrive una situazione non applicabile in modo condizionale. |
|
L'annotazione descrive dove non è possibile utilizzare un valore dinamico (variabile) nella condizione. |