Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni generali
I confronti tra tipi di dati con larghezze di bit diverse in una condizione del ciclo possono impedire la terminazione del ciclo.
Raccomandazione
Usare i tipi appropriati nella condizione del ciclo.
Esempio
In questo esempio, il risultato del confronto può risultare in un ciclo infinito se il valore dell'argomento a è maggiore di SHRT_MAX.
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Per correggere il bug, stiamo modificando il tipo per la variabile i in modo che corrisponda alla dimensione di a:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Dettagli aggiuntivi
Questa query è disponibile nel repository CodeQL di Microsoft GitHub. Per informazioni dettagliate sul modo in cui gli sviluppatori di driver Windows possono scaricare ed eseguire CodeQL, consultare la pagina CodeQL e il logo degli strumenti statici.