Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info
titleGenerated Content

This page is automatically generated from the "Automated Detection" sections in the individual guidelines. Do not modify this page directly.

Version number:

Include Page
Parasoft_V
Parasoft_V

Checker

Guideline

EXP51-CPP. Do not delete an array through a pointer of the incorrect type
EXP53-CPP. Do not read uninitialized memory
EXP54-CPP. Do not access an object outside of its lifetime
EXP57-CPP. Do not cast or delete pointers to incomplete classes
MEM50-CPP. Do not access freed memory
MEM51-CPP. Properly deallocate dynamically allocated resources
MEM52-CPP. Detect and handle memory allocation errors
FIO51-CPP. Close files when they are no longer needed
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
DCL19-CPP. Initialize automatic local variables on declaration
FIO04-CPP. Detect and handle input and output errors
MEM01-CPP. Store a valid value in pointers immediately after deallocation
MEM11-CPP. Allocate and free memory in the same module, at the same level of abstraction
BD-PB-ARRAYEXP08-CPP. Ensure pointer arithmetic is used correctly
BD-PB-NOTINITEXP53-CPP. Do not read uninitialized memory
BD-PB-NPOOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
BD-PB-NPMSC08-CPP. Functions should validate their parameters
BD-PB-OVERFWRSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
BD-PB-OVERF{RD, WR, FMT, NZT}CTR52-CPP. Guarantee that library functions do not form invalid iterators
BD-PB-OVERF{RD, WR, FMT, NZT}STR53-CPP. Range check element access
BD-PB-OVERNZTSTR03-CPP. Do not inadvertently truncate a null-terminated character array
BD-PB-SWITCH, JSF-186_{a, b, c, d, e, f, g}MSC07-CPP. Detect and remove dead code
BD-PB-SWITCH, JSF-186_{a,b,c,d,e,f,g}MSC12-CPP. Detect and remove code that has no effect
BD-PB-ZERO, MISRA2004-10_2_{b,c,d}FLP03-CPP. Detect and handle floating point errors
BD-RES-FREEEXP54-CPP. Do not access an object outside of its lifetime
BD-RES-FREEMEM50-CPP. Do not access freed memory
BD-RES-LEAKSFIO51-CPP. Close files when they are no longer needed
BD-RES-LEAKSERR56-CPP. Guarantee exception safety
BD-RES-LEAKSERR57-CPP. Do not leak resources when handling exceptions
BD-SECURITY-INTOVERFINT04-CPP. Enforce limits on integer values originating from untrusted sources
BD-SECURITY-OVERFRDINT04-CPP. Enforce limits on integer values originating from untrusted sources
BD-SECURITY-OVERFWRINT04-CPP. Enforce limits on integer values originating from untrusted sources
BD-SECURITY-TDFNAMESFIO02-CPP. Canonicalize path names originating from untrusted sources
BD-SECURITY-TDFNAMESMSC09-CPP. Character encoding: Use subset of ASCII for safety
BD-SECURITY-TDFNAMESMSC10-CPP. Character encoding: UTF8-related issues
BD-SECURITY-{TDCMD, TDFNAMES, TDSQL}STR02-CPP. Sanitize data passed to complex subsystems
CODSTA-11MSC11-CPP. Incorporate diagnostic tests using assertions
CODSTA-122_{a,b}ERR10-CPP. Check for error conditions
CODSTA-122{a,b}EXP12-CPP. Do not ignore values returned by functions or methods
CODSTA-198MSC01-CPP. Strive for logical completeness
CODSTA-26DCL06-CPP. Use meaningful symbolic constants to represent literal values in program logic
CODSTA-34DCL05-CPP. Use typedefs to improve code readability
CODSTA-63EXP15-CPP. Beware of integer promotion when performing bitwise operations on chars or shorts
CODSTA-69STR07-CPP. Don't assume numeric values for expressions with type plain character
CODSTA-74DCL59-CPP. Do not define an unnamed namespace in a header file
CODSTA-97EXP00-CPP. Use parentheses for precedence of operation
CODSTA-CPP-01FIO17-CPP. Prefer streams to C-style input and output
CODSTA-CPP-05OOP01-CPP. Be careful with the definition of conversion operators
CODSTA-CPP-09EXP13-CPP. Prefer dynamic_cast over static_cast over reinterpret_cast
CODSTA-CPP-09EXP14-CPP. Do not use reinterpret_cast on pointers to class objects with multiple inheritence
CODSTA-CPP-70MSC21-CPP. Use inequality to terminate a loop whose counter changes by more than one
CODSTA-CPP04OOP09-CPP. Ensure that single-argument constructors are marked "explicit"
CPP-83DCL01-CPP. Do not reuse variable names in subscopes
CPP-84DCL01-CPP. Do not reuse variable names in subscopes
EXCEPT-02ERR09-CPP. Throw anonymous temporaries
EXCEPT-13ERR51-CPP. Handle all exceptions
EXCEPT-14ERR55-CPP. Honor exception specifications
EXCEPT-16ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
EXCEPT-17ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
EXCEPT-18ERR58-CPP. Constructors of objects with static or thread storage duration must not throw exceptions
FORMAT-29DCL04-CPP. Do not declare more than one variable per declaration
FORMAT-31EXP17-CPP. Treat relational and equality operators as if they were nonassociative
INIT-03DCL19-CPP. Initialize automatic local variables on declaration
INIT-04DCL19-CPP. Initialize automatic local variables on declaration
INIT-10OOP53-CPP. Write constructor member initializers in the canonical order
INIT-12DCL14-CPP. Avoid assumptions about the initialization order between translation units
JSF-009MSC09-CPP. Character encoding: Use subset of ASCII for safety
JSF-014DCL16-CPP. Use "L," not "l," to indicate a long value
JSF-094OOP07-CPP. Do not inherit from multiple classes that have distinct objects with the same name
JSF-094_bOOP02-CPP. Do not hide inherited non-virtual member functions
JSF-114MSC54-CPP. Value-returning functions must return a value from all exit paths
JSF-117_aOOP51-CPP. Do not slice derived objects
JSF-118DCL13-CPP. Declare function parameters that are pointers to values not changed by the function as const
JSF-126MSC04-CPP. Use comments consistently and in a readable fashion
JSF-136_{a,b}DCL07-CPP. Minimize the scope of variables and methods
JSF-137DCL15-CPP. Declare file-scope objects or functions that do not need external linkage in an unnamed namespace
JSF-147MSC14-CPP. Do not introduce unnecessary platform dependencies
JSF-157EXP02-CPP. Be aware of the short-circuit behavior of the logical AND and OR operators
JSF-159DCL10-CPP. Do not overload the ampersand, comma, logical AND or logical OR operators
JSF-159bDCL10-CPP. Do not overload the ampersand, comma, logical AND or logical OR operators
JSF-166, JSF-166_{b,c}EXP52-CPP. Do not rely on side effects in unevaluated operands
JSF-187MSC03-CPP. Avoid errors of addition
JSF-193MSC18-CPP. Finish every set of statements associated with a case label with a break statement
JSF-194MSC01-CPP. Strive for logical completeness
JSF-203MSC15-CPP. Do not depend on undefined behavior
JSF-204.1{a,b,c,d,g}EXP50-CPP. Do not depend on the order of evaluation for side effects
MEM-06MEM51-CPP. Properly deallocate dynamically allocated resources
MEM-12MEM51-CPP. Properly deallocate dynamically allocated resources
MEM-28MEM51-CPP. Properly deallocate dynamically allocated resources
MEM-29MEM51-CPP. Properly deallocate dynamically allocated resources
MISRA-043_{c,d}FLP05-CPP. Convert integers to floating point for floating point operations
MISRA-043{b}INT02-CPP. Understand integer conversion rules
MISRA-043{b}INT18-CPP. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISRA-096PRE02-CPP. Macro replacement lists should be parenthesized
MISRA-101EXP08-CPP. Ensure pointer arithmetic is used correctly
MISRA2004-11_4EXP56-CPP. Do not cast pointers into more strictly aligned pointer types
MISRA2004-13_3FLP00-CPP. Understand the limitations of floating-point numbers
MISRA2004-13_3FLP02-CPP. Avoid using floating point numbers when precise computation is needed
MISRA2004-14_2MSC13-CPP. Detect and remove unused values
MISRA2004-16_1DCL50-CPP. Do not define a C-style variadic function
MISRA2004-19_10PRE01-CPP. Use parentheses within macros around parameter names
MISRA2004-19_7PRE00-CPP. Avoid defining macros
MISRA2004-20_10INT06-CPP. Use strtol() or a related function to convert a string token to an integer
MISRA2004-4_2-3PRE07-CPP. Avoid using repeated question marks
MISRA2004-6_1STR00-CPP. Represent characters using an appropriate type
MISRA2004-6_1STR04-CPP. Use plain char for characters in the basic character set
MISRA2004-6_4INT12-CPP. Do not make assumptions about the type of a plain int bit-field when used in an expression
MISRA2004-6_{1,2}INT07-CPP. Use only explicitly signed or unsigned char type for numeric values
MISRA2008-15_3_1ERR58-CPP. Constructors of objects with static or thread storage duration must not throw exceptions
MISRA2008-15_5_2ERR55-CPP. Honor exception specifications
MISRA2008-17_0_1_{a, b}DCL51-CPP. Do not declare or define a reserved identifier
MISRA2008-5_0_21INT13-CPP. Use bitwise operators only on unsigned operands
MISRA2008-5_0_21INT16-CPP. Do not make assumptions about representation of signed integers
MISRA2008-5_2_8EXP16-CPP. Avoid conversions using void pointers
MISRA2008-5_2_8INT11-CPP. Take care when converting from pointer to integer or integer to pointer
MISRA2008-7_1_1DCL00-CPP. Const-qualify immutable objects
MISRA2012-RULE-21_4_{a,b}, JSF-020ERR52-CPP. Do not use setjmp() or longjmp()
MISRA2012-RULE-21_5_bMSC56-CPP. A signal handler must be a plain old function
MISRA2012-RULE-21_5_bSIG00-CPP. Mask signals handled by noninterruptible signal handlers
MISRA2012-RULE-21_5_bSIG01-CPP. Understand implementation-specific details regarding signal handler persistence
MISRA2012-RULE-21_5_bSIG02-CPP. Avoid using signals to implement normal functionality
MISRA2012-RULE-21_8ENV02-CPP. Do not call system() if you do not need a command processor
MISRA2012-RULE-21_8ERR04-CPP. Choose an appropriate termination strategy
MISRA2012-RULE-21_8ERR05-CPP. Application-independent code should provide error detection without dictating error handling
MISRA2012-RULE-8_12INT09-CPP. Ensure enumeration constants map to unique values
MRM-09MEM01-CPP. Store a valid value in pointers immediately after deallocation
MRM-10MEM01-CPP. Store a valid value in pointers immediately after deallocation
MRM-11MEM01-CPP. Store a valid value in pointers immediately after deallocation
MRM-14MEM55-CPP. Honor replacement dynamic storage management requirements
MRM-15MEM55-CPP. Honor replacement dynamic storage management requirements
MRM-18MEM11-CPP. Allocate and free memory in the same module, at the same level of abstraction
MRM-19MEM11-CPP. Allocate and free memory in the same module, at the same level of abstraction
MRM-20MEM11-CPP. Allocate and free memory in the same module, at the same level of abstraction
MRM-26DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
MRM-27DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
MRM-34MEM52-CPP. Detect and handle memory allocation errors
MRM-39, CODSTA-122_{a,b}FIO04-CPP. Detect and handle input and output errors
MRM-45EXP01-CPP. Do not take the size of a pointer to determine the size of the pointed-to type
MRM-50OOP06-CPP. Create a private copy constructor and assignment operator for non copyable objects
NAMING-45DCL02-CPP. Use visually distinct identifiers
OOP-02OOP51-CPP. Do not slice derived objects
OOP-03OOP07-CPP. Do not inherit from multiple classes that have distinct objects with the same name
OOP-04OOP07-CPP. Do not inherit from multiple classes that have distinct objects with the same name
OOP-07OOP07-CPP. Do not inherit from multiple classes that have distinct objects with the same name
OOP-12OOP08-CPP. Do not return references to private data
OOP-13OOP04-CPP. Prefer not to give virtual functions default argument initializers
OOP-16OOP50-CPP. Do not invoke virtual functions from constructors or destructors
OOP-17OOP03-CPP. Prefer not to overload virtual functions
OOP-22OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
OOP-34OOP54-CPP. Gracefully handle self-assignment
OOP-48OOP00-CPP. Declare data members private
OPT-04EXP18-CPP. Prefer the prefix forms of ++ and --
OPT-14DCL17-CPP. Declare function parameters that are large data structures and are not changed by the function as const references
PB-10EXP51-CPP. Do not delete an array through a pointer of the incorrect type
PB-10CTR56-CPP. Do not use pointer arithmetic on polymorphic objects
PB-32CTR01-CPP. Do not apply the sizeof operator to a pointer when taking the size of an array
PB-32EXP01-CPP. Do not take the size of a pointer to determine the size of the pointed-to type
PB-35MSC02-CPP. Avoid errors of omission
PB-45FIO00-CPP. Take care when creating format strings
PB-46FIO00-CPP. Take care when creating format strings
PB-47FIO00-CPP. Take care when creating format strings
PB-48FIO00-CPP. Take care when creating format strings
PB-49FIO00-CPP. Take care when creating format strings
PB-50FIO00-CPP. Take care when creating format strings
PB-54EXP57-CPP. Do not cast or delete pointers to incomplete classes
PB-55EXP57-CPP. Do not cast or delete pointers to incomplete classes
PB-BD-CCMSC02-CPP. Avoid errors of omission
PFO-02PRE06-CPP. Enclose header files in an inclusion guard
SECURITY-02MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
SECURITY-03ENV00-CPP. Beware of multiple environment variables with the same effective name
SECURITY-12STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
SECURITY-13INT05-CPP. Do not use input functions to convert character data if they cannot handle all possible inputs
SECURITY-15ERR12-CPP. Do not allow exceptions to transmit sensitive information
SECURITY-19FIO19-CPP. Do not create temporary files in shared directories
SECURITY-25CON00-CPP. Avoid assuming functions are thread safe unless otherwise specified
SECURITY-27FIO01-CPP. Be careful using functions that use file names for identification
SECURITY-40FIO06-CPP. Create files with appropriate access permissions
STL-02CTR56-CPP. Do not use pointer arithmetic on polymorphic objects
STL-07CTR04-CPP. Assume responsibility for cleaning up data referenced by a container of pointers
STL-10CTR00-CPP. Understand when to prefer vectors over arrays
STL-36CTR50-CPP. Guarantee that container indices and iterators are within the valid range
STL-36CTR53-CPP. Use valid iterator ranges