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 также не использует его первый параметр, но это не нарушает правило, потому что параметр без имени. However, Polyspace® отмечает неиспользованный параметр, как правило, нарушение. Если вы видите нарушение этого вида, выравниваете по ширине нарушение с комментариями. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

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

Группа: независимые от языка проблемы
Категория: необходимый

Введенный в R2017b