MISRA C:2012 Rule 5.1

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

Описание

Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (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