C++ 핵심 지침 검사기 참조

이 섹션에서는 C++ 핵심 지침 검사기 경고를 나열합니다. Code Analysis 대한 자세한 내용은 C/C++에 대한Code Analysis(Code Analysis) 및 빠른 시작을 참조/analyze하세요.

참고

일부 경고는 둘 이상의 그룹에 속하며 모든 경고에 완전한 참조 항목이 있는 것은 아닙니다.

OWNER_POINTER 그룹

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
이동 생성자가 있는 경우 힙 할당 대신 범위가 지정된 개체를 반환합니다. C++ 핵심 지침 R.3을 참조하세요.

C26403 RESET_OR_DELETE_OWNER
ownerT<> 포인터 'variable'을 다시 설정하거나 명시적으로 삭제합니다. C++ 핵심 지침 R.3을 참조하세요.

C26404 DONT_DELETE_INVALID
잘못된 상태일 수 있는 ownerT<>를 삭제하지 마세요. C++ 핵심 지침 R.3을 참조하세요.

C26405 DONT_ASSIGN_TO_VALID
유효한 상태일 수 있는 ownerT<>에 할당하지 마세요. C++ 핵심 지침 R.3을 참조하세요.

C26406 DONT_ASSIGN_RAW_TO_OWNER
ownerT<>에 원시 포인터를 할당하지 마세요. C++ 핵심 지침 R.3을 참조하세요.

C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
범위가 지정된 개체를 선호하고 불필요하게 힙 할당하지 마세요. C++ 핵심 지침 R.5를 참조하세요.

C26429 USE_NOTNULL
기호 'symbol'은 nullness에 대해 테스트되지 않으며 not_null 표시할 수 있습니다. C++ 핵심 지침 F.23을 참조하세요.

C26430 TEST_ON_ALL_PATHS
기호 'symbol'은 모든 경로에서 null을 테스트하지 않습니다. C++ 핵심 지침 F.23을 참조하세요.

C26431 DONT_TEST_NOTNULL
'expr' 식의 형식은 이미 gsl::not_null. nullness에 대해 테스트하지 마세요. C++ 핵심 지침 F.23을 참조하세요.

RAW_POINTER 그룹

C26400 NO_RAW_POINTER_ASSIGNMENT
ownerT<> 반환 값을 사용하여 할당 또는 함수 호출의 결과를 원시 포인터에 할당하지 마세요. 대신 ownerT<>를 사용합니다. C++ 핵심 지침 I.11을 참조하세요.

C26401 DONT_DELETE_NON_OWNER
ownerT<>가 아닌 원시 포인터는 삭제하지 마세요. C++ 핵심 지침 I.11을 참조하세요.

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
이동 생성자가 있는 경우 힙 할당 대신 범위가 지정된 개체를 반환합니다. C++ 핵심 지침 R.3을 참조하세요.

C26408 NO_MALLOC_FREE
malloc() 및 free()를 사용하지 마세요. 삭제를 사용하여 nothrow 버전의 새 버전을 선호합니다. C++ 핵심 지침 R.10을 참조하세요.

C26409 NO_NEW_DELETE
새로 호출하지 않고 명시적으로 삭제하려면 std::make_unique< T> 를 대신 사용합니다. C++ 핵심 지침 R.11을 참조하세요.

C26429 USE_NOTNULL
기호 'symbol'은 nullness에 대해 테스트되지 않으며 not_null 표시할 수 있습니다. C++ 핵심 지침 F.23을 참조하세요.

C26430 TEST_ON_ALL_PATHS
기호 'symbol'은 모든 경로에서 null을 테스트하지 않습니다. C++ 핵심 지침 F.23을 참조하세요.

C26431 DONT_TEST_NOTNULL
'expr' 식의 형식은 이미 gsl::not_null. nullness에 대해 테스트하지 마세요. C++ 핵심 지침 F.23을 참조하세요.

C26481 NO_POINTER_ARITHMETIC
포인터 산술 연산을 사용하지 마세요. 대신 범위를 사용합니다. C++ 핵심 지침 Bounds.1을 참조하세요.

C26485 NO_ARRAY_TO_POINTER_DECAY
식 'expr': 포인터 감쇠에 대한 배열이 없습니다. C++ 핵심 지침 Bounds.3을 참조하세요.

UNIQUE_POINTER 그룹

C26410 NO_REF_TO_CONST_UNIQUE_PTR
매개 변수 'parameter'는 고유한 포인터에 const 대한 참조이며 대신 const T* 또는 const T& 를 사용합니다. C++ 핵심 지침 R.32를 참조하세요.

C26411 NO_REF_TO_UNIQUE_PTR
'parameter' 매개 변수는 고유 포인터에 대한 참조이며 다시 할당되거나 다시 설정되지 않으며 T* 또는 T& 를 대신 사용합니다. C++ 핵심 지침 R.33을 참조하세요.

C26414 RESET_LOCAL_SMART_PTR
로컬 스마트 포인터 'symbol'을 이동, 복사, 재할당 또는 다시 설정합니다. C++ 핵심 지침 R.5를 참조하세요.

C26415 SMART_PTR_NOT_NEEDED
스마트 포인터 매개 변수 'symbol'은 포함된 포인터에 액세스하는 데만 사용됩니다. 대신 T* 또는 T& 를 사용합니다. C++ 핵심 지침 R.30을 참조하세요.

SHARED_POINTER 그룹

C26414 RESET_LOCAL_SMART_PTR
로컬 스마트 포인터 'symbol'을 이동, 복사, 재할당 또는 다시 설정합니다. C++ 핵심 지침 R.5를 참조하세요.

C26415 SMART_PTR_NOT_NEEDED
스마트 포인터 매개 변수 'symbol'은 포함된 포인터에 액세스하는 데만 사용됩니다. 대신 T* 또는 T& 를 사용합니다. C++ 핵심 지침 R.30을 참조하세요.

C26416 NO_RVALUE_REF_SHARED_PTR
공유 포인터 매개 변수 'symbol'은 rvalue 참조를 통해 전달됩니다. 대신 값으로 전달합니다. C++ 핵심 지침 R.34를 참조하세요.

C26417 NO_LVALUE_REF_SHARED_PTR
공유 포인터 매개 변수 'symbol'은 참조로 전달되며 다시 설정하거나 다시 할당하지 않습니다. 대신 T* 또는 T& 를 사용합니다. C++ 핵심 지침 R.35를 참조하세요.

C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR
공유 포인터 매개 변수 'symbol'이 복사되거나 이동되지 않습니다. 대신 T* 또는 T& 를 사용합니다. C++ 핵심 지침 R.36을 참조하세요.

선언 그룹

C26426 NO_GLOBAL_INIT_CALLS
전역 이니셜라이저는 비 constexpr 함수 'symbol'을 호출합니다. C++ 핵심 지침 I.22를 참조하세요.

C26427 NO_GLOBAL_INIT_EXTERNS
전역 이니셜라이저는 extern 개체 'symbol'에 액세스합니다. C++ 핵심 지침 I.22를 참조하세요.

C26444 NO_UNNAMED_RAII_OBJECTS
사용자 지정 생성 및 소멸을 사용하여 명명되지 않은 개체를 방지합니다. ES.84: 이름 없이 지역 변수를 선언하지 마세요(시도).

클래스 그룹

C26432 DEFINE_OR_DELETE_SPECIAL_OPS
'symbol' 형식의 기본 작업을 정의하거나 삭제하는 경우 모두 정의하거나 삭제합니다. C++ 핵심 지침 C.21을 참조하세요.

C26433 OVERRIDE_EXPLICITLY
함수 'symbol'은 'override'로 표시되어야 합니다. C.128: 가상 함수는 가상, 재정의 또는 최종 중 하나를 정확히 지정해야 합니다.

C26434 DONT_HIDE_METHODS
'symbol_1' 함수는 가상이 아닌 함수 'symbol_2'을 숨깁니다. C++ 핵심 지침 C.128을 참조하세요.

C26435 SINGLE_VIRTUAL_SPECIFICATION
함수 'symbol'은 정확히 'virtual', 'override' 또는 'final' 중 하나를 지정해야 합니다. C.128: 가상 함수는 가상, 재정의 또는 최종 중 하나를 정확히 지정해야 합니다.

C26436 NEED_VIRTUAL_DTOR
가상 함수가 있는 형식 'symbol'에는 공용 가상 또는 보호된 비 가상 소멸자가 필요합니다. C++ 핵심 지침 C.35를 참조하세요.

C26443 NO_EXPLICIT_DTOR_OVERRIDE
소멸자를 재정의하는 경우 명시적 '재정의' 또는 '가상' 지정자를 사용하면 안 됩니다. C.128: 가상 함수는 가상, 재정의 또는 최종 중 하나를 정확히 지정해야 합니다.

스타일 그룹

C26438 NO_GOTO
goto를 방지하십시오. C++ 핵심 지침 ES.76을 참조하세요.

FUNCTION 그룹

C26439 SPECIAL_NOEXCEPT
이러한 종류의 함수는 throw되지 않을 수 있습니다. 선언합니다 noexcept. C++ 핵심 지침 F.6을 참조하세요.

C26440 DECLARE_NOEXCEPT
함수 'symbol'을 noexcept선언할 수 있습니다. C++ 핵심 지침 F.6을 참조하세요.

C26447 DONT_THROW_IN_NOEXCEPT
함수는 선언 noexcept 되지만 예외를 throw할 수 있는 함수를 호출합니다. C++ 핵심 지침 참조: F.6: 함수가 throw되지 않을 수 있는 경우 noexcept를 선언합니다.

동시성 그룹

C26441 NO_UNNAMED_GUARDS
Guard 개체의 이름을 지정해야 합니다. C++ 핵심 지침 cp.44를 참조하세요.

CONST 그룹

C26460 USE_CONST_REFERENCE_ARGUMENTS
함수 'function'에 대한 참조 인수 'argument'를 로 표시const할 수 있습니다. C++ 핵심 지침 con.3을 참조하세요.

C26461 USE_CONST_POINTER_ARGUMENTS:
함수 'function'에 대한 포인터 인수 'argument'를 포인터로 표시할 const수 있습니다. C++ 핵심 지침 con.3을 참조하세요.

C26462 USE_CONST_POINTER_FOR_VARIABLE
'variable'이 가리키는 값은 한 번만 할당되고 포인터로 표시합니다 const. C++ 핵심 지침 con.4를 참조하세요.

C26463 USE_CONST_FOR_ELEMENTS
배열 'array'의 요소는 한 번만 할당되고 요소를 const표시합니다. C++ 핵심 지침 con.4를 참조하세요.

C26464 USE_CONST_POINTER_FOR_ELEMENTS
배열 'array'의 요소가 가리키는 값은 한 번만 할당되고 요소를 포인터로 표시합니다 const. C++ 핵심 지침 con.4를 참조하세요.

C26496 USE_CONST_FOR_VARIABLE
변수 'variable'은 한 번만 할당되어 표시합니다 const. C++ 핵심 지침 con.4를 참조하세요.

C26497 USE_CONSTEXPR_FOR_FUNCTION
컴파일 시간 평가가 필요한 경우 이 함수 함수 를 표시 constexpr 할 수 있습니다. C++ 핵심 지침 F.4를 참조하세요.

C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
컴파일 시간 평가가 필요한 경우 이 함수 호출 함수 를 사용할 constexpr 수 있습니다. C++ 핵심 지침 con.5를 참조하세요.

TYPE 그룹

C26437 DONT_SLICE
조각화하지 마세요. C++ 핵심 지침 ES.63을 참조하세요.

C26465 NO_CONST_CAST_UNNECESSARY
캐스팅const하는 데 사용하지 const_cast 마세요. const_cast 은 필요하지 않습니다. 이 변환으로 인해 단점 또는 변동성이 제거되지 않습니다. C++ 핵심 지침 유형.3을 참조하세요.

C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
다운캐스트를 사용하지 static_cast 마세요. 다형 형식의 캐스트는 dynamic_cast 사용해야 합니다. C++ 핵심 지침 유형.2를 참조하세요.

C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
을 사용하지 reinterpret_cast마세요. void*의 캐스트에서 사용할 static_cast수 있습니다. C++ 핵심 지침 유형.1을 참조하세요.

C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
산술 변환에는 static_cast 사용하지 마세요. 중괄호 초기화, gsl::narrow_cast 또는 gsl::narrow를 사용합니다. C++ 핵심 지침 유형.1을 참조하세요.

C26473 NO_IDENTITY_CAST
원본 형식과 대상 형식이 동일한 포인터 형식 간에 캐스팅하지 마세요. C++ 핵심 지침 유형.1을 참조하세요.

C26474 NO_IMPLICIT_CAST
변환이 암시적일 수 있는 경우 포인터 형식 간에 캐스팅하지 마세요. C++ 핵심 지침 유형.1을 참조하세요.

C26475 NO_FUNCTION_STYLE_CASTS
함수 스타일 C 캐스트를 사용하지 마세요. C++ 핵심 지침 ES.49를 참조하세요.

C26490 NO_REINTERPRET_CAST
을 사용하지 reinterpret_cast마세요. C++ 핵심 지침 유형.1을 참조하세요.

C26491 NO_STATIC_DOWNCAST
다운캐스트를 사용하지 static_cast 마세요. C++ 핵심 지침 유형.2를 참조하세요.

C26492 NO_CONST_CAST
캐스팅const하는 데 사용하지 const_cast 마세요. C++ 핵심 지침 유형.3을 참조하세요.

C26493 NO_CSTYLE_CAST
C 스타일 캐스트를 사용하지 마세요. C++ 핵심 지침 유형.4를 참조하세요.

C26494 VAR_USE_BEFORE_INIT
변수 'variable'은 초기화되지 않습니다. 항상 개체를 초기화합니다. C++ 핵심 지침 유형.5를 참조하세요.

C26495 MEMBER_UNINIT
변수 'variable'은 초기화되지 않습니다. 항상 멤버 변수를 초기화합니다. C++ 핵심 지침 유형.6을 참조하세요.

BOUNDS 그룹

C26446 USE_GSL_AT
선택되지 않은 아래 첨자 연산자 대신 사용하는 gsl::at() 것이 좋습니다. C++ 핵심 지침: Bounds.4: 경계를 선택하지 않은 표준 라이브러리 함수 및 형식을 사용하지 마세요.

C26481 NO_POINTER_ARITHMETIC
포인터 산술 연산을 사용하지 마세요. 대신 범위를 사용합니다. C++ 핵심 지침 경계를 참조하세요.1

C26482 NO_DYNAMIC_ARRAY_INDEXING
상수 식을 사용하여 배열에만 인덱싱합니다. C++ 핵심 지침 경계를 참조하세요.2

C26483 STATIC_INDEX_OUT_OF_RANGE
이 변수 'variable'의 경계(0, 바인딩)를 벗어났습니다. 배열 범위 내에 있는 상수 식을 사용하여 배열로 인덱싱하기만 합니다. C++ 핵심 지침 경계를 참조하세요.2

C26485 NO_ARRAY_TO_POINTER_DECAY
식 'expr': 포인터 감쇠에 대한 배열이 없습니다. C++ 핵심 지침 경계를 참조하세요.3

GSL 그룹

C26445 NO_SPAN_REF
수명 문제에 대한 gsl::span 참조이거나 std::string_view 수명 문제를 나타내는 것일 수 있습니다. C++ 핵심 지침 GSL.view: 보기 참조

C26446 USE_GSL_AT
선택되지 않은 아래 첨자 연산자 대신 사용하는 gsl::at() 것이 좋습니다. C++ 핵심 지침: Bounds.4: 경계를 선택하지 않은 표준 라이브러리 함수 및 형식을 사용하지 마세요.

C26448 USE_GSL_FINALLY
최종 작업이 의도된 경우 사용하는 gsl::finally 것이 좋습니다. C++ 핵심 지침: GSL.util: 유틸리티를 참조하세요.

C26449 NO_SPAN_FROM_TEMPORARY
gsl::span 또는 std::string_view 임시에서 만든 것은 임시가 무효화될 때 유효하지 않습니다. C++ 핵심 지침: GSL.view: 뷰를 참조하세요.

사용되지 않는 경고

다음 경고는 핵심 지침 검사기의 초기 실험 규칙 집합에 있지만 이제는 사용되지 않으며 안전하게 무시할 수 있습니다. 경고는 위의 목록에서 경고로 대체됩니다.

  • 26412 DEREF_INVALID_POINTER
  • 26413 DEREF_NULLPTR
  • 26420 ASSIGN_NONOWNER_TO_EXPLICIT_OWNER
  • 26421 ASSIGN_VALID_OWNER
  • 26422 VALID_OWNER_LEAVING_SCOPE
  • 26423 ALLOCATION_NOT_ASSIGNED_TO_OWNER
  • 26424 VALID_ALLOCATION_LEAVING_SCOPE
  • 26425 ASSIGNING_TO_STATIC
  • 26499 NO_LIFETIME_TRACKING

참조

C++ 핵심 지침 검사기 사용