Contents
Table of Contents |
---|
Introduction
This coding standard consists of rules and recommendations, collectively referred to as guidelines. Rules are meant to provide normative requirements for code, whereas recommendations are meant to provide guidance that, when followed, should improve the safety, reliability, and security of software systems. However, a violation of a recommendation does not necessarily indicate the presence of a defect in the code.
Rules
Rules must meet the following criteria:
...
Rules are identified by the label rule.
Recommendations
Recommendations are suggestions for improving code quality. Guidelines are defined to be recommendations when all of the following conditions are met:
...
Recommendations are identified by the label recommendation.
Noncompliant Code Examples and Compliant Solutions
Noncompliant code examples illustrate code that violates the guideline under discussion. It is important to note that these are only examples, and eliminating all occurrences of the example does not necessarily mean that the code being analyzed is now compliant with the guideline.
Noncompliant code examples are typically followed by compliant solutions, which show how the noncompliant code example can be recoded in a secure, compliant manner. Except where noted, noncompliant code examples should contain violations only of the guideline under discussion. Compliant solutions should comply with all of the secure coding rules but may on occasion fail to comply with a recommendation.
Exceptions
Any rule or recommendation may specify a small set of exceptions detailing the circumstances under which the guideline is not necessary to ensure the safety, reliability, or security of software. Exceptions are informative only and are not required to be followed.
Identifiers
Each rule and recommendation is given a unique identifier. These identifiers consist of three parts:
- a three-letter mnemonic representing the section of the standardprefix that represents the topic the rule/recommendation belongs to
- a two-digit numeric value in the range of 00-99
- a suffix that represents the associated language or platform
Supported Languages and Platforms
...
See the table below for a summary of supported languages and platforms:
Suffix | Language/Platform |
-C | C |
-CPP | C++ |
-J | Java |
-PL | Perl |
Examples
Here are some example identifiers with an explanation of each:
INT50-CPP Do not cast to an out-of-range enumeration value
This identifier indicates a recommendation
“INT” stands for the Integer category
“50” is the unique identifier
“-CPP” stands for the C++ language
...
The three-letter mnemonic can be used to group similar coding practices and to indicate to which category a coding practice belongs.
The numeric value is used to give each coding practice a unique identifier. Numeric values in the range of 00-29 are reserved for recommendations, while values in the range of 30-99 are reserved for rules.
EXP00-J Do not ignore values returned by methods
This identifier indicates a rule
“EXP” stands for the Expressions category
“00” is the unique identifier
“-J” stands for the Java language
FLP00-C. Understand the limitations of floating-point numbers
This identifier indicates a recommendation
“FLP” stands for the Floating Point category
“00” is the unique identifier
“-C” stands for the C programming language