Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращаемое значение из функции
funcобработки даты и времени игнорируется
Это правило было добавлено в Visual Studio 2022 17.8.
Замечания
Важно проверить возвращаемое значение функции, которая преобразует структуру дат, когда аргумент ввода даты года, месяца или даты был манипулирован без надлежащей обработки високосного года. В противном случае функция может завершиться ошибкой и выполнение продолжается с выходным параметром, содержащим недопустимые данные.
Ниже приведен список функций, которые рассматриваются в этом предупреждении:
FileTimeToSystemTimeSystemTimeToFileTimeSystemTimeToTzSpecificLocalTimeSystemTimeToTzSpecificLocalTimeExTzSpecificLocalTimeToSystemTimeTzSpecificLocalTimeToSystemTimeExRtlLocalTimeToSystemTimeRtlTimeToSecondsSince1970
Имя анализа кода: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED
Пример
Следующий код пытается получить текущее системное время, перейти в поле месяца на один месяц и получить время файла, соответствующее обновленному системного времени с помощью SystemTimeToFileTime. Однако может завершиться ошибкой, SystemTimeToFileTime так как обновленное системное время может стать недействительным:
#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
}
Чтобы устранить проблему, всегда проверяйте возвращаемое значение из функций обработки даты и времени и соответствующим образом обрабатывайте сбои:
#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
}
}
Эвристика
Это правило распознает только структуру Windows SYSTEMTIME и структуру C tm .
Это правило применяется независимо от того, были ли проверены входные аргументы перед вызовом этих функций. Если перед вызовом функции проверяются все входные аргументы, это правило может сообщить о ложном предупреждении.
Это правило является правилом согласия, т. е. анализ кода должен использовать файл набора правил, и правило должно быть явно включено в файл набора правил и включено для его применения. Дополнительные сведения о создании пользовательского набора правил для анализа кода см. в разделе "Использование наборов правил для указания C++ правил для выполнения".