Versions Compared

Key

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

...

Checker

Guideline

CERT C++: CON50-CPP CON50-CPP. Do not destroy a mutex while it is locked
CERT C++: CON52-CPP CON52-CPP. Prevent data races when accessing bit-fields from multiple threads
CERT C++: CON53-CPP CON53-CPP. Avoid deadlock by locking in a predefined order
CERT C++: CON54-CPP CON54-CPP. Wrap functions that can spuriously wake up in a loop
CERT C++: CTR50-CPP CTR50-CPP. Guarantee that container indices and iterators are within the valid range
CERT C++: DCL50-CPP DCL50-CPP. Do not define a C-style variadic function
CERT C++: DCL51-CPP DCL51-CPP. Do not declare or define a reserved identifier
CERT C++: DCL52-CPP DCL52-CPP. Never qualify a reference type with const or volatile
CERT C++: DCL53-CPP DCL53-CPP. Do not write syntactically ambiguous declarations
CERT C++: DCL54-CPP DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
CERT C++: DCL57-CPP DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
CERT C++: DCL58-CPP DCL58-CPP. Do not modify the standard namespaces
CERT C++: DCL59-CPP DCL59-CPP. Do not define an unnamed namespace in a header file
CERT C++: DCL60-CPP DCL60-CPP. Obey the one-definition rule
CERT C++: ERR50-CPP ERR50-CPP. Do not abruptly terminate the program
CERT C++: ERR51-CPP ERR51-CPP. Handle all exceptions
CERT C++: ERR52-CPP ERR52-CPP. Do not use setjmp() or longjmp()
CERT C++: ERR53-CPP ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
CERT C++: ERR54-CPP ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
CERT C++: ERR61-CPP ERR61-CPP. Catch exceptions by lvalue reference
CERT C++: EXP50-CPP EXP50-CPP. Do not depend on the order of evaluation for side effects
CERT C++: EXP52-CPP EXP52-CPP. Do not rely on side effects in unevaluated operands
CERT C++: EXP53-CPP EXP53-CPP. Do not read uninitialized memory
CERT C++: EXP54-CPP EXP54-CPP. Do not access an object outside of its lifetime
CERT C++: EXP55-CPP EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
CERT C++: EXP57-CPP EXP57-CPP. Do not cast or delete pointers to incomplete classes
CERT C++: EXP58-CPP EXP58-CPP. Pass an object of the correct type to va_start
CERT C++: EXP59-CPP EXP59-CPP. Use offsetof() on valid types and members
CERT C++: EXP61-CPP EXP61-CPP. A lambda object must not outlive any of its reference captured objects
CERT C++: FIO50-CPP FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
CERT C++: FIO51-CPP FIO51-CPP. Close files when they are no longer needed
CERT C++: MEM50-CPP MEM50-CPP. Do not access freed memory
CERT C++: MEM51-CPP MEM51-CPP. Properly deallocate dynamically allocated resources
CERT C++: MEM52-CPP MEM52-CPP. Detect and handle memory allocation errors
CERT C++: MEM57-CPP MEM57-CPP. Avoid using default operator new for over-aligned types
CERT C++: MSC50-CPP MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
CERT C++: MSC51-CPP MSC51-CPP. Ensure your random number generator is properly seeded
CERT C++: MSC52-CPP MSC52-CPP. Value-returning functions must return a value from all exit paths
CERT C++: OOP51-CPP OOP51-CPP. Do not slice derived objects
CERT C++: OOP52-CPP OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
CERT C++: OOP53-CPP OOP53-CPP. Write constructor member initializers in the canonical order
CERT C++: OOP54-CPP OOP54-CPP. Gracefully handle self-copy assignment
CERT C++: OOP57-CPP OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
CERT C++: OOP58-CPP OOP58-CPP. Copy operations must not mutate the source object
CERT C++: STR50-CPP STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
CERT C++: STR53-CPP STR53-CPP. Range check element access