MISRA C++:2008 Rule 2-10-1

Different identifiers shall be typographically unambiguous

Description

Rule Definition

Different identifiers shall be typographically unambiguous.

Rationale

When you use identifiers that are typographically close, you can confuse between them.

The identifiers should not differ by:

  • The interchange of a lowercase letter with its uppercase equivalent.

  • The presence or absence of the underscore character.

  • The interchange of the letter O and the digit 0.

  • The interchange of the letter I and the digit 1.

  • The interchange of the letter I and the letter l.

  • The interchange of the letter S and the digit 5.

  • The interchange of the letter Z and the digit 2.

  • The interchange of the letter n and the letter h.

  • The interchange of the letter B and the digit 8.

  • The interchange of the letters rn and the letter m.

Polyspace Implementation

The rule checker does not consider the fully qualified names of variables when checking this rule.

Bug Finder and Code Prover check this coding rule differently. The analyses can produce different results.

Troubleshooting

If you expect a rule violation but do not see it, refer to the documentation for Polyspace® Code Prover™ or Polyspace Code Prover Server™.

Examples

expand all

void func(void) {
    int id1_numval;
    int id1_num_val;  //Non-compliant

    int id2_numval;
    int id2_numVal;   //Non-compliant

    int id3_lvalue;
    int id3_Ivalue;   //Non-compliant

    int id4_xyZ;
    int id4_xy2;      //Non-compliant

    int id5_zerO;
    int id5_zer0;     //Non-compliant

    int id6_rn;
    int id6_m;        //Non-compliant
}

In this example, the rule is violated when identifiers that can be confused for each other are used.

Check Information

Group: Lexical Conventions
Category: Required
Introduced in R2013b