Sdílet prostřednictvím


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:

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í.

Viz také

C6393
C6394
C26861
C26862
C26864