Upozornění C26863
Vrácená hodnota z funkce
func
zpracování data a času je ignorována.
Toto pravidlo bylo přidáno v sadě Visual Studio 2022 17.8.
Poznámky
Je důležité ověřit návratovou hodnotu funkce, která transformuje strukturu kalendářních dat, když byl rok, měsíc nebo vstupní argument kalendářního data manipulován bez správného zpracování přestupného roku. Jinak funkce pravděpodobně selhala a spuštění pokračuje s výstupním parametrem obsahujícím neplatná data.
Následuje seznam funkcí, které toto upozornění popisuje:
FileTimeToSystemTime
SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime
SystemTimeToTzSpecificLocalTimeEx
TzSpecificLocalTimeToSystemTime
TzSpecificLocalTimeToSystemTimeEx
RtlLocalTimeToSystemTime
RtlTimeToSecondsSince1970
Název analýzy kódu: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED
Příklad
Následující kód se pokusí získat aktuální systémový čas, posunout pole měsíce o jeden měsíc a získat čas souboru, který odpovídá aktualizovanému systémovému času prostřednictvím SystemTimeToFileTime
. Může se SystemTimeToFileTime
alelhat, protože aktualizovaný systémový čas může být neplatný:
#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
}
Pokud chcete problém vyřešit, vždy zkontrolujte návratovou hodnotu z funkcí pro manipulaci s datem a odpovídajícím způsobem zpracujte chyby:
#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
}
}
Heuristika
Toto pravidlo rozpozná pouze strukturu Systému Windows SYSTEMTIME
a strukturu jazyka C tm
.
Toto pravidlo se vynucuje bez ohledu na to, jestli byly vstupní argumenty před voláním těchto funkcí ověřeny. Pokud jsou před voláním funkce ověřeny všechny vstupní argumenty, může toto pravidlo hlásit falešná upozornění.
Toto pravidlo je pravidlo výslovného souhlasu, což znamená, že analýza kódu by měla používat soubor sady pravidel a pravidlo by mělo být explicitně zahrnuto do souboru sady pravidel a povoleno, aby se použilo. Další informace o vytvoření vlastní sady pravidel pro analýzu kódu naleznete v tématu Použití sad pravidel k určení C++
pravidel ke spuštění.