경고 C26863
날짜-시간 처리 함수
func
의 반환 값은 무시됩니다.
이 규칙은 Visual Studio 2022 17.8에 추가되었습니다.
설명
연도, 월 또는 날짜 입력 인수가 적절한 윤년 처리 없이 조작된 경우 날짜 구조를 변환하는 함수의 반환 값을 확인하는 것이 중요합니다. 그렇지 않으면 함수가 실패하고 잘못된 데이터가 포함된 출력 매개 변수를 사용하여 실행을 계속합니다.
다음은 이 경고에서 다루는 함수 목록입니다.
FileTimeToSystemTime
SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime
SystemTimeToTzSpecificLocalTimeEx
TzSpecificLocalTimeToSystemTime
TzSpecificLocalTimeToSystemTimeEx
RtlLocalTimeToSystemTime
RtlTimeToSecondsSince1970
코드 분석 이름: 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++
을 참조하세요.