Share via


C++ 核心指導方針檢查程序參考

本節列出 C++ 核心指導方針檢查程式警告。 如需程式代碼分析的相關信息,請參閱 /analyze (程序代碼分析)快速入門:C/C++ 的程式代碼分析。

注意

某些警告屬於多個群組,並非所有警告都有完整的參考主題。

OWNER_POINTER群組

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
如果具有移動建構函式,則傳回範圍物件,而不是堆積配置的 。 請參閱 C++ 核心指導方針 R.3

C26403 RESET_OR_DELETE_OWNER
重設或明確刪除擁有者<T> 指標 『variable』。 請參閱 C++ 核心指導方針 R.3

C26404 DONT_DELETE_INVALID
請勿刪除可能處於無效狀態的擁有者<T> 。 請參閱 C++ 核心指導方針 R.3

C26405 DONT_ASSIGN_TO_VALID
請勿指派給可能處於有效狀態的擁有者<T> 。 請參閱 C++ 核心指導方針 R.3

C26406 DONT_ASSIGN_RAW_TO_OWNER
請勿將原始指標指派給擁有者<T>。 請參閱 C++ 核心指導方針 R.3

C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
偏好範圍物件,不要不必要地配置堆積。 請參閱 C++ 核心指導方針 R.5

C26429 USE_NOTNULL
符號 'symbol' 永遠不會測試為 null,它可以標示為not_null。 請參閱 C++ 核心指導方針 F.23

C26430 TEST_ON_ALL_PATHS
符號 'symbol' 未在所有路徑上測試 Null。 請參閱 C++ 核心指導方針 F.23

C26431 DONT_TEST_NOTNULL
表達式 'expr' 的類型已經是 gsl::not_null。 請勿測試它是否為 Null。 請參閱 C++ 核心指導方針 F.23

RAW_POINTER群組

C26400 NO_RAW_POINTER_ASSIGNMENT
請勿將配置的結果或具有擁有者<T> 傳回值的函式呼叫指派給原始指標;請改用擁有者<T> 。 請參閱 C++ 核心指導方針 I.11

C26401 DONT_DELETE_NON_OWNER
請勿刪除不是擁有者<T>的原始指標。 請參閱 C++ 核心指導方針 I.11

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
如果具有移動建構函式,則傳回範圍物件,而不是堆積配置的 。 請參閱 C++ 核心指導方針 R.3

C26408 NO_MALLOC_FREE
避免 malloc() 和 free(),偏好使用 delete 新增的 nothrow 版本。 請參閱 C++ 核心指導方針 R.10

C26409 NO_NEW_DELETE
請避免明確呼叫 new 和 delete,請改用 std::make_unique<T> 。 請參閱 C++ 核心指導方針 R.11

C26429 USE_NOTNULL
符號 'symbol' 永遠不會測試為 null,它可以標示為not_null。 請參閱 C++ 核心指導方針 F.23

C26430 TEST_ON_ALL_PATHS
符號 'symbol' 未在所有路徑上測試 Null。 請參閱 C++ 核心指導方針 F.23

C26431 DONT_TEST_NOTNULL
表達式 'expr' 的類型已經是 gsl::not_null。 請勿測試它是否為 Null。 請參閱 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' 是由右值參考傳遞。 請改用值傳遞。 請參閱 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

DECLARATION 群組

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:不要(嘗試)宣告沒有名稱的局部變數。

CLASS 群組

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
覆寫解構函式不應使用明確的 'override' 或 'virtual' 規範。 請參閱 C.128:虛擬函式應該只指定其中一個虛擬、覆寫或最終函式。

STYLE 群組

C26438 NO_GOTO
避免 goto。 請參閱 C++ 核心指導方針 ES.76

FUNCTION 群組

C26439 SPECIAL_NOEXCEPT
這類函式可能不會擲回。 宣告它 noexcept。 請參閱 C++ 核心指導方針 F.6

C26440 DECLARE_NOEXCEPT
函式 'symbol' 可以宣告 noexcept為 。 請參閱 C++ 核心指導方針 F.6

C26447 DONT_THROW_IN_NOEXCEPT
函式已宣告, noexcept 但會呼叫可能會擲回例外狀況的函式。 請參閱 C++ 核心指導方針:F.6:如果您的函式可能未擲回,請宣告它 noexcept

CONCURRENCY 群組

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_cast 來轉換 constconst_cast 不需要;此轉換不會移除常度或波動性。 請參閱 C++ 核心指導方針 Type.3

C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
請勿使用 static_cast 倒播。 來自多型別的轉換應該使用 dynamic_cast。 請參閱 C++ 核心指導方針 Type.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-casts。 請參閱 C++ 核心指導方針 ES.49

C26490 NO_REINTERPRET_CAST
請勿使用 reinterpret_cast。 請參閱 C++ 核心指導方針類型.1

C26491 NO_STATIC_DOWNCAST
請勿使用 static_cast 倒播。 請參閱 C++ 核心指導方針 Type.2

C26492 NO_CONST_CAST
請勿使用 const_cast 來轉換 const。 請參閱 C++ 核心指導方針 Type.3

C26493 NO_CSTYLE_CAST
請勿使用 C 樣式轉換。 請參閱 C++ 核心指導方針 Type.4

C26494 VAR_USE_BEFORE_INIT
變數 'variable' 未初始化。 一律初始化物件。 請參閱 C++ 核心指導方針類型.5

C26495 MEMBER_UNINIT
變數 'variable' 未初始化。 一律初始化成員變數。 請參閱 C++ 核心指導方針 Type.6

BOUNDS 群組

C26446 USE_GSL_AT
偏好使用 gsl::at() 而非未核取的下標運算符。 請參閱 C++ 核心指導方針:Bounds.4:請勿使用標準連結庫函式和未檢查界限的類型。

C26481 NO_POINTER_ARITHMETIC
請勿使用指標算術。 請改用範圍。 請參閱 C++ 核心指導方針界限。1

C26482 NO_DYNAMIC_ARRAY_INDEXING
只有使用常數表達式的陣列索引。 請參閱 C++ 核心指導方針 Bounds.2

C26483 STATIC_INDEX_OUT_OF_RANGE
超出變數 'variable' 的界限 (0, bound) 。 只有使用數位界限內的常數表達式來編製數位的索引。 請參閱 C++ 核心指導方針 Bounds.2

C26485 NO_ARRAY_TO_POINTER_DECAY
表達式 『expr』:指標衰變沒有陣列。 請參閱 C++ 核心指導方針 Bounds.3

GSL 群組

C26445 NO_SPAN_REF
std::string_view 的參考gsl::span可能是存留期問題的指示。 請參閱 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::spanstd::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++ 核心指導方針檢查程式