Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.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 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 delete a polymorphic object without a virtual destructor 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 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