Uyarı C26863

Tarih-saat işleme işlevinden func döndürülen değer yoksayılır

Bu kural Visual Studio 2022 17.8'e eklendi.

Açıklamalar

Yıl, ay veya tarih girişi bağımsız değişkeni düzgün artık yıl işleme olmadan işlendiğinde tarih yapısını dönüştüren bir işlevin dönüş değerini doğrulamak önemlidir. Aksi takdirde işlev başarısız olmuş olabilir ve yürütme geçersiz veri içeren bir çıkış parametresiyle devam eder.

Bu uyarının kapsadığı işlevlerin listesi aşağıdadır:

Kod analizi adı: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED

Örnek

Aşağıdaki kod geçerli sistem saatini almaya, ay alanını bir aya kadar ilerletmeye ve aracılığıyla SystemTimeToFileTimegüncelleştirilmiş sistem zamanına karşılık gelen dosya süresini almaya çalışır. Ancak, SystemTimeToFileTime güncelleştirilmiş sistem süresi geçersiz hale gelebileceğinden başarısız olabilir:

#include <Windows.h> 
 
void foo() 
{ 
    FILETIME ft; 
    SYSTEMTIME st; 
    GetSystemTime(&st); 
    st.wMonth++; // Advance month by one 
    // Get the file time 
    SystemTimeToFileTime(&st, &ft);    // C26863 
}

Sorunu çözmek için her zaman tarih-saat işleme işlevlerinden döndürülen değeri denetleyin ve hataları uygun şekilde işleyebilirsiniz:

#include <Windows.h> 
  
void foo() 
{ 
    FILETIME ft; 
    SYSTEMTIME st; 
    GetSystemTime(&st); 
    
    st.wMonth++; // Advance month by one 
    // Get file time 
    if (SystemTimeToFileTime(&st, &ft)) 
    { 
        // Use file time 
    } 
}

Buluşsal yöntemler

Bu kural yalnızca Windows SYSTEMTIME yapısını ve C tm yapısını tanır.

Bu kural, giriş bağımsız değişkenlerinin bu işlevleri çağırmadan önce doğrulanıp doğrulanmamış olmasına bakılmaksızın uygulanır. İşlev çağrılmadan önce tüm giriş bağımsız değişkenleri doğrulanırsa, bu kural hatalı uyarı bildirebilir.

Bu kural bir kabul kuralıdır, yani kod analizi bir kural kümesi dosyası kullanmalıdır ve kuralın kural kümesi dosyasına açıkça eklenmesi ve uygulanması için etkinleştirilmesi gerekir. Kod analizi için özel kural kümesi oluşturma hakkında daha fazla bilgi için bkz. Çalıştırılacak Kuralları Belirtmek C++ için Kural Kümelerini Kullanma.

Ayrıca bkz.

C6393
C6394
C26861
C26862
C26864