MISRA C++:2008 Rule 3-2-2

Одно Правило Определения не должно быть нарушено

Описание

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

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

Одно Правило Определения не должно быть нарушено.

Объяснение

Нарушения Одного Правила Определения приводят к неопределенному поведению.

Реализация Polyspace

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

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

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

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

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

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

Одно Правило Определения не должно быть нарушено.

Объявление класса className нарушает Одно Правило Определения:

это конфликтует с другим объявлением (fileName lineNumber).

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

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

Примеры

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

Этот пример использует два файла:

  • file1.cpp:

    typedef struct S //Noncompliant
    {
       int x;
       int y;
    }S; 
    void foo(S& s){
    //...
    } 
  • file2.cpp:

    typedef struct S 
    {
       int y;
       int x;
    }S ; 
    void bar(S& s){
    //...
    }

В этом примере, обоих file1.cpp и file2.cpp задайте структуру S. Однако определения переключают порядок полей структуры.

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

Группа: фундаментальные понятия
Категория: необходимый
Введенный в R2013b