exponenta event banner

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

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

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

Группа: Дизайн кода
Категория: Консультационные услуги
Категория СМЖЛ: удобочитаемость
Представлен в R2015b