Checker
|
Guideline
|
---|
C++0014
|
DCL52-CPP. Never qualify a reference type with const or volatile
|
C++1067
|
DCL60-CPP. Obey the one-definition rule
|
C++1109
|
DCL53-CPP. Do not write syntactically ambiguous declarations
|
C++1509
|
DCL60-CPP. Obey the one-definition rule
|
C++1510
|
DCL60-CPP. Obey the one-definition rule
|
C++1552
|
DCL56-CPP. Avoid cycles during initialization of static objects
|
C++1554
|
DCL56-CPP. Avoid cycles during initialization of static objects
|
C++1704
|
DCL56-CPP. Avoid cycles during initialization of static objects
|
C++1772
|
CON53-CPP. Avoid deadlock by locking in a predefined order
|
C++1773
|
CON53-CPP. Avoid deadlock by locking in a predefined order
|
C++1774
|
CON52-CPP. Prevent data races when accessing bit-fields from multiple threads
|
C++1775
|
CON52-CPP. Prevent data races when accessing bit-fields from multiple threads
|
C++1778
|
CON55-CPP. Preserve thread safety and liveness when using condition variables
|
C++1779
|
CON55-CPP. Preserve thread safety and liveness when using condition variables
|
C++2012
|
DCL50-CPP. Do not define a C-style variadic function
|
C++2045
|
DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
|
C++2047
|
DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
|
C++2110
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++2111
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++2112
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++2113
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++2118
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++2160
|
DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
|
C++2510
|
DCL53-CPP. Do not write syntactically ambiguous declarations
|
C++2518
|
DCL59-CPP. Do not define an unnamed namespace in a header file
|
C++2625
|
DCL50-CPP. Do not define a C-style variadic function
|
C++2668
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2726
|
EXP53-CPP. Do not read uninitialized memory
|
C++2727
|
EXP53-CPP. Do not read uninitialized memory
|
C++2728
|
EXP53-CPP. Do not read uninitialized memory
|
C++2761
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2762
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2763
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2766
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2767
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2768
|
CTR54-CPP. Do not subtract iterators that do not refer to the same container
|
C++2810
|
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
|
C++2811
|
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
|
C++2812
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2812
|
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
|
C++2813
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2813
|
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
|
C++2814
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2814
|
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
|
C++2835
|
STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
C++2836
|
STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
C++2839
|
STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
C++2886
|
MSC53-CPP. Do not return from a function declared [[noreturn]]
|
C++2888
|
MSC52-CPP. Value-returning functions must return a value from all exit paths
|
C++2888
|
MSC54-CPP. A signal handler must be a plain old function
|
C++2891
|
CTR50-CPP. Guarantee that container indices and iterators are within the valid range
|
C++2930
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2931
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2932
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2933
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2934
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++2961
|
EXP53-CPP. Do not read uninitialized memory
|
C++2962
|
EXP53-CPP. Do not read uninitialized memory
|
C++2963
|
EXP53-CPP. Do not read uninitialized memory
|
C++2966
|
EXP53-CPP. Do not read uninitialized memory
|
C++2967
|
EXP53-CPP. Do not read uninitialized memory
|
C++2968
|
EXP53-CPP. Do not read uninitialized memory
|
C++2971
|
EXP53-CPP. Do not read uninitialized memory
|
C++2972
|
EXP53-CPP. Do not read uninitialized memory
|
C++2973
|
EXP53-CPP. Do not read uninitialized memory
|
C++2976
|
EXP53-CPP. Do not read uninitialized memory
|
C++2977
|
EXP53-CPP. Do not read uninitialized memory
|
C++2978
|
EXP53-CPP. Do not read uninitialized memory
|
C++3013
|
INT50-CPP. Do not cast to an out-of-range enumeration value
|
C++3033
|
EXP56-CPP. Do not call a function with a mismatched language linkage
|
C++3038
|
EXP56-CPP. Do not call a function with a mismatched language linkage
|
C++3066
|
EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
|
C++3072
|
OOP51-CPP. Do not slice derived objects
|
C++3073
|
CTR56-CPP. Do not use pointer arithmetic on polymorphic objects
|
C++3112
|
EXP57-CPP. Do not cast or delete pointers to incomplete classes
|
C++3119
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3128
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3129
|
MEM57-CPP. Avoid using default operator new for over-aligned types
|
C++3139
|
CTR50-CPP. Guarantee that container indices and iterators are within the valid range
|
C++3140
|
CTR50-CPP. Guarantee that container indices and iterators are within the valid range
|
C++3161
|
ERR62-CPP. Detect errors when converting a string to a number
|
C++3162
|
STR53-CPP. Range check element access
|
C++3163
|
STR53-CPP. Range check element access
|
C++3164
|
STR53-CPP. Range check element access
|
C++3165
|
STR53-CPP. Range check element access
|
C++3166
|
EXP51-CPP. Do not delete an array through a pointer of the incorrect type
|
C++3180
|
DCL58-CPP. Do not modify the standard namespaces
|
C++3181
|
DCL58-CPP. Do not modify the standard namespaces
|
C++3182
|
DCL58-CPP. Do not modify the standard namespaces
|
C++3220
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
C++3221
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
C++3222
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
C++3223
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
C++3225
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3225
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++3226
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3226
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++3227
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3227
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++3228
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
C++3228
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3228
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++3229
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3229
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++3230
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3231
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3232
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3233
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3234
|
CTR58-CPP. Predicate function objects should not be mutable
|
C++3240
|
EXP52-CPP. Do not rely on side effects in unevaluated operands
|
C++3241
|
EXP52-CPP. Do not rely on side effects in unevaluated operands
|
C++3293
|
CTR57-CPP. Provide a valid ordering predicate
|
C++3337
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++3339
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++3402
|
OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
|
C++3403
|
OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
|
C++3404
|
OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
|
C++3508
|
ERR60-CPP. Exception objects must be nothrow copy constructible
|
C++3510
|
ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
|
C++3520
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3521
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3522
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3523
|
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
|
C++3526
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3526
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3527
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3527
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3528
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3528
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3529
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3529
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3530
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3530
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3531
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3531
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3532
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3532
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3533
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3533
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3534
|
CTR52-CPP. Guarantee that library functions do not overflow
|
C++3534
|
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
|
C++3802
|
CTR53-CPP. Use valid iterator ranges
|
C++3809
|
ERR59-CPP. Do not throw an exception across execution boundaries
|
C++3810
|
ERR59-CPP. Do not throw an exception across execution boundaries
|
C++3852
|
EXP58-CPP. Pass an object of the correct type to va_start
|
C++3853
|
EXP58-CPP. Pass an object of the correct type to va_start
|
C++3915
|
EXP59-CPP. Use offsetof() on valid types and members
|
C++3916
|
EXP59-CPP. Use offsetof() on valid types and members
|
C++4003
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++4026
|
EXP54-CPP. Do not access an object outside of its lifetime
|
C++4030
|
ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
|
C++4031
|
ERR61-CPP. Catch exceptions by lvalue reference
|
C++4032
|
DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
|
C++4035
|
ERR51-CPP. Handle all exceptions
|
C++4035
|
ERR55-CPP. Honor exception specifications
|
C++4036
|
ERR51-CPP. Handle all exceptions
|
C++4036
|
ERR55-CPP. Honor exception specifications
|
C++4037
|
ERR51-CPP. Handle all exceptions
|
C++4053
|
OOP53-CPP. Write constructor member initializers in the canonical order
|
C++4072
|
OOP54-CPP. Gracefully handle self-copy assignment
|
C++4073
|
OOP54-CPP. Gracefully handle self-copy assignment
|
C++4075
|
ERR56-CPP. Guarantee exception safety
|
C++4075
|
OOP54-CPP. Gracefully handle self-copy assignment
|
C++4075
|
OOP58-CPP. Copy operations must not mutate the source object
|
C++4076
|
ERR56-CPP. Guarantee exception safety
|
C++4076
|
OOP54-CPP. Gracefully handle self-copy assignment
|
C++4260
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4261
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4262
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++4263
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++4264
|
MEM51-CPP. Properly deallocate dynamically allocated resources
|
C++4273
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4274
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4275
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4276
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4277
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4278
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4279
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4280
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4281
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4282
|
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
|
C++4303
|
MEM50-CPP. Do not access freed memory
|
C++4304
|
MEM50-CPP. Do not access freed memory
|
C++4631
|
DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
|
C++4632
|
MEM52-CPP. Detect and handle memory allocation errors
|
C++4632
|
ERR55-CPP. Honor exception specifications
|
C++4634
|
ERR58-CPP. Handle all exceptions thrown before main() begins executing
|
C++4636
|
ERR58-CPP. Handle all exceptions thrown before main() begins executing
|
C++4637
|
ERR58-CPP. Handle all exceptions thrown before main() begins executing
|
C++4639
|
ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
|
C++4639
|
ERR58-CPP. Handle all exceptions thrown before main() begins executing
|
C++4671
|
EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
|
C++4701
|
EXP63-CPP. Do not rely on the value of a moved-from object
|
C++4702
|
EXP63-CPP. Do not rely on the value of a moved-from object
|
C++4703
|
EXP63-CPP. Do not rely on the value of a moved-from object
|
C++4706
|
EXP61-CPP. A lambda object must not outlive any of its reference captured objects
|
C++4707
|
EXP61-CPP. A lambda object must not outlive any of its reference captured objects
|
C++4708
|
EXP61-CPP. A lambda object must not outlive any of its reference captured objects
|
C++4711
|
FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
|
C++4712
|
FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
|
C++4713
|
FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
|
C++4721
|
MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
|
C++4722
|
MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
|
C++4723
|
MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
|
C++4726
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4727
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4728
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4729
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4731
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4732
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4733
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4734
|
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
|
C++4736
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
C++4737
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
C++4738
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
C++4739
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
C++4741
|
EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries
|
C++4742
|
EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries
|
C++4743
|
EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries
|
C++4746
|
CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
|
C++4746
|
STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
|
C++4747
|
CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
|
C++4747
|
STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
|
C++4748
|
CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
|
C++4748
|
STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
|
C++4749
|
CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
|
C++4749
|
STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
|
C++4756
|
ERR57-CPP. Do not leak resources when handling exceptions
|
C++4757
|
ERR57-CPP. Do not leak resources when handling exceptions
|
C++4758
|
ERR57-CPP. Do not leak resources when handling exceptions
|
C++4761
|
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
|
C++4762
|
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
|
C++4766
|
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
|
C++4767
|
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
|
C++4770
|
STR51-CPP. Do not attempt to create a std::string from a null pointer
|
C++4771
|
STR51-CPP. Do not attempt to create a std::string from a null pointer
|
C++4772
|
STR51-CPP. Do not attempt to create a std::string from a null pointer
|
C++4773
|
STR51-CPP. Do not attempt to create a std::string from a null pointer
|
C++4774
|
STR51-CPP. Do not attempt to create a std::string from a null pointer
|
C++4776
|
OOP56-CPP. Honor replacement handler requirements
|
C++4777
|
OOP56-CPP. Honor replacement handler requirements
|
C++4778
|
OOP56-CPP. Honor replacement handler requirements
|
C++4779
|
OOP56-CPP. Honor replacement handler requirements
|
C++4786
|
FIO51-CPP. Close files when they are no longer needed
|
C++4787
|
FIO51-CPP. Close files when they are no longer needed
|
C++4788
|
FIO51-CPP. Close files when they are no longer needed
|
C++4941
|
DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary
|
C++4942
|
DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary
|
C++4943
|
DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary
|
C++4961
|
CON50-CPP. Do not destroy a mutex while it is locked
|
C++4962
|
CON50-CPP. Do not destroy a mutex while it is locked
|
C++4986
|
CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread
|
C++4987
|
CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread
|
C++5003
|
DCL51-CPP. Do not declare or define a reserved identifier
|
C++5014
|
ERR50-CPP. Do not abruptly terminate the program
|
C++5015
|
ERR52-CPP. Do not use setjmp() or longjmp()
|
C++5017
|
OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
|
C++5018
|
CON51-CPP. Ensure actively held locks are released on exceptional conditions
|
C++5019
|
CON54-CPP. Wrap functions that can spuriously wake up in a loop
|
C++5028
|
MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
|
C++5038
|
OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
|
C++5041
|
MSC51-CPP. Ensure your random number generator is properly seeded
|
C++5216
|
STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
|