Bagikan melalui


InfiniteLoop (Kueri CodeQL Driver Windows)

Gambaran Umum

Perbandingan antara jenis lebar yang berbeda dalam kondisi perulangan dapat menyebabkan perulangan gagal dihentikan.

Rekomendasi

Gunakan jenis yang sesuai dalam kondisi perulangan.

Contoh

Dalam contoh ini, hasil perbandingan dapat mengakibatkan perulangan tak terbatas jika nilai untuk argumen: lebih besar dari SHRT_MAX:

void InfiniteLoop(int a)
{
    for (short i = 0; i < a; i++) // BUG: infinite loop
    {
        // ...
    }
}

Untuk memperbaiki bug, kami mengubah jenis variabel i agar sesuai dengan lebar:

void NotInfiniteLoop(int a)
{
    for (int i = 0; i < a; i++) 
    {
        // ...
    }
}

Detail Tambahan

Kueri ini dapat ditemukan di repositori CodeQL Microsoft GitHub. Lihat halaman Uji Logo CodeQL dan Alat Statis untuk detail tentang bagaimana pengembang Driver Windows dapat mengunduh dan menjalankan CodeQL.