MISRA C:2012 Rule 5.1

Внешние идентификаторы должны быть отличными

Описание

Это средство проверки деактивировано в Polyspace® по умолчанию как Вы Анализ кода. Смотрите Средства проверки, Деактивированные в Polyspace, когда Вы Кодируете Анализ По умолчанию (Polyspace Bug Finder Access).

Управляйте определением

Внешние идентификаторы должны быть отличными.

Объяснение

Внешние идентификаторы являются единицами, объявленными с глобальной областью видимости или классом памяти extern.

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

Реализация Polyspace

Polyspace рассматривает два имени как отличные, если существует различие между их первым 31 символом. Для C90 различие должно находиться между первыми 6 символами. Чтобы использовать проверку правил C90, используйте значение c90 для опции C standard version (-c-version). Можно изменить количество символов, сравненных с помощью опции -code-behavior-specifications. Смотрите -code-behavior-specifications.

Дополнительное сообщение в отчете

Внешний %s %s конфликты с внешним идентификатором XX в файле YY.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

int engine_temperature_raw;
int engine_temperature_scaled;   /* Non-compliant */					
int engin2_temperature;          /* Compliant */	

В этом примере, идентификатор engine_temperature_scaled имеет те же первые шесть символов как предыдущий идентификатор, engine_temperature_raw.

int engine_exhaust_gas_temperature_raw;
int engine_exhaust_gas_temperature_scaled; /* Non-compliant */					

int eng_exhaust_gas_temp_raw;
int eng_exhaust_gas_temp_scaled;           /* Compliant */						

В этом примере, идентификатор engine_exhaust_gas_temperature_scaled имеет тот же первый 31 символ как предыдущий идентификатор, engine_exhaust_gas_temperature_raw.

/* file1.c */
int abc = 0;
/* file2.c */
int ABC = 0; /* Non-compliant */

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

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

Группа: Идентификаторы
Категория: необходимый
Категория AGC: необходимый
Введенный в R2014b