exponenta event banner

MISRA C++: Правило 2008 0-1-11

Неиспользуемые параметры (именованные или неназванные) в невиртуальных функциях не должны быть

Описание

Определение правила

Неиспользуемые параметры (именованные или неназванные) в невиртуальных функциях не допускаются.

Объяснение

Неиспользуемые параметры часто указывают на более поздние изменения конструкции. Возможно, вы удалили все виды использования определенного параметра, но забыли удалить параметр из списка параметров.

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

Внедрение Polyspace

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

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

Функция funcName имеет неиспользуемые параметры.

Поиск неисправностей

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

Примеры

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

typedef int (*callbackFn) (int a, int b);

int callback_1 (int a, int b) { //Compliant
    return a+b;
}

int callback_2 (int a, int b) { //Noncompliant
    return a;
}

int callback_3 (int, int b) { //Compliant - flagged by Polyspace
    return b;
}

int getCallbackNumber();
int getInput();

void main() {
    callbackFn ptrFn;
    int n = getCallbackNumber();
    int x = getInput(), y = getInput();
    switch(n) {
        case 0: ptrFn = &callback_1; break;
        case 1: ptrFn = &callback_2; break;
        default: ptrFn = &callback_3; break;
    }
    
    (*ptrFn)(x,y);
}

В этом примере три функции callback_1, callback_2 и callback_3 используются в качестве функций обратного вызова. Одна из трех функций вызывается через указатель функции в зависимости от значения, полученного во время выполнения.

  • Функция callback_1 использует все его параметры и не нарушает правило.

  • Функция callback_2 не использует его параметр a и нарушает это правило.

  • Функция callback_3 также не использует первый параметр, но не нарушает правило, так как параметр не имеет имени. Однако Polyspace ® помечает неиспользуемый параметр как нарушение правила. Если вы видите нарушение такого рода, обосновывайте нарушение комментариями. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.

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

Группа: Вопросы, не зависящие от языка
Категория: Обязательно
Представлен в R2016b