Avertissement C26863

La valeur de retour d’une fonction func de gestion date/heure est ignorée

Cette règle a été ajoutée dans Visual Studio 2022 17.8.

Notes

Il est important de vérifier la valeur de retour d’une fonction qui transforme une structure de date lorsque l’argument d’entrée année, mois ou date a été manipulé sans gestion appropriée de l’année bissextile. Sinon, la fonction peut avoir échoué et l’exécution se poursuit avec un paramètre de sortie contenant des données non valides.

Voici une liste des fonctions que cet avertissement couvre :

Nom de l’analyse du code : DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED

Exemple

Le code suivant tente d’obtenir l’heure système actuelle, d’avancer le champ mois d’un mois et d’obtenir l’heure du fichier correspondant à l’heure système mise à jour via SystemTimeToFileTime. Toutefois, SystemTimeToFileTime cela peut échouer, car l’heure système mise à jour peut devenir non valide :

#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 
}

Pour résoudre le problème, case activée toujours la valeur de retour des fonctions de manipulation date-heure et gérer les défaillances de manière appropriée :

#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 
    } 
}

Heuristique

Cette règle reconnaît uniquement le struct Windows SYSTEMTIME et le struct C tm .

Cette règle est appliquée, que les arguments d’entrée aient été validés avant d’appeler ces fonctions. Si tous les arguments d’entrée sont validés avant d’appeler la fonction, cette règle peut signaler un faux avertissement.

Cette règle est une règle d’opt-in, ce qui signifie que l’analyse du code doit utiliser un fichier d’ensemble de règles, et que la règle doit être explicitement incluse dans le fichier d’ensemble de règles et activée pour qu’elle soit appliquée. Pour plus d’informations sur la création d’un ensemble de règles personnalisé pour l’analyse du code, consultez Utiliser des ensembles de règles pour spécifier les C++ règles à exécuter.

Voir aussi

C6393
C6394
C26861
C26862
C26864