Unused parameter

Прототип функции имеет параметры, не считанные или записанные в тело функции

Описание

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

Риск

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

Если скопированные объекты большие, избыточные копии могут замедлить эффективность.

Зафиксировать

Определите, хотите ли вы использовать параметры. В противном случае удалите параметры, которые вы не используете в теле функции.

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

Кроме того, добавьте оператор, такой как (void)var; в теле функции. var - неиспользованный параметр. Можно задать макрос, который расширяется до этого оператора и добавляет макрос к телу функции.

Примеры

расширить все

void func(int* xptr, int* yptr, int flag) {
    if(flag==1) {
        *xptr=0;
    }
    else {
        *xptr=1;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}

В этом примере параметр yptr не используется в теле func.

Коррекция - Используйте параметр

Одной из возможных коррекций является проверка, хотите ли вы использовать параметр. Исправьте код, если вы намеревались использовать параметр.

void func(int* xptr, int* yptr, int flag) {
    if(flag==1) {
        *xptr=0;
        *yptr=1;
    }
    else {
        *xptr=1;
        *yptr=0;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}
Коррекция - явное указание на неиспользованный параметр

Другой возможной коррекцией является явное указание на то, что вы знаете о неиспользованном параметре.

#define UNUSED(x) (void)x

void func(int* xptr, int* yptr, int flag) {
    UNUSED(yptr);
    if(flag==1) {
        *xptr=0;
    }
    else {
        *xptr=1;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}

Информация о результатах

Группа: Хорошая практика
Язык: C | C++
По умолчанию: Off
Синтаксис командной строки: UNUSED_PARAMETER
Влияние: Низкое
Введенный в R2015b