exponenta event banner

CERT C: Rec. DCL02-C

Использование визуально отличных идентификаторов

Описание

Определение правила

Используйте визуально различные идентификаторы. [1 ]

Внедрение Polyspace

Эта проверка проверяет использование типографских неоднозначных идентификаторов.

Примеры

развернуть все

Проблема

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

Риск

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

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

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

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

  • Обмен письмом O и цифра 0.

  • Обмен письмом I и цифра 1.

  • Обмен письмом I и письмо l.

  • Обмен письмом S и цифра 5.

  • Обмен письмом Z и цифра 2.

  • Обмен письмом n и письмо h.

  • Обмен письмом B и цифра 8.

  • Обмен буквами rn и письмо m.

Пример - типографские неоднозначные идентификаторы
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 */
}

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

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

Группа: Rec. 02. Объявления и инициализация (DCL)
Представлен в R2019a

[1] Данное программное обеспечение было создано компанией MathWorks и включает в себя следующие компоненты: «Веб-сайт SEI CERT-C», © 2017 Университет Карнеги-Меллон, веб-сайт SEI CERT-C + + © 2017 Университет Карнеги-Меллон, "Стандарт кодирования SEI CERT C - Правила разработки безопасных, Надежные и безопасные системы - 2016 Edition ", © 2016 Университет Карнеги-Меллон, и "Стандарт кодирования SEI CERT C++ - Правила разработки безопасных, Надежные и безопасные системы в C++ - 2016 Edition "© 2016 Университет Карнеги-Меллон, со специальным разрешением от его Института программного обеспечения.

ЛЮБОЙ МАТЕРИАЛ УНИВЕРСИТЕТА КАРНЕГИ МЕЛЛОНА И/ИЛИ ЕГО ПРОГРАММНОГО ИНЖЕНЕРНОГО ИНСТИТУТА, СОДЕРЖАЩИЙСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ, ПОСТАВЛЯЕТСЯ КАК ЕСТЬ. УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ЛЮБЫХ ВОПРОСОВ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ЦЕЛЕЙ ИЛИ ТОВАРНОЙ ПРИГОДНОСТИ, ИСКЛЮЧИТЕЛЬНОСТИ ИЛИ РЕЗУЛЬТАТОВ, ПОЛУЧЕННЫХ ОТ ИСПОЛЬЗОВАНИЯ УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ СВОБОДЫ ОТ ПАТЕНТА, ТОВАРНОГО ЗНАКА ИЛИ НАРУШЕНИЯ АВТОРСКИХ ПРАВ.

Данное программное обеспечение и связанная с ним документация не были рассмотрены и не одобрены Университетом Карнеги-Меллона или его Институтом разработки программного обеспечения.