Warnung C26863
Der Rückgabewert einer Datum-Uhrzeit-Verarbeitungsfunktion
func
wird ignoriert.
Diese Regel wurde in Visual Studio 2022 17.8 hinzugefügt.
Hinweise
Es ist wichtig, den Rückgabewert einer Funktion zu überprüfen, die eine Datumsstruktur transformiert, als das Argument "Jahr", "Monat" oder "Datumseingabe" ohne ordnungsgemäße Behandlung des Schaltjahrs bearbeitet wurde. Andernfalls ist die Funktion möglicherweise fehlgeschlagen, und die Ausführung wird mit einem Ausgabeparameter fortgesetzt, der ungültige Daten enthält.
Es folgt eine Liste der Funktionen, die von dieser Warnung abgedeckt werden:
FileTimeToSystemTime
SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime
SystemTimeToTzSpecificLocalTimeEx
TzSpecificLocalTimeToSystemTime
TzSpecificLocalTimeToSystemTimeEx
RtlLocalTimeToSystemTime
RtlTimeToSecondsSince1970
Name der Codeanalyse: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED
Beispiel
Der folgende Code versucht, die aktuelle Systemzeit abzurufen, das Monatsfeld um einen Monat vorauszuschreiten und die Dateizeit abzurufen, die der aktualisierten Systemzeit SystemTimeToFileTime
entspricht. Möglicherweise tritt jedoch ein Fehler auf, SystemTimeToFileTime
da die aktualisierte Systemzeit ungültig wird:
#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
}
Um das Problem zu beheben, überprüfen Sie immer den Rückgabewert von Bearbeitungsfunktionen für Datum und Uhrzeit, und behandeln Sie Fehler entsprechend:
#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
}
}
Heuristik
Diese Regel erkennt nur die Windows-Struktur SYSTEMTIME
und die C-Struktur tm
.
Diese Regel wird unabhängig davon erzwungen, ob die Eingabeargumente vor dem Aufrufen dieser Funktionen überprüft wurden. Wenn alle Eingabeargumente vor dem Aufrufen der Funktion überprüft werden, kann diese Regel eine falsche Warnung melden.
Diese Regel ist eine Opt-In-Regel, d. h. die Codeanalyse sollte eine Regeldatei verwenden, und die Regel sollte explizit in die Regeldatei aufgenommen und aktiviert werden, damit sie angewendet werden kann. Weitere Informationen zum Erstellen eines benutzerdefinierten Regelsets für die Codeanalyse finden Sie unter Verwenden von Regelsätzen zum Angeben der C++
auszuführenden Regeln.