This document defines a standard for the production of high quality C code, and consists of a number of rules and procedures. High quality C code is defined as being:
Justification is provided for each rule. This involves defining a base language and then further restricting the use of this base language to a subset satisfying the high quality issues as mentioned before. The restrictions are chosen such that the subset contains no features that are open to interpretation, either by a compiler or by programmers.
This standard applies to all initiated software development projects (thus including outsourced C code). This standard does not apply to C code developed by a 3rd party or generated by a 3rd party tool.
This standard is not intended to satisfy any legal, auditing, or quality assurance criteria.
The policy of the standard is that all rules shall be enforced by static code analyzers and code reviews.
The base language is defined by the ANSI C89 Standard. The coding standard does allow some compiler extensions supported by ISO C99 standard. The section arrangement has been kept similar to the C99 standard.
This standard aims to help developers in creating high quality C code. It therefore enforces best practices in C development and prohibits use of a number of features of C known to lead to portability issues, because they are unstructured or lead to unspecified, undefined or implementation-defined behavior. In each case a justification is presented as to why the restriction is being applied.
Because research into better subsets of languages in general and C in particular is ongoing, this standard shall not be fixed. From time to time this standard will be reviewed and updated to reflect the contemporary best practices in developing C code, enabling to continue with its policy of providing high quality C code that represents the current state of the art.
Each rule has a level (range 1 through 10) assigned to it, depending on its importance. The level is used by the integration tooling to determine if a violation has to be solved or not. Most, but not all, rules are checkable by the SQ tool.
This C-Coding Standard is provided "AS IS", without warranty of any kind and without indemnity of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the C Coding Standard, the ue of the C Coding Standard or other dealings with the C Coding standard. This Disclaimer shall be included in all copies or substantial protions of the C Coding Standard.
This coding standard may only be used, copied, merged, published or distributed by licensed companies. Licenses will only be granted in writing and upon written acceptance by TIOBE Software.