Referensi pemeriksa Panduan Inti C++
Bagian ini mencantumkan peringatan Pemeriksa Pedoman Inti C++. Untuk informasi tentang Analisis Kode, lihat /analyze
(Analisis Kode) dan Mulai Cepat: Analisis Kode untuk C/C++.
Catatan
Beberapa peringatan termasuk dalam lebih dari satu grup, dan tidak semua peringatan memiliki topik referensi lengkap.
Grup OWNER_POINTER
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Mengembalikan objek terlingkup alih-alih heap yang dialokasikan jika memiliki konstruktor pemindahan. Lihat C++ Pedoman Inti R.3.
C26403 RESET_OR_DELETE_OWNER
Reset atau hapus 'variabel' penunjuk T> pemilik<secara eksplisit. Lihat C++ Pedoman Inti R.3.
C26404 DONT_DELETE_INVALID
Jangan hapus pemilik<T> yang mungkin dalam status tidak valid. Lihat C++ Pedoman Inti R.3.
C26405 DONT_ASSIGN_TO_VALID
Jangan tetapkan ke pemilik<T> yang mungkin dalam status valid. Lihat C++ Pedoman Inti R.3.
C26406 DONT_ASSIGN_RAW_TO_OWNER
Jangan tetapkan pointer mentah ke pemilik<T>. Lihat C++ Pedoman Inti R.3.
C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
Lebih suka objek tercakup, jangan alokasikan tumpukan yang tidak perlu. Lihat C++ Panduan Inti R.5.
C26429 USE_NOTNULL
Simbol 'simbol' tidak pernah diuji untuk nullness, dapat ditandai sebagai not_null. Lihat C++ Panduan Inti F.23.
C26430 TEST_ON_ALL_PATHS
Simbol 'simbol' tidak diuji untuk nullness pada semua jalur. Lihat C++ Panduan Inti F.23.
C26431 DONT_TEST_NOTNULL
Jenis ekspresi 'expr' sudah gsl::not_null. Jangan mengujinya untuk nullness. Lihat C++ Panduan Inti F.23.
Grup RAW_POINTER
C26400 NO_RAW_POINTER_ASSIGNMENT
Jangan tetapkan hasil alokasi atau panggilan fungsi dengan<pemilik T> mengembalikan nilai ke pointer mentah; gunakan pemilik<T> sebagai gantinya. Lihat Panduan Inti C++ I.11.
C26401 DONT_DELETE_NON_OWNER
Jangan hapus pointer mentah yang bukan pemilik<T>. Lihat Panduan Inti C++ I.11.
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Mengembalikan objek terlingkup alih-alih heap yang dialokasikan jika memiliki konstruktor pemindahan. Lihat C++ Pedoman Inti R.3.
C26408 NO_MALLOC_FREE
Hindari malloc() dan free(), lebih suka versi nothrow baru dengan hapus. Lihat C++ Pedoman Inti R.10.
C26409 NO_NEW_DELETE
Hindari memanggil baru dan menghapus secara eksplisit, gunakan std::make_unique<T> sebagai gantinya. Lihat C++ Pedoman Inti R.11.
C26429 USE_NOTNULL
Simbol 'simbol' tidak pernah diuji untuk nullness, dapat ditandai sebagai not_null. Lihat C++ Panduan Inti F.23.
C26430 TEST_ON_ALL_PATHS
Simbol 'simbol' tidak diuji untuk nullness pada semua jalur. Lihat C++ Panduan Inti F.23.
C26431 DONT_TEST_NOTNULL
Jenis ekspresi 'expr' sudah gsl::not_null. Jangan mengujinya untuk nullness. Lihat C++ Panduan Inti F.23.
C26481 NO_POINTER_ARITHMETIC
Jangan gunakan aritmatika pointer. Gunakan rentang sebagai gantinya. Lihat C++ Batas Pedoman Inti.1.
C26485 NO_ARRAY_TO_POINTER_DECAY
Ekspresi 'expr': Tidak ada array ke penunjuk yang membusuk. Lihat C++ Batas Pedoman Inti.3.
Grup UNIQUE_POINTER
C26410 NO_REF_TO_CONST_UNIQUE_PTR
Parameter 'parameter' adalah referensi ke const
pointer unik, gunakan const T* atau const T& sebagai gantinya. Lihat C++ Panduan Inti R.32.
C26411 NO_REF_TO_UNIQUE_PTR
Parameter 'parameter' adalah referensi ke pointer unik dan tidak pernah ditetapkan ulang atau diatur ulang, gunakan T* atau T& sebagai gantinya. Lihat C++ Pedoman Inti R.33.
C26414 RESET_LOCAL_SMART_PTR
Memindahkan, menyalin, menetapkan ulang, atau mengatur ulang 'simbol' penunjuk pintar lokal. Lihat C++ Panduan Inti R.5.
C26415 SMART_PTR_NOT_NEEDED
Parameter penunjuk pintar 'simbol' hanya digunakan untuk mengakses pointer yang terkandung. Gunakan T* atau T& sebagai gantinya. Lihat C++ Pedoman Inti R.30.
Grup SHARED_POINTER
C26414 RESET_LOCAL_SMART_PTR
Memindahkan, menyalin, menetapkan ulang, atau mengatur ulang 'simbol' penunjuk pintar lokal. Lihat C++ Panduan Inti R.5.
C26415 SMART_PTR_NOT_NEEDED
Parameter penunjuk pintar 'simbol' hanya digunakan untuk mengakses pointer yang terkandung. Gunakan T* atau T& sebagai gantinya. Lihat C++ Pedoman Inti R.30.
C26416 NO_RVALUE_REF_SHARED_PTR
Parameter pointer bersama 'simbol' diteruskan oleh referensi rvalue. Lewati berdasarkan nilai sebagai gantinya. Lihat C++ Pedoman Inti R.34.
C26417 NO_LVALUE_REF_SHARED_PTR
Parameter pointer bersama 'simbol' diteruskan oleh referensi dan tidak diatur ulang atau ditetapkan ulang. Gunakan T* atau T& sebagai gantinya. Lihat C++ Panduan Inti R.35.
C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR
Parameter pointer bersama 'simbol' tidak disalin atau dipindahkan. Gunakan T* atau T& sebagai gantinya. Lihat C++ Panduan Inti R.36.
Grup DEKLARASI
C26426 NO_GLOBAL_INIT_CALLS
Penginisialisasi global memanggil fungsi non-constexpr 'simbol'. Lihat Panduan Inti C++ I.22.
C26427 NO_GLOBAL_INIT_EXTERNS
Penginisialisasi global mengakses objek ekstern 'simbol'. Lihat Panduan Inti C++ I.22.
C26444 NO_UNNAMED_RAII_OBJECTS
Hindari objek yang tidak disebutkan namanya dengan konstruksi dan penghancuran kustom. Lihat ES.84: Jangan (coba) mendeklarasikan variabel lokal tanpa nama.
Grup KELAS
C26432 DEFINE_OR_DELETE_SPECIAL_OPS
Jika Anda menentukan atau menghapus operasi default apa pun dalam jenis 'simbol', tentukan atau hapus semuanya. Lihat C++ Panduan Inti C.21.
C26433 OVERRIDE_EXPLICITLY
Fungsi 'simbol' harus ditandai dengan 'override'. Lihat C.128: Fungsi virtual harus menentukan salah satu virtual, penimpaan, atau final.
C26434 DONT_HIDE_METHODS
Fungsi 'symbol_1' menyembunyikan fungsi non-virtual 'symbol_2'. Lihat C++ Pedoman Inti C.128.
C26435 SINGLE_VIRTUAL_SPECIFICATION
Fungsi 'simbol' harus menentukan tepat salah satu dari 'virtual', 'override', atau 'final'. Lihat C.128: Fungsi virtual harus menentukan salah satu virtual, penimpaan, atau final.
C26436 NEED_VIRTUAL_DTOR
Jenis 'simbol' dengan fungsi virtual membutuhkan destruktor virtual publik atau non-virtual yang dilindungi. Lihat C++ Panduan Inti C.35.
C26443 NO_EXPLICIT_DTOR_OVERRIDE
Mengganti destruktor tidak boleh menggunakan penentu 'ambil alih' atau 'virtual' eksplisit. Lihat C.128: Fungsi virtual harus menentukan salah satu virtual, penimpaan, atau final.
Grup GAYA
C26438 NO_GOTO
Hindari goto
. Lihat C++ Panduan Inti ES.76.
Grup FUNGSI
C26439 SPECIAL_NOEXCEPT
Fungsi semacam ini mungkin tidak dilemparkan. Deklarasikan itu noexcept
. Lihat C++ Panduan Inti F.6.
C26440 DECLARE_NOEXCEPT
Fungsi 'simbol' dapat dideklarasikan noexcept
. Lihat C++ Panduan Inti F.6.
C26447 DONT_THROW_IN_NOEXCEPT
Fungsi ini dinyatakan noexcept
tetapi memanggil fungsi yang dapat melempar pengecualian.
Lihat Pedoman Inti C++: F.6: Jika fungsi Anda mungkin tidak melemparkan, nyatakan itu noexcept.
Grup KONKURENSI
C26441 NO_UNNAMED_GUARDS
Objek penjaga harus diberi nama. Lihat C++ Pedoman Inti cp.44.
Grup CONST
C26460 USE_CONST_REFERENCE_ARGUMENTS
Argumen referensi 'argumen' untuk fungsi 'function' dapat ditandai sebagai const
. Lihat Panduan Inti C++ con.3.
C26461 USE_CONST_POINTER_ARGUMENTS:
Argumen penunjuk 'argumen' untuk fungsi 'fungsi' dapat ditandai sebagai penunjuk ke const
. Lihat Panduan Inti C++ con.3.
C26462 USE_CONST_POINTER_FOR_VARIABLE
Nilai yang ditujukkan oleh 'variabel' hanya ditetapkan sekali, tandai sebagai penunjuk ke const
. Lihat Panduan Inti C++ con.4.
C26463 USE_CONST_FOR_ELEMENTS
Elemen array 'array' hanya ditetapkan sekali, menandai elemen const
. Lihat Panduan Inti C++ con.4.
C26464 USE_CONST_POINTER_FOR_ELEMENTS
Nilai yang ditujukkan oleh elemen array 'array' hanya ditetapkan sekali, menandai elemen sebagai penunjuk ke const
. Lihat Panduan Inti C++ con.4.
C26496 USE_CONST_FOR_VARIABLE
Variabel 'variabel' hanya ditetapkan sekali, tandai sebagai const
. Lihat Panduan Inti C++ con.4.
C26497 USE_CONSTEXPR_FOR_FUNCTION
Fungsi fungsi ini dapat ditandai constexpr
jika evaluasi waktu kompilasi diinginkan. Lihat C++ Panduan Inti F.4.
C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
Fungsi panggilan fungsi ini dapat digunakan constexpr
jika evaluasi waktu kompilasi diinginkan. Lihat Panduan Inti C++ con.5.
JENIS Grup
C26437 DONT_SLICE
Jangan ilis. Lihat C++ Pedoman Inti ES.63.
C26465 NO_CONST_CAST_UNNECESSARY
Jangan gunakan const_cast
untuk mengusir const
. const_cast
tidak diperlukan; constness atau volatility tidak dihapus oleh konversi ini. Lihat C++ Pedoman Inti Type.3.
C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
Jangan gunakan static_cast
downcast. Pemeran dari jenis polimorfik harus menggunakan dynamic_cast. Lihat C++ Pedoman Inti Type.2.
C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
Jangan gunakan reinterpret_cast
. Pemeran dari void* dapat menggunakan static_cast
. Lihat C++ Pedoman Inti Type.1.
C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
Jangan gunakan static_cast
untuk konversi aritmatika. Gunakan inisialisasi kurung kurawal, gsl::narrow_cast, atau gsl::narrow. Lihat C++ Pedoman Inti Type.1.
C26473 NO_IDENTITY_CAST
Jangan transmisikan antara jenis penunjuk di mana jenis sumber dan jenis target sama. Lihat C++ Pedoman Inti Type.1.
C26474 NO_IMPLICIT_CAST
Jangan transmisikan di antara jenis penunjuk saat konversi bisa implisit. Lihat C++ Pedoman Inti Type.1.
C26475 NO_FUNCTION_STYLE_CASTS
Jangan gunakan gaya fungsi C-casts. Lihat C++ Panduan Inti ES.49.
C26490 NO_REINTERPRET_CAST
Jangan gunakan reinterpret_cast
. Lihat C++ Pedoman Inti Type.1.
C26491 NO_STATIC_DOWNCAST
Jangan gunakan static_cast
downcast. Lihat C++ Pedoman Inti Type.2.
C26492 NO_CONST_CAST
Jangan gunakan const_cast
untuk mengusir const
. Lihat C++ Pedoman Inti Type.3.
C26493 NO_CSTYLE_CAST
Jangan gunakan cast gaya C. Lihat C++ Pedoman Inti Type.4.
C26494 VAR_USE_BEFORE_INIT
Variabel 'variabel' tidak diinisialisasi. Selalu inisialisasi objek. Lihat C++ Pedoman Inti Type.5.
C26495 MEMBER_UNINIT
Variabel 'variabel' tidak diinisialisasi. Selalu inisialisasi variabel anggota. Lihat C++ Pedoman Inti Type.6.
Grup BATAS
C26446 USE_GSL_AT
Lebih suka menggunakan gsl::at()
alih-alih operator subskrip yang tidak dicentang. Lihat Pedoman Inti C++: Bounds.4: Jangan gunakan fungsi dan jenis pustaka standar yang tidak diperiksa batasnya.
C26481 NO_POINTER_ARITHMETIC
Jangan gunakan aritmatika pointer. Gunakan rentang sebagai gantinya. Lihat Batas Pedoman Inti C++.1
C26482 NO_DYNAMIC_ARRAY_INDEXING
Hanya indeks ke dalam array menggunakan ekspresi konstanta. Lihat Batas Pedoman Inti C++.2
C26483 STATIC_INDEX_OUT_OF_RANGE
Nilai nilai berada di luar batas (0, terikat) variabel 'variabel'. Hanya indeks ke dalam array menggunakan ekspresi konstanta yang berada dalam batas array. Lihat Batas Pedoman Inti C++.2
C26485 NO_ARRAY_TO_POINTER_DECAY
Ekspresi 'expr': Tidak ada array ke penunjuk yang membusuk. Lihat Batas Pedoman Inti C++.3
Grup GSL
C26445 NO_SPAN_REF
Referensi ke gsl::span
atau std::string_view
mungkin merupakan indikasi masalah seumur hidup.
Lihat C++ Pedoman Inti GSL.view: Tampilan
C26446 USE_GSL_AT
Lebih suka menggunakan gsl::at()
alih-alih operator subskrip yang tidak dicentang. Lihat Pedoman Inti C++: Bounds.4: Jangan gunakan fungsi dan jenis pustaka standar yang tidak diperiksa batasnya.
C26448 USE_GSL_FINALLY
Pertimbangkan untuk menggunakan gsl::finally
jika tindakan akhir dimaksudkan. Lihat Pedoman Inti C++: GSL.util: Utilitas.
C26449 NO_SPAN_FROM_TEMPORARY
gsl::span
atau std::string_view
dibuat dari sementara akan tidak valid ketika sementara tidak valid. Lihat Panduan Inti C++: GSL.view: Tampilan.
Peringatan yang Tidak Digunakan Lagi
Peringatan berikut ada dalam seperangkat aturan eksperimental awal dari pemeriksa pedoman inti, tetapi sekarang tidak digunakan lagi dan dapat diabaikan dengan aman. Peringatan digantikan oleh peringatan dari daftar di atas.
- 26412 DEREF_INVALID_POINTER
- 26413 DEREF_NULLPTR
- ASSIGN_NONOWNER_TO_EXPLICIT_OWNER 26420
- 26421 ASSIGN_VALID_OWNER
- VALID_OWNER_LEAVING_SCOPE 26422
- 26423 ALLOCATION_NOT_ASSIGNED_TO_OWNER
- 26424 VALID_ALLOCATION_LEAVING_SCOPE
- ASSIGNING_TO_STATIC 26425
- 26499 NO_LIFETIME_TRACKING