InfiniteLoop (query CodeQL del driver Windows)
Panoramica
I confronti tra tipi di larghezze diverse in una condizione del ciclo possono causare l'interruzione del ciclo.
Recommendation
Usare i tipi appropriati nella condizione del ciclo.
Esempio
In questo esempio, il risultato del confronto può comportare un ciclo infinito se il valore per l'argomento è maggiore di SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Per correggere il bug, si sta modificando il tipo per la variabile i in modo che corrisponda alla larghezza di un:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Altri dettagli
Questa query è disponibile nel repository CodeQL di Microsoft GitHub. Per informazioni dettagliate su come gli sviluppatori di Driver Windows possono scaricare ed eseguire CodeQL, vedere la pagina CodeQL e la pagina Test logo degli strumenti statici .