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 are within the valid range
|
ABV.TAINTED
|
CTR50-CPP. Guarantee that container indices and iterators are within the valid range
|
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.MEM.OVERRIDE.DELETE
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
CERT.MEM.OVERRIDE.NEW
|
MEM55-CPP. Honor replacement dynamic storage management requirements
|
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.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
|
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
|
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
|
EXP50-CPP. Do not depend on the order of evaluation for side effects
|
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
|