MISRA C++:2008 Rule 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® помечает неиспользованный параметр как нарушение правил. Если вы видите нарушение такого рода, обосновывайте нарушение комментариями. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.

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

Группа: Языковые независимые вопросы
Категория: Требуемая
Введенный в R2016b