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:
FileTimeToSystemTime
SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime
SystemTimeToTzSpecificLocalTimeEx
TzSpecificLocalTimeToSystemTime
TzSpecificLocalTimeToSystemTimeEx
RtlLocalTimeToSystemTime
RtlTimeToSecondsSince1970
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 SystemTimeToFileTime
gü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.