メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C:2012 Rule 17.8

A function parameter should not be modified

説明

ルール定義

A function parameter should not be modified 1 .

根拠

パラメーターが変更される場合でも、そのパラメーターに対応する関数の引数は変更されません。しかし、C に習熟していないプログラマーにより、ユーザーがパラメーターを変更すると引数も変更されるという誤った想定が行われる可能性があります。

Polyspace 実装

関数の本体で関数パラメーターが変更された場合に、Polyspace® はこのルールの違反を報告します。関数パラメーターが const として別の関数にアドレスによって渡された場合は、Polyspace はこのルールの違反を報告しません。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

この例では、パラメーター param1 が変更された場合にルールに違反します。Polyspace は違反を報告します。param3const として foo に渡されるため、変更されていません。Polyspace は違反を報告しません。

int input(void);
int foo(const int*);
void func(int param1, int* param2, int param3) {
    
    param1 = input();   /* Non-compliant */
    *param2 = input();  /* Compliant */
    foo(&param3); /*Compliant*/
}

param2 などのポインター パラメーターが変更された場合は、ルールに違反しません。

チェック情報

グループ: 関数
カテゴリ: 推奨
AGC カテゴリ: Readability

バージョン履歴

R2015b で導入

すべて展開する


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.