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.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 |
ASSIGCOND.CALL | EXP19-CPP. Do not perform assignments in conditional expressions |
ASSIGCOND.GEN | EXP19-CPP. Do not perform assignments in conditional expressions |
IF_DEF_IN_HEADER_DECL | DCL36-CPP. Do not declare an identifier with conflicting linkage classifications |
IF_DUPL_HEADER | PRE08-CPP. Guarantee that header file names are unique |
IF_MULTI_DECL | DCL01-CPP. Do not reuse variable names in subscopes |
IF_MULTI_DECL | DCL36-CPP. Do not declare an identifier with conflicting linkage classifications |
IF_MULTI_DEF | DCL01-CPP. Do not reuse variable names in subscopes |
IF_MULTI_KIND | DCL01-CPP. Do not reuse variable names in subscopes |
INC.EXTRA | MSC12-CPP. Detect and remove code that has no effect |
LOCRET.* | DCL30-CPP. Declare objects with appropriate storage durations |
PRECISION.LOSS | INT31-CPP. Ensure that integer conversions do not result in lost or misinterpreted data |
SV.FMTSTR.GENERIC | FIO30-CPP. Exclude user input from format strings |
SV.RVT.RETVAL_NOTTESTED | EXP12-CPP. Do not ignore values returned by functions or methods |
SV.TAINTED.FMTSTR | FIO30-CPP. Exclude user input from format strings |
|
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.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.OVERRIDE.DELETE | MEM55-CPP. Honor replacement dynamic storage management requirements |
CERT.MEM.OVERRIDE.NEW | MEM55-CPP. Honor replacement dynamic storage management requirements |
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.CONTAINER.MODIFIED | CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container |
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.CAST.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 |