C and C++


LANG.TYPE.OC : Octal Constant

Summary

An integer constant (other than 0) is specified in octal format.

Properties

Class Name Octal Constant
Significance style
Mnemonic LANG.TYPE.OC
Categories
MisraC2023 MisraC2023:7.1 Octal constants shall not be used
Misra2012 Misra2012:7.1 Octal constants shall not be used
Misra2004 Misra2004:7.1 Octal constants (other than zero) and octal escape sequences shall not be used
AUTOSARC++14 AUTOSARC++14:M2-13-2 Octal constants (other than zero) and octal escape sequences (other than "\0" ) shall not be used.
MisraC++2008 MisraC++2008:2-13-2 Octal constants (other than zero) and octal escape sequences (other than "\0") shall not be used.
MisraC++2023 MisraC++2023:5.13.3 Octal constants shall not be used
CWE CWE:1078 Inappropriate Source Code Style or Formatting
  CWE:1389 Incorrect Parsing of Numbers with Different Radices
CERT-C CERT-C:DCL18-C Do not begin integer constants with 0 when specifying a decimal value
JSF++ JSF++:149 Octal constants (other than zero) shall not be used.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Octal Constant"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

int decint = 10;                              /* decimal format */

int octint = 012; /* 'Octal Constant' warning issued here */

int hexint = 0xa;                             /* hexadecimal format */

int octint0 = 0;                              /* 0 is a special case */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.