Checker   |  Guideline   | 
|---|
|  ABV.ANY_SIZE_ARRAY  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  ABV.GENERAL  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  ABV.GENERAL.MULTIDIMENSION  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  ABV.NON_ARRAY  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  ABV.STACK  |  CTR50-CPP. Guarantee that container indices and iterators  | 
 C++ checkers   |  Rule   | 
|---|
 ABR   | ARR30-CPP. Guarantee that array and vector indices  are within the valid range  | 
|  ABV.TAINTED  | ARR30 CTR50-CPP. Guarantee that  array container indices and  vector indices iterators are within the valid range  | 
 IF_MULTI_DECL   |  DCL01-CPP. Do not reuse variable names in subscopes   | 
 IF_MULTI_DEF   |  DCL01-CPP. Do not reuse variable names in subscopes   | 
 IF_MULTI_KIND   |  DCL01-CPP. Do not reuse variable names in subscopes   | 
 SV.RVT.RETVAL_NOTTESTED   |  EXP12-CPP. Do not ignore values returned by functions or methods   | 
 | 
|  AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT  |   MSC51-CPP. Ensure your random number generator is properly seeded   | 
|  CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED  |   CON50-CPP. Do not destroy a mutex while it is locked   | 
|  CERT.CONC.UNSAFE_COND_VAR  |   CON55-CPP. Preserve thread safety and liveness when using condition variables   | 
|  CERT.CONC.WAKE_IN_LOOP  |   CON54-CPP. Wrap functions that can spuriously wake up in a loop   | 
|  CERT.DCL.AMBIGUOUS_DECL  |   DCL53-CPP. Do not write syntactically ambiguous declarations   | 
|  CERT.DCL.REF_TYPE.CONST_OR_VOLATILE  |   DCL52-CPP. Never qualify a reference type with const or volatile   | 
|  CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC  |   DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope   | 
|  CERT.DCL.STD_NS_MODIFIED  |   DCL58-CPP. Do not modify the standard namespaces   | 
|  CERT.ERR.ABRUPT_TERM  |   ERR50-CPP. Do not abruptly terminate the program   | 
|  CERT.ERR.CONV.STR_TO_NUM  |   ERR62-CPP. Detect errors when converting a string to a number   | 
|  CERT.EXCEPTION.OVER.BOUNDARY  |   ERR59-CPP. Do not throw an exception across execution boundaries   | 
|  CERT.EXPR.DELETE_ARR.BASE_PTR  |   EXP51-CPP. Do not delete an array through a pointer of the incorrect type   | 
|  CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE  |   EXP57-CPP. Do not cast or delete pointers to incomplete classes   | 
|  CERT.EXPR.PARENS  |   EXP50-CPP. Do not depend on the order of evaluation for side effects   | 
|  CERT.EXPR.PASS_NON_STD_LAYOUT  |   EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries   | 
|  CERT.MEM.OBJ_LIFETIME_CTOR  |   MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime   | 
|  CERT.MEM.OBJ_LIFETIME_DTOR  |   MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime   | 
|  CERT.MEM.OVERRIDE.DELETE  |   MEM55-CPP. Honor replacement dynamic storage management requirements   | 
|  CERT.MEM.OVERRIDE.NEW  |   MEM55-CPP. Honor replacement dynamic storage management requirements   | 
|  CERT.MEM.PLACEMENTNEW.MISALIGNED  |   MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity   | 
|  CERT.MEM.PLACEMENTNEW.TOOSMALL  |   MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity   | 
|  CERT.MEM.SMART_PTR.OWNED  |   MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer   | 
|  CERT.MEM.SMART_PTR.OWNED.THIS  |   MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer   | 
|  CERT.MEMCMP.PADDED_DATA  |   EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation   | 
|  CERT.MSC.NORETURN_FUNC_RETURNS  |   MSC53-CPP. Do not return from a function declared [[noreturn]]   | 
|  CERT.MSC.SIG_HANDLER.POF  |   MSC54-CPP. A signal handler must be a plain old function   | 
|  CERT.MSC.STD_RAND_CALL  |   MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers   | 
|  CERT.OOP.COPY_MUTATES  |   OOP58-CPP. Copy operations must not mutate the source object   | 
|  CERT.OOP.CSTD_FUNC_USE  |   OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions   | 
|  CERT.OOP.CTOR.INIT_ORDER  |   OOP53-CPP. Write constructor member initializers in the canonical order   | 
|  CERT.OOP.CTOR.VIRTUAL_FUNC  |   OOP50-CPP. Do not invoke virtual functions from constructors or destructors   | 
|  CERT.OOP.PTR_MEMBER.NO_MEMBER  |   OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members   | 
|  CERT.VA_START.TYPE  |   EXP58-CPP. Pass an object of the correct type to va_start   | 
|  CL.FFM.ASSIGN  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  CL.FFM.ASSIGN  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  CL.FFM.COPY  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  CL.FFM.COPY  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  CL.FMM  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  CL.MLK  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  CL.MLK.VIRTUAL  |   OOP52-CPP. Do not delete a polymorphic object without a virtual destructor   | 
|  CL.SELF-ASSIGN  |   OOP54-CPP. Gracefully handle self-copy assignment   | 
|  CL.SHALLOW.ASSIGN  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  CL.SHALLOW.COPY  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  CWARN.DTOR.NONVIRT.DELETE  |   OOP52-CPP. Do not delete a polymorphic object without a virtual destructor   | 
|  CWARN.MEM.NONPOD  |   EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation   | 
|  FMM.MIGHT  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FMM.MUST  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FNH.MIGHT  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FNH.MUST  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FUM.GEN.MIGHT  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FUM.GEN.MUST  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  FUNCRET.GEN  |   MSC52-CPP. Value-returning functions must return a value from all exit paths   | 
|  FUNCRET.IMPLICIT  |   MSC52-CPP. Value-returning functions must return a value from all exit paths   | 
|  ITER.ADVANCE.NONADJACENT  |   CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow   | 
|  ITER.CONTAINER.MODIFIED  |   CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container   | 
|  ITER.END.OUTPARAM.MIGHT  |   CTR52-CPP. Guarantee that library functions do not overflow   | 
|  ITER.END.OUTPARAM.MUST  |   CTR52-CPP. Guarantee that library functions do not overflow   | 
|  LOCRET.ARG  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  LOCRET.GLOB  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  LOCRET.RET  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  LOCRET.RET  |   EXP61-CPP. A lambda object must not outlive any of its reference captured objects   | 
|  MISRA.CAST.CONST  |   EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type   | 
|  MISRA.CAST.PTR.UNRELATED  |   EXP56-CPP. Do not call a function with a mismatched language linkage   | 
|  MISRA.CAST.PTR_TO_INT  |   EXP56-CPP. Do not call a function with a mismatched language linkage   | 
|  MISRA.CATCH.ALL  |   ERR51-CPP. Handle all exceptions   | 
|  MISRA.CATCH.BY_VALUE  |   ERR61-CPP. Catch exceptions by lvalue reference   | 
|  MISRA.CATCH.NOALL  |   ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived   | 
|  MISRA.CATCH.WRONGORD  |   ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived   | 
|  MISRA.CTOR.TRY.NON_STATIC  |   ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler   | 
|  MISRA.DEFINE.WRONGNAME  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MISRA.DEFINE.WRONGNAME.UNDERSCORE  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MISRA.DTOR.THROW  |   DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions   | 
|  MISRA.EXPR.PARENS.INSUFFICIENT  |   EXP50-CPP. Do not depend on the order of evaluation for side effects   | 
|  MISRA.FUNC.VARARG  |   DCL50-CPP. Do not define a C-style variadic function   | 
|  MISRA.INCR_DECR.OTHER  |   EXP50-CPP. Do not depend on the order of evaluation for side effects   | 
|  MISRA.NAMESPACE.UNMD  |   DCL59-CPP. Do not define an unnamed namespace in a header file   | 
|  MISRA.SIZEOF.SIDE_EFFECT  |   EXP52-CPP. Do not rely on side effects in unevaluated operands   | 
|  MISRA.STDLIB.LONGJMP  |   ERR52-CPP. Do not use setjmp() or longjmp()   | 
|  MISRA.STDLIB.WRONGNAME  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MISRA.STDLIB.WRONGNAME.UNDERSCORE  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MISRA.TERMINATE  |   ERR50-CPP. Do not abruptly terminate the program   | 
|  MISRA.UNDEF.WRONGNAME  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MISRA.UNDEF.WRONGNAME.UNDERSCORE  |   DCL51-CPP. Do not declare or define a reserved identifier   | 
|  MLK.MIGHT  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  MLK.MUST  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  MLK.RET.MIGHT  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  MLK.RET.MUST  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  NNTS.MIGHT  |   STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator   | 
|  NNTS.MUST  |   STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator   | 
|  NNTS.TAINTED  |   STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator   | 
|  NPD.CHECK.CALL.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CHECK.CALL.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.CHECK.CALL.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CHECK.CALL.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.CHECK.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CHECK.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.CHECK.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CHECK.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.CONST.CALL  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CONST.CALL  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.CONST.DEREF  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.CONST.DEREF  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.FUNC.CALL.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.FUNC.CALL.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.FUNC.CALL.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.FUNC.CALL.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.FUNC.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.FUNC.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.FUNC.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.FUNC.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.GEN.CALL.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.GEN.CALL.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.GEN.CALL.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.GEN.CALL.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.GEN.MIGHT  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.GEN.MIGHT  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  NPD.GEN.MUST  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  NPD.GEN.MUST  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  PORTING.CAST.PTR  |   EXP56-CPP. Do not call a function with a mismatched language linkage   | 
|  PORTING.CAST.PTR.FLTPNT  |   EXP56-CPP. Do not call a function with a mismatched language linkage   | 
|  PORTING.CAST.PTR.SIZE  |   EXP56-CPP. Do not call a function with a mismatched language linkage   | 
|  PORTING.VAR.EFFECTS  |   EXP50-CPP. Do not depend on the order of evaluation for side effects   | 
|  RH.LEAK  |   FIO51-CPP. Close files when they are no longer needed   | 
|  RH.LEAK  |   ERR57-CPP. Do not leak resources when handling exceptions   | 
|  RNPD.CALL  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  RNPD.CALL  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  RNPD.DEREF  |   STR51-CPP. Do not attempt to create a std::string from a null pointer   | 
|  RNPD.DEREF  |   MEM52-CPP. Detect and handle memory allocation errors   | 
|  SV.TAINTED.ALLOC_SIZE  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  SV.TAINTED.CALL.INDEX_ACCESS  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  SV.TAINTED.CALL.LOOP_BOUND  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  SV.TAINTED.INDEX_ACCESS  |   CTR50-CPP. Guarantee that container indices and iterators are within the valid range   | 
|  SV.UNBOUND_STRING_INPUT.CIN  |   STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator   | 
|  UFM.DEREF.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.DEREF.MIGHT  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.DEREF.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.DEREF.MUST  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.FFM.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.FFM.MIGHT  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.FFM.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.FFM.MUST  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.RETURN.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.RETURN.MIGHT  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.RETURN.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.RETURN.MUST  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.USE.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.USE.MIGHT  |   MEM50-CPP. Do not access freed memory   | 
|  UFM.USE.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UFM.USE.MUST  |   MEM50-CPP. Do not access freed memory   | 
|  UNINIT.CTOR.MIGHT  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.CTOR.MIGHT  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  UNINIT.CTOR.MUST  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.CTOR.MUST  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  UNINIT.HEAP.MIGHT  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.HEAP.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.HEAP.MIGHT  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  UNINIT.HEAP.MUST  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.HEAP.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.HEAP.MUST  |   MEM51-CPP. Properly deallocate dynamically allocated resources   | 
|  UNINIT.STACK.ARRAY.MIGHT  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.STACK.ARRAY.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.STACK.ARRAY.MUST  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.STACK.ARRAY.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.STACK.ARRAY.PARTIAL.MUST  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.STACK.ARRAY.PARTIAL.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.STACK.MIGHT  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.STACK.MIGHT  |   EXP54-CPP. Do not access an object outside of its lifetime   | 
|  UNINIT.STACK.MUST  |   EXP53-CPP. Do not read uninitialized memory   | 
|  UNINIT.STACK.MUST  |   EXP54-CPP. Do not access an object outside of its lifetime   |  SV.TAINTED.INDEX_ACCESS   |  ARR30-CPP. Guarantee that array and vector indices are within the valid range  |