MISRA C:2012 Dir 4.5

Идентификаторы в пространстве с тем же именем с перекрывающейся видимостью должны быть типографски однозначными

Описание

Определение директивы

Идентификаторы в пространстве с тем же именем с перекрывающейся видимостью должны быть типографски однозначными.

Объяснение

Что означает «однозначное», зависит от алфавита и языка, на котором написан исходный код. Когда вы используете идентификаторы, которые типографски близки, можно перепутать между ними.

Для латинского алфавита, используемого в английских словах, как минимум, идентификаторы не должны отличаться:

  • Обмен строчной буквы с ее верхним эквивалентом.

  • Наличие или отсутствие символа подчеркивания.

  • Обмен буквой O и цифра 0.

  • Обмен буквой I и цифра 1.

  • Обмен буквой I и буквы l.

  • Обмен буквой S и цифра 5.

  • Обмен буквой Z и цифра 2.

  • Обмен буквой n и буквы h.

  • Обмен буквой B и цифра 8.

  • Обмен буквами rn и буквы m.

Реализация Polyspace

Чекер помечает идентификаторы в тех же возможностях, которые отличаются друг от друга только вышеуказанными символами.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

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 */
}

В этом примере правило нарушается, когда используются идентификаторы, которые могут быть перепутаны друг для друга.

Проверяйте информацию

Группа: Кодовые проекты
Категория: Консультационные
Категория AGC: Читаемость
Введенный в R2015b