Title: PRQA QA-C++_V  
Author: Jill Britton Jul 31, 2014
Last Changed by: Dario Necco Dec 02, 2019
Tiny Link: (useful for email) https://wiki.sei.cmu.edu/confluence/x/DHs-BQ
Export As: Word · PDF  
Incoming Links
SEI CERT C++ Coding Standard (50)
    Page: OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
    Page: CON51-CPP. Ensure actively held locks are released on exceptional conditions
    Page: INT50-CPP. Do not cast to an out-of-range enumeration value
    Page: CTR54-CPP. Do not subtract iterators that do not refer to the same container
    Page: MSC52-CPP. Value-returning functions must return a value from all exit paths
    Page: DCL53-CPP. Do not write syntactically ambiguous declarations
    Page: CTR50-CPP. Guarantee that container indices and iterators are within the valid range
    Page: ERR56-CPP. Guarantee exception safety
    Page: CON53-CPP. Avoid deadlock by locking in a predefined order
    Page: OOP51-CPP. Do not slice derived objects
    Page: OOP58-CPP. Copy operations must not mutate the source object
    Page: ERR50-CPP. Do not abruptly terminate the program
    Page: OOP53-CPP. Write constructor member initializers in the canonical order
    Page: ERR52-CPP. Do not use setjmp() or longjmp()
    Page: MEM50-CPP. Do not access freed memory
    Page: CON52-CPP. Prevent data races when accessing bit-fields from multiple threads
    Page: CON54-CPP. Wrap functions that can spuriously wake up in a loop
    Page: ERR61-CPP. Catch exceptions by lvalue reference
    Page: DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
    Page: ERR55-CPP. Honor exception specifications
    Page: CTR56-CPP. Do not use pointer arithmetic on polymorphic objects
    Page: EXP54-CPP. Do not access an object outside of its lifetime
    Page: MEM52-CPP. Detect and handle memory allocation errors
    Page: CON55-CPP. Preserve thread safety and liveness when using condition variables
    Page: DCL52-CPP. Never qualify a reference type with const or volatile
    Page: MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
    Page: ERR58-CPP. Handle all exceptions thrown before main() begins executing
    Page: OOP54-CPP. Gracefully handle self-copy assignment
    Page: EXP53-CPP. Do not read uninitialized memory
    Page: CTR58-CPP. Predicate function objects should not be mutable
    Page: EXP50-CPP. Do not depend on the order of evaluation for side effects
    Page: ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
    Page: CON50-CPP. Do not destroy a mutex while it is locked
    Page: DCL50-CPP. Do not define a C-style variadic function
    Page: ERR51-CPP. Handle all exceptions
    Page: OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
    Page: DCL59-CPP. Do not define an unnamed namespace in a header file
    Page: MSC54-CPP. A signal handler must be a plain old function
    Page: OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
    Page: ERR60-CPP. Exception objects must be nothrow copy constructible
    Page: CTR53-CPP. Use valid iterator ranges
    Page: EXP52-CPP. Do not rely on side effects in unevaluated operands
    Page: DCL58-CPP. Do not modify the standard namespaces
    Page: DCL51-CPP. Do not declare or define a reserved identifier
    Page: EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
    Page: MEM51-CPP. Properly deallocate dynamically allocated resources
    Page: OOP50-CPP. Do not invoke virtual functions from constructors or destructors
    Page: PRQA QA-C++
    Page: ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
    Page: EXP56-CPP. Do not call a function with a mismatched language linkage
SEI CERT C Coding Standard (59)
    Page: ERR33-C. Detect and handle standard library errors
    Page: DCL40-C. Do not create incompatible declarations of the same function or object
    Page: MEM34-C. Only free memory allocated dynamically
    Page: FLP34-C. Ensure that floating-point conversions are within range of the new type
    Page: PRE30-C. Do not create a universal character name through concatenation
    Page: FIO34-C. Distinguish between characters read from a file and EOF or WEOF
    Page: INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
    Page: INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
    Page: CON41-C. Wrap functions that can fail spuriously in a loop
    Page: STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
    Page: ENV34-C. Do not store pointers returned by certain functions
    Page: SIG34-C. Do not call signal() from within interruptible signal handlers
    Page: FLP32-C. Prevent or detect domain and range errors in math functions
    Page: MSC37-C. Ensure that control never reaches the end of a non-void function
    Page: EXP39-C. Do not access a variable through a pointer of an incompatible type
    Page: EXP45-C. Do not perform assignments in selection statements
    Page: INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
    Page: FIO40-C. Reset strings on fgets() or fgetws() failure
    Page: FLP30-C. Do not use floating-point variables as loop counters
    Page: ARR37-C. Do not add or subtract an integer to a pointer to a non-array object
    Page: PRE32-C. Do not use preprocessor directives in invocations of function-like macros
    Page: FIO41-C. Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects
    Page: STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
    Page: MSC33-C. Do not pass invalid data to the asctime() function
    Page: DCL39-C. Avoid information leakage when passing a structure across a trust boundary
    Page: ENV31-C. Do not rely on an environment pointer following an operation that may invalidate it
    Page: FIO37-C. Do not assume that fgets() or fgetws() returns a nonempty string when successful
    Page: EXP34-C. Do not dereference null pointers
    Page: FLP36-C. Preserve precision when converting integral values to floating-point type
    Page: MEM35-C. Allocate sufficient memory for an object
    Page: STR30-C. Do not attempt to modify string literals
    Page: DCL30-C. Declare objects with appropriate storage durations
    Page: FIO42-C. Close files when they are no longer needed
    Page: EXP33-C. Do not read uninitialized memory
    Page: FIO44-C. Only use values for fsetpos() that are returned from fgetpos()
    Page: EXP46-C. Do not use a bitwise operator with a Boolean-like operand
    Page: INT36-C. Converting a pointer to integer or integer to pointer
    Page: MEM36-C. Do not modify the alignment of objects by calling realloc()
    Page: MEM30-C. Do not access freed memory
    Page: STR34-C. Cast characters to unsigned char before converting to larger integer sizes
    Page: FIO32-C. Do not perform operations on devices that are only appropriate for files
    Page: CON37-C. Do not call signal() in a multithreaded program
    Page: ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
    Page: EXP36-C. Do not cast pointers into more strictly aligned pointer types
    Page: FIO46-C. Do not access a closed file
    Page: INT32-C. Ensure that operations on signed integers do not result in overflow
    Page: PRE31-C. Avoid side effects in arguments to unsafe macros
    Page: MSC30-C. Do not use the rand() function for generating pseudorandom numbers
    Page: MSC40-C. Do not violate constraints
    Page: STR38-C. Do not confuse narrow and wide character strings and functions
    Page: FIO30-C. Exclude user input from format strings
    Page: CON33-C. Avoid race conditions when using library functions
    Page: ERR34-C. Detect errors when converting a string to a number
    Page: STR37-C. Arguments to character-handling functions must be representable as an unsigned char
    Page: MEM31-C. Free dynamically allocated memory when no longer needed
    Page: ARR38-C. Guarantee that library functions do not form invalid pointers
    Page: ARR39-C. Do not add or subtract a scaled integer to a pointer
    Page: INT30-C. Ensure that unsigned integer operations do not wrap
    Page: EXP37-C. Call functions with the correct number and type of arguments
Parent Page
    Page: CC. Analyzers
There are no labels assigned to this page.