Aracılığıyla paylaş


InfiniteLoop (Windows Sürücü için CodeQL Sorgusu)

Genel Bakış

Döngü koşulundaki farklı genişlik türleri arasındaki karşılaştırmalar döngünün sonlandırılamamasına neden olabilir.

Tavsiye

Döngü koşulunda uygun türleri kullanın.

Örnek

Bu örnekte, a bağımsız değişkeninin değeri SHRT_MAX'den büyükse, karşılaştırmanın sonucu sonsuz döngüye neden olabilir.

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

Hatayı düzeltmek için i değişkeninin türünü a'nın genişliğiyle eşleşecek şekilde değiştiriyoruz.

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

Ek ayrıntılar

Bu sorgu Microsoft GitHub CodeQL deposunda bulunabilir. Windows Sürücüsü geliştiricilerinin CodeQL'i nasıl indirip çalıştırabileceği hakkında ayrıntılı bilgi için CodeQL ve Statik Araçlar Logo Testi sayfasına bakın.