exponenta event banner

MISRA C:2012 Правило 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 значимых символов без учета регистра во внешних идентификаторах. Идентификаторы в двух трансляциях различны, но не отличаются своими значимыми символами.

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

Группа: идентификаторы
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b