Compartir a través de


Advertencia C26863

Se omite el valor devuelto de una función func de control de fecha y hora.

Esta regla se agregó en Visual Studio 2022 17.8.

Comentarios

Es importante comprobar el valor devuelto de una función que transforma una estructura de fecha cuando el argumento de entrada year, month o date se manipuló sin un control adecuado del año bisiesto. De lo contrario, es posible que la función haya producido un error y la ejecución continúe con un parámetro de salida que contiene datos no válidos.

A continuación se muestra una lista de las funciones que trata esta advertencia:

Nombre de análisis de código: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED

Ejemplo

El código siguiente intenta obtener la hora actual del sistema, avanzar el campo mes en un mes y obtener la hora del archivo que corresponde a la hora del sistema actualizada a través de SystemTimeToFileTime. Sin embargo, SystemTimeToFileTime puede producirse un error, ya que la hora del sistema actualizada puede no ser válida:

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

Para corregir el problema, compruebe siempre el valor devuelto de las funciones de manipulación de fecha y hora y controle los errores correctamente:

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

Heurística

Esta regla solo reconoce la estructura de Windows SYSTEMTIME y la estructura de C tm .

Esta regla se aplica independientemente de si los argumentos de entrada se validaron antes de llamar a estas funciones. Si se validan todos los argumentos de entrada antes de llamar a la función, esta regla puede notificar una advertencia falsa.

Esta regla es una regla de participación, lo que significa que el análisis de código debe usar un archivo de conjunto de reglas y la regla debe incluirse explícitamente en el archivo del conjunto de reglas y habilitarla para que se aplique. Para obtener más información sobre cómo crear un conjunto de reglas personalizado para el análisis de código, vea Usar conjuntos de reglas para especificar las C++ reglas que se van a ejecutar.

Consulte también

C6393
C6394
C26861
C26862
C26864