C++ Çekirdek Yönergeleri denetleyicisi başvurusu
Bu bölümde C++ Çekirdek Yönergeleri Denetleyicisi uyarıları listelenir. Kod Analizi hakkında bilgi için bkz /analyze
. (Kod Analizi) ve Hızlı Başlangıç: C/C++ için Kod Analizi.
Dekont
Bazı uyarılar birden fazla gruba aittir ve tüm uyarıların tam bir başvuru konusu yoktur.
OWNER_POINTER Grubu
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Taşıma oluşturucusunun olması durumunda yığınla ayrılmış bir nesne yerine kapsamlı bir nesne döndürür. Bkz. C++ Temel Yönergeleri R.3.
C26403 RESET_OR_DELETE_OWNER
Sahip T> işaretçisi 'değişken' öğesini sıfırlayın veya açıkça silin<. Bkz. C++ Temel Yönergeleri R.3.
C26404 DONT_DELETE_INVALID
Geçersiz durumda olabilecek bir sahip<T'yi> silmeyin. Bkz. C++ Temel Yönergeleri R.3.
C26405 DONT_ASSIGN_TO_VALID
Geçerli durumda olabilecek bir sahip<T'ye> atamayın. Bkz. C++ Temel Yönergeleri R.3.
C26406 DONT_ASSIGN_RAW_TO_OWNER
Sahip T'ye> ham işaretçi atayın<. Bkz. C++ Temel Yönergeleri R.3.
C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
Kapsamlı nesneleri tercih edin, gereksiz yere yığın ayırmayın. Bkz. C++ Çekirdek Yönergeleri R.5.
C26429 USE_NOTNULL
Sembol 'symbol' hiçbir zaman null olup olmadığını test etmez, not_null olarak işaretlenebilir. Bkz . C++ Temel Yönergeleri F.23.
C26430 TEST_ON_ALL_PATHS
'symbol' simgesi tüm yollarda null olup olmadığını test etmemektedir. Bkz . C++ Temel Yönergeleri F.23.
C26431 DONT_TEST_NOTNULL
'expr' ifadesinin türü zaten gsl::not_null. Nulllik için test etmeyin. Bkz . C++ Temel Yönergeleri F.23.
RAW_POINTER Grubu
C26400 NO_RAW_POINTER_ASSIGNMENT
Bir ayırma veya sahip<T> dönüş değeri olan bir işlev çağrısının sonucunu ham işaretçiye atayın; bunun yerine sahip<T> kullanın. Bkz . C++ Temel Yönergeleri I.11.
C26401 DONT_DELETE_NON_OWNER
T> sahibi<olmayan bir ham işaretçiyi silmeyin. Bkz . C++ Temel Yönergeleri I.11.
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Taşıma oluşturucusunun olması durumunda yığınla ayrılmış bir nesne yerine kapsamlı bir nesne döndürür. Bkz. C++ Temel Yönergeleri R.3.
C26408 NO_MALLOC_FREE
malloc() ve free() kullanmaktan kaçının, delete ile yeni sürümünün nothrow sürümünü tercih edin. Bkz . C++ Temel Yönergeleri R.10.
C26409 NO_NEW_DELETE
Yeni çağrısı yapmaktan kaçının ve açıkça silin, bunun yerine std::make_unique<T> kullanın. Bkz . C++ Çekirdek Yönergeleri R.11.
C26429 USE_NOTNULL
Sembol 'symbol' hiçbir zaman null olup olmadığını test etmez, not_null olarak işaretlenebilir. Bkz . C++ Temel Yönergeleri F.23.
C26430 TEST_ON_ALL_PATHS
'symbol' simgesi tüm yollarda null olup olmadığını test etmemektedir. Bkz . C++ Temel Yönergeleri F.23.
C26431 DONT_TEST_NOTNULL
'expr' ifadesinin türü zaten gsl::not_null. Nulllik için test etmeyin. Bkz . C++ Temel Yönergeleri F.23.
C26481 NO_POINTER_ARITHMETIC
İşaretçi aritmetiği kullanmayın. Bunun yerine span kullanın. Bkz. C++ Temel Yönergeler Sınırları.1.
C26485 NO_ARRAY_TO_POINTER_DECAY
'expr' ifadesi: İşaretçi bozunması için bir dizi yok. Bkz. C++ Temel Yönergeler Sınırları.3.
UNIQUE_POINTER Grubu
C26410 NO_REF_TO_CONST_UNIQUE_PTR
'parameter' parametresi benzersiz işaretçiye const
başvurudur, bunun yerine const T* veya const T& kullanın. Bkz. C++ Çekirdek Yönergeleri R.32.
C26411 NO_REF_TO_UNIQUE_PTR
'parameter' parametresi benzersiz işaretçiye başvurudur ve hiçbir zaman yeniden atanamaz veya sıfırlanır, bunun yerine T* veya T& kullanın. Bkz . C++ Çekirdek Yönergeleri R.33.
C26414 RESET_LOCAL_SMART_PTR
'Sembol' yerel akıllı işaretçisini taşıyın, kopyalayın, yeniden atayın veya sıfırlayın. Bkz. C++ Çekirdek Yönergeleri R.5.
C26415 SMART_PTR_NOT_NEEDED
Akıllı işaretçi parametresi 'symbol' yalnızca kapsanan işaretçiye erişmek için kullanılır. Bunun yerine T* veya T& kullanın. Bkz . C++ Temel Yönergeleri R.30.
SHARED_POINTER Grubu
C26414 RESET_LOCAL_SMART_PTR
'Sembol' yerel akıllı işaretçisini taşıyın, kopyalayın, yeniden atayın veya sıfırlayın. Bkz. C++ Çekirdek Yönergeleri R.5.
C26415 SMART_PTR_NOT_NEEDED
Akıllı işaretçi parametresi 'symbol' yalnızca kapsanan işaretçiye erişmek için kullanılır. Bunun yerine T* veya T& kullanın. Bkz . C++ Temel Yönergeleri R.30.
C26416 NO_RVALUE_REF_SHARED_PTR
Paylaşılan işaretçi parametresi 'symbol' rvalue başvurusu tarafından geçirilir. Bunun yerine değere göre geçirin. Bkz . C++ Çekirdek Yönergeleri R.34.
C26417 NO_LVALUE_REF_SHARED_PTR
Paylaşılan işaretçi parametresi 'symbol' başvuru tarafından geçirilir ve sıfırlanmaz veya yeniden atanmaz. Bunun yerine T* veya T& kullanın. Bkz . C++ Temel Yönergeleri R.35.
C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR
Paylaşılan işaretçi parametresi 'symbol' kopyalanmaz veya taşınmaz. Bunun yerine T* veya T& kullanın. Bkz. C++ Çekirdek Yönergeleri R.36.
BILDIRIM Grubu
C26426 NO_GLOBAL_INIT_CALLS
Genel başlatıcı constexpr olmayan bir işlevi 'symbol' olarak çağırır. Bkz. C++ Temel Yönergeleri I.22.
C26427 NO_GLOBAL_INIT_EXTERNS
Genel başlatıcı 'symbol' extern nesnesine erişir. Bkz. C++ Temel Yönergeleri I.22.
C26444 NO_UNNAMED_RAII_OBJECTS
Özel yapı ve yıkım ile adlandırılmamış nesnelerden kaçının. Bkz . ES.84: Adsız bir yerel değişken bildirmeyin (deneme).
CLASS Grubu
C26432 DEFINE_OR_DELETE_SPECIAL_OPS
'symbol' türünde herhangi bir varsayılan işlem tanımlar veya silerseniz, bunların tümünü tanımlayın veya silin. Bkz. C++ Temel Yönergeleri C.21.
C26433 OVERRIDE_EXPLICITLY
'symbol' işlevi 'override' ile işaretlenmelidir. Bkz . C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son değerlerden birini belirtmelidir.
C26434 DONT_HIDE_METHODS
'symbol_1' işlevi, 'symbol_2' sanal olmayan bir işlevi gizler. Bkz . C++ Temel Yönergeleri C.128.
C26435 SINGLE_VIRTUAL_SPECIFICATION
'symbol' işlevi tam olarak 'virtual', 'override' veya 'final' işlevlerinden birini belirtmelidir. Bkz . C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son değerlerden birini belirtmelidir.
C26436 NEED_VIRTUAL_DTOR
Sanal işlev içeren 'symbol' türü genel sanal veya korumalı sanal olmayan yıkıcıya ihtiyaç duyar. Bkz. C++ Temel Yönergeleri C.35.
C26443 NO_EXPLICIT_DTOR_OVERRIDE
Yıkıcı geçersiz kılınırken açık 'geçersiz kılma' veya 'sanal' tanımlayıcıları kullanılmamalıdır. Bkz . C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son değerlerden birini belirtmelidir.
STYLE Grubu
C26438 NO_GOTO
goto
ifadesinden kaçının. Bkz . C++ Çekirdek Yönergeleri ES.76.
İşlev Grubu
C26439 SPECIAL_NOEXCEPT
Bu tür bir işlev oluşturmayabilir. noexcept
bunu bildirin. Bkz . C++ Temel Yönergeleri F.6.
C26440 DECLARE_NOEXCEPT
'symbol' işlevi bildirilebilir noexcept
. Bkz . C++ Temel Yönergeleri F.6.
C26447 DONT_THROW_IN_NOEXCEPT
İşlev bildirilir noexcept
, ancak özel durumlar oluşturabilecek bir işlev çağırır.
Bkz . C++ Temel Yönergeleri: F.6: İşleviniz oluşturmuyorsa noexcept olarak bildirin.
EŞZAMANLıLıK Grubu
C26441 NO_UNNAMED_GUARDS
Guard nesneleri adlandırılmalıdır. Bkz . C++ Çekirdek Yönergeleri cp.44.
CONST Grubu
C26460 USE_CONST_REFERENCE_ARGUMENTS
'function' işlevi için 'argument' başvuru bağımsız değişkeni olarak const
işaretlenebilir. Bkz. C++ Core Guidelines con.3.
C26461 USE_CONST_POINTER_ARGUMENTS:
'function' işlevi için 'argument' işaretçi bağımsız değişkeni, işaretçi olarak const
işaretlenebilir. Bkz. C++ Core Guidelines con.3.
C26462 USE_CONST_POINTER_FOR_VARIABLE
'değişken' tarafından işaret edilen değer yalnızca bir kez atanır, işaretçi olarak işaret eder const
. Bkz. C++ Core Guidelines con.4.
C26463 USE_CONST_FOR_ELEMENTS
'array' dizisinin öğeleri yalnızca bir kez atanır, öğeleri const
işaretleyin. Bkz. C++ Core Guidelines con.4.
C26464 USE_CONST_POINTER_FOR_ELEMENTS
'array' dizisinin öğeleri tarafından işaret edilen değerler yalnızca bir kez atanır ve öğeleri işaretçi const
olarak işaretler. Bkz. C++ Core Guidelines con.4.
C26496 USE_CONST_FOR_VARIABLE
'variable' değişkeni yalnızca bir kez atanır, olarak const
işaretleyin. Bkz. C++ Core Guidelines con.4.
C26497 USE_CONSTEXPR_FOR_FUNCTION
Derleme zamanı değerlendirmesi isteniyorsa bu işlev işaretlenebilirconstexpr
. Bkz. C++ Temel Yönergeleri F.4.
C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
Bu işlev çağrısı işlevi , derleme zamanı değerlendirmesi isteniyorsa kullanabilir constexpr
. Bkz. C++ Core Guidelines con.5.
TÜR Grubu
C26437 DONT_SLICE
Dilimlemiyor. Bkz . C++ Temel Yönergeler ES.63.
C26465 NO_CONST_CAST_UNNECESSARY
'yi kullanmak için const
kullanmayınconst_cast
. const_cast
gerekli değildir; bu dönüştürme ile hareketsizlik veya dalgalanma kaldırılmıyor. Bkz. C++ Çekirdek Yönergeleri Türü.3.
C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
Aşağı yayınları kullanmayın static_cast
. Polimorfik bir türden tür ataması dynamic_cast kullanmalıdır. Bkz. C++ Çekirdek Yönergeleri Türü.2.
C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
reinterpret_cast
kullanmayın. Void* tarafından kullanılan bir döküm kullanabilir static_cast
. Bkz. C++ Çekirdek Yönergeleri Türü.1.
C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
Aritmetik dönüştürmeler için kullanmayın static_cast
. Ayraç başlatma, gsl::narrow_cast veya gsl::narrow kullanın. Bkz. C++ Çekirdek Yönergeleri Türü.1.
C26473 NO_IDENTITY_CAST
Kaynak türü ve hedef türün aynı olduğu işaretçi türleri arasında geçiş yapmayın. Bkz. C++ Çekirdek Yönergeleri Türü.1.
C26474 NO_IMPLICIT_CAST
Dönüştürme örtük olabileceğinde işaretçi türleri arasında geçiş yapmayın. Bkz. C++ Çekirdek Yönergeleri Türü.1.
C26475 NO_FUNCTION_STYLE_CASTS
İşlev stili C-casts kullanmayın. Bkz . C++ Çekirdek Yönergeleri ES.49.
C26490 NO_REINTERPRET_CAST
reinterpret_cast
kullanmayın. Bkz. C++ Çekirdek Yönergeleri Türü.1.
C26491 NO_STATIC_DOWNCAST
Aşağı yayınları kullanmayın static_cast
. Bkz. C++ Çekirdek Yönergeleri Türü.2.
C26492 NO_CONST_CAST
'yi kullanmak için const
kullanmayınconst_cast
. Bkz. C++ Çekirdek Yönergeleri Türü.3.
C26493 NO_CSTYLE_CAST
C stili atamaları kullanmayın. Bkz. C++ Çekirdek Yönergeleri Türü.4.
C26494 VAR_USE_BEFORE_INIT
'variable' değişkeni başlatılmamış. Her zaman bir nesneyi başlatın. Bkz. C++ Temel Yönergeler Türü.5.
C26495 MEMBER_UNINIT
'variable' değişkeni başlatılmamış. Her zaman bir üye değişkeni başlatın. Bkz. C++ Temel Yönergeler Türü.6.
BOUNDS Grubu
C26446 USE_GSL_AT
İşaretlenmemiş alt simge işleci yerine kullanmayı gsl::at()
tercih edin. Bkz . C++ Temel Yönergeleri: Sınırlar.4: Sınır denetlenmeyen standart kitaplık işlevlerini ve türlerini kullanmayın.
C26481 NO_POINTER_ARITHMETIC
İşaretçi aritmetiği kullanmayın. Bunun yerine span kullanın. Bkz. C++ Temel Yönergeler Sınırları.1
C26482 NO_DYNAMIC_ARRAY_INDEXING
Yalnızca sabit ifadeler kullanarak dizilere dizin oluşturun. Bkz. C++ Temel Yönergeler Sınırları.2
C26483 STATIC_INDEX_OUT_OF_RANGE
Değer değeri, 'variable' değişkeninin sınırlarının (0, bağlı) dışındadır. Yalnızca dizinin sınırları içinde yer alan sabit ifadeleri kullanarak dizilere dizin oluşturun. Bkz. C++ Temel Yönergeler Sınırları.2
C26485 NO_ARRAY_TO_POINTER_DECAY
'expr' ifadesi: İşaretçi bozunması için bir dizi yok. Bkz. C++ Temel Yönergeler Sınırları.3
GSL Grubu
C26445 NO_SPAN_REF
Bir başvuru gsl::span
veya std::string_view
yaşam süresi sorununun göstergesi olabilir.
Bkz. C++ Temel Yönergeleri GSL.view: Görünümler
C26446 USE_GSL_AT
İşaretlenmemiş alt simge işleci yerine kullanmayı gsl::at()
tercih edin. Bkz . C++ Temel Yönergeleri: Sınırlar.4: Sınır denetlenmeyen standart kitaplık işlevlerini ve türlerini kullanmayın.
C26448 USE_GSL_FINALLY
Son eylemin hedeflenip tasarlanmamış olduğunu kullanmayı gsl::finally
göz önünde bulundurun. Bkz . C++ Temel Yönergeleri: GSL.util: Yardımcı Programlar.
C26449 NO_SPAN_FROM_TEMPORARY
gsl::span
veya std::string_view
geçici bir kaynaktan oluşturulan, geçici geçersiz kılındığında geçersiz olur. Bkz . C++ Temel Yönergeleri: GSL.view: Görünümler.
Kullanım Dışı Uyarılar
Aşağıdaki uyarılar, temel kılavuz denetleyicisinin ilk deneysel kural kümesinde bulunur, ancak artık kullanım dışıdır ve güvenli bir şekilde yoksayılabilir. Uyarılar, yukarıdaki listeden gelen uyarılarla değiştirilir.
- 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
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin