Main Content

MISRA C++:2008 Rule 0-1-11

There shall be no unused parameters (named or unnamed) in nonvirtual functions

Description

Rule Definition

There shall be no unused parameters (named or unnamed) in nonvirtual functions.

Rationale

Unused parameters often indicate later design changes. You perhaps removed all uses of a specific parameter but forgot to remove the parameter from the parameter list.

Unused parameters constitute an unnecessary overhead. You can also inadvertently call the function with a different number of arguments causing a parameter mismatch.

Polyspace Implementation

The checker flags a function that has unused named parameters unless the function body is empty.

Additional Message in Report

Function funcName has unused parameters.

Troubleshooting

If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

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);
}

In this example, the three functions callback_1, callback_2 and callback_3 are used as callback functions. One of the three functions is called via a function pointer depending on a value obtained at run time.

  • Function callback_1 uses all its parameters and does not violate the rule.

  • Function callback_2 does not use its parameter a and violates this rule.

  • Function callback_3 also does not use its first parameter but it does not violate the rule because the parameter is unnamed. However, Polyspace flags the unused parameter as a rule violation. If you see a violation of this kind, justify the violation with comments. See Address Results in Polyspace User Interface Through Bug Fixes or Justifications.

Check Information

Group: Language Independent Issues
Category: Required

Version History

Introduced in R2016b