MISRA C:2023 Rule 22.9
The value of errno shall be tested against zero after calling an errno-setting function
R2024a 以降
説明
ルール定義
The value of errno shall be tested against zero after calling an errno-setting function. 1
This rule comes from MISRA C™:2012 Amendment 1.
根拠
errno を設定する関数の呼び出し中にエラーが発生すると、その関数は errno に非ゼロ値を書き込みます。そうでない場合、errno は変更されません。
errno が非ゼロの場合、その関数が正しい戻り値を返す可能性が低くなります。この戻り値を使用する前に、errno が非ゼロ値かどうかをテストしなければなりません。
Errno を設定する関数は以下のとおりです。
ftell、fgetpos、fgetwcおよび関連する関数。strtoimax、strtolおよび関連する関数。wcstoimaxやwcstolなどのワイド文字の等価な関数も対象になります。
Polyspace 実装
コードで、errno を設定する関数を呼び出しているが、別の関数を呼び出す前に errno が 0 であるかを確認しない場合、Polyspace® はこのルールの違反を報告します。
Polyspace は、C 標準で errno を設定する関数として指定されている関数に対してのみ、このルールの違反を報告します。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: Resources |
| カテゴリ: 必要 |
| AGC カテゴリ: 必要 |
バージョン履歴
R2024a で導入
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.