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++ Core Guidelines F.23。
C26430 TEST_ON_ALL_PATHS
符號 'symbol' 未在所有路徑上測試 Null。 請參閱 C++ Core Guidelines F.23。
C26431 DONT_TEST_NOTNULL
表達式 'expr' 的類型已經是 gsl::not_null。 請勿測試它是否為 Null。 請參閱 C++ Core Guidelines 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++ Core Guidelines R.10。
C26409 NO_NEW_DELETE
請避免明確呼叫 new 和 delete,請改用 std::make_unique<T> 。 請參閱 C++核心指導方針 R.11。
C26429 USE_NOTNULL
符號 'symbol' 永遠不會測試為 null,它可以標示為not_null。 請參閱 C++ Core Guidelines F.23。
C26430 TEST_ON_ALL_PATHS
符號 'symbol' 未在所有路徑上測試 Null。 請參閱 C++ Core Guidelines F.23。
C26431 DONT_TEST_NOTNULL
表達式 'expr' 的類型已經是 gsl::not_null。 請勿測試它是否為 Null。 請參閱 C++ Core Guidelines F.23。
C26481 NO_POINTER_ARITHMETIC
請勿使用指標算術。 請改用範圍。 請參閱 C++ Core Guidelines Bounds.1。
C26485 NO_ARRAY_TO_POINTER_DECAY
表達式 『expr』:指標衰變沒有陣列。 請參閱 C++ Core Guidelines 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++ Core Guidelines R.33。
C26414 RESET_LOCAL_SMART_PTR
移動、複製、重新指派或重設本機智慧型手機型指標 'symbol'。 請參閱 C++核心指導方針 R.5。
C26415 SMART_PTR_NOT_NEEDED
智慧型指標參數 'symbol' 僅用於存取自主指標。 請改用 T* 或 T& 。 請參閱 C++ Core Guidelines R.30。
SHARED_POINTER群組
C26414 RESET_LOCAL_SMART_PTR
移動、複製、重新指派或重設本機智慧型手機型指標 'symbol'。 請參閱 C++核心指導方針 R.5。
C26415 SMART_PTR_NOT_NEEDED
智慧型指標參數 'symbol' 僅用於存取自主指標。 請改用 T* 或 T& 。 請參閱 C++ Core Guidelines 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++ Core Guidelines 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++ Core Guidelines cp.44。
CONST 群組
C26460 USE_CONST_REFERENCE_ARGUMENTS
函式 'function' 的參考自變數 'argument' 可以標示為 const
。 請參閱 C++ Core Guidelines con.3。
C26461 USE_CONST_POINTER_ARGUMENTS:
函式 'function' 的指標自變數 'argument' 可以標示為 的const
指標。 請參閱 C++ Core Guidelines con.3。
C26462 USE_CONST_POINTER_FOR_VARIABLE
'variable' 所指向的值只會指派一次,將其標示為 的 const
指標。 請參閱 C++ Core Guidelines con.4。
C26463 USE_CONST_FOR_ELEMENTS
陣列 'array' 的專案只會指派一次,將元素 const
標示為 。 請參閱 C++ Core Guidelines con.4。
C26464 USE_CONST_POINTER_FOR_ELEMENTS
陣列 'array' 元素所指向的值只會指派一次,將元素標示為 的 const
指標。 請參閱 C++ Core Guidelines con.4。
C26496 USE_CONST_FOR_VARIABLE
變數 'variable' 只會指派一次,將其標示為 const
。 請參閱 C++ Core Guidelines con.4。
C26497 USE_CONSTEXPR_FOR_FUNCTION
如果需要編譯時間評估,就可以標記constexpr
此函式。 請參閱 C++ Core Guidelines F.4。
C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
如果需要編譯時間評估,這個函數調用 函 式就可以使用 constexpr
。 請參閱 C++ Core Guidelines con.5。
TYPE 群組
C26437 DONT_SLICE
請勿配量。 請參閱 C++ Core Guidelines ES.63。
C26465 NO_CONST_CAST_UNNECESSARY
請勿使用 const_cast
來轉換 const
。 const_cast
不需要;此轉換不會移除常度或波動性。 請參閱 C++ Core Guidelines Type.3。
C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
請勿使用 static_cast
倒播。 來自多型別的轉換應該使用 dynamic_cast。 請參閱 C++ Core Guidelines Type.2。
C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
請勿使用 reinterpret_cast
。 從 void* 的轉換可以使用 static_cast
。 請參閱 C++ Core Guidelines Type.1。
C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
請勿將 用於 static_cast
算術轉換。 使用大括號初始化、gsl::narrow_cast 或 gsl::narrow。 請參閱 C++ Core Guidelines Type.1。
C26473 NO_IDENTITY_CAST
請勿在來源類型和目標類型相同的指標類型之間轉換。 請參閱 C++ Core Guidelines Type.1。
C26474 NO_IMPLICIT_CAST
當轉換可能隱含時,請勿在指標類型之間轉換。 請參閱 C++ Core Guidelines Type.1。
C26475 NO_FUNCTION_STYLE_CASTS
請勿使用函式樣式 C-casts。 請參閱 C++ Core Guidelines ES.49。
C26490 NO_REINTERPRET_CAST
請勿使用 reinterpret_cast
。 請參閱 C++ Core Guidelines Type.1。
C26491 NO_STATIC_DOWNCAST
請勿使用 static_cast
倒播。 請參閱 C++ Core Guidelines Type.2。
C26492 NO_CONST_CAST
請勿使用 const_cast
來轉換 const
。 請參閱 C++ Core Guidelines Type.3。
C26493 NO_CSTYLE_CAST
請勿使用 C 樣式轉換。 請參閱 C++ Core Guidelines Type.4。
C26494 VAR_USE_BEFORE_INIT
變數 'variable' 未初始化。 一律初始化物件。 請參閱 C++ Core Guidelines Type.5。
C26495 MEMBER_UNINIT
變數 'variable' 未初始化。 一律初始化成員變數。 請參閱 C++ Core Guidelines Type.6。
BOUNDS 群組
C26446 USE_GSL_AT
偏好使用 gsl::at()
而非未核取的下標運算符。 請參閱 C++核心指導方針:Bounds.4:請勿使用未檢查界限的標準連結庫函式和類型。
C26481 NO_POINTER_ARITHMETIC
請勿使用指標算術。 請改用範圍。 請參閱 C++ Core Guidelines Bounds.1
C26482 NO_DYNAMIC_ARRAY_INDEXING
只有使用常數表達式的陣列索引。 請參閱 C++ Core Guidelines Bounds.2
C26483 STATIC_INDEX_OUT_OF_RANGE
值值超出變數 'variable' 的界限 (0, bound) 。 只有使用數位界限內的常數表達式來編製數位的索引。 請參閱 C++ Core Guidelines Bounds.2
C26485 NO_ARRAY_TO_POINTER_DECAY
表達式 『expr』:指標衰變沒有陣列。 請參閱 C++ Core Guidelines 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::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