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.