メインコンテンツ

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

There shall be no unused parameters (named or unnamed) in non- virtual functions.

説明

ルール定義

There shall be no unused parameters (named or unnamed) in non- virtual functions. 1

根拠

未使用のパラメーターは多くの場合、後から設計を変更したことを示します。おそらく、特定のパラメーターの使用をすべて削除したが、パラメーター リストからそのパラメーターを削除し忘れているのです。

未使用のパラメーターは不要なオーバーヘッドになります。誤って異なる数の引数を指定して関数を呼び出し、パラメーターの不一致を引き起こす可能性もあります。

Polyspace 実装

チェッカーは、関数本体が空でない限り、未使用の名前付きパラメーターをもつ関数にフラグを立てます。

レポート内の追加のメッセージ

Function funcName has unused parameters.

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

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

この例では、3 つの関数 callback_1callback_2、および callback_3 がコールバック関数として使用されています。実行時に取得された値に応じて、3 つの関数のいずれかが関数ポインターを介して呼び出されます。

  • 関数 callback_1 はすべてのパラメーターを使用しており、ルール違反ではありません。

  • 関数 callback_2 はパラメーター a を使用しておらず、このルールに違反します。

  • 関数 callback_3 も最初のパラメーターを使用していませんが、そのパラメーターには名前がないためルール違反ではありません。ただし、Polyspace は未使用のパラメーターにルール違反としてフラグを設定します。この種類の違反が表示された場合は、コメントを使用して違反を正当化します。Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処を参照してください。

チェック情報

グループ: Language Independent Issues
カテゴリ: 必要

バージョン履歴

R2016b で導入


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.