MISRA C++:2008 Rule 2-10-5

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

Описание

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

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

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

Объяснение

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

Реализация Polyspace

Флаги средства проверки правила переопределили функции только, когда существует объявление.

Средство проверки не повышено на неиспользованном коде такой как

  • Неинстанцированные шаблоны

  • Невостребованный static или extern функции

  • Невостребованные и неопределенные локальные функции

  • Неиспользованные типы и переменные

Bug Finder и Программа автоматического доказательства Кода проверяют это правило кодирования по-другому. Исследования могут привести к различным результатам.

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

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

Идентификатор name не должен быть снова использован.

Уже используемый в качестве статического идентификатора со статической продолжительностью хранения (fileName lineNumber).

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

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

Примеры

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

namespace NS1 {
    static int WIDTH;
}

namespace NS2 {
    float WIDTH; //Noncompliant
}

В этом примере, имя идентификатора WIDTH снова используется в этих двух пространствах имен NS1 и NS2.

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

Группа: лексические соглашения
Категория: консультация
Введенный в R2013b