MISRA C++:2008 Rule 27-0-1
The stream input/output library <cstdio> shall not be used.
説明
ルール定義
The stream input/output library <cstdio> shall not be used. 1
根拠
gets()、fgetpos()、fopen()、ftell() など、cstdio の関数には未指定、未定義、および処理系定義の動作があります。
次に例を示します。
関数
gets():において、標準入力で渡された文字数がバッファーchar * gets ( char * buf );
bufを超えているかどうかはチェックしません。入力がバッファーを超えている場合、この関数では予期しない動作が生じる可能性があります。関数
fopenには、エラーに対してerrnoを設定するかどうか、または標準的なモード指定子の後ろに追加文字を受け入れるかどうかに関する実装固有の動作があります。
Polyspace 実装
<cstdio> で宣言されている関数を使用すると、Polyspace® はこのルールの違反を報告します。Polyspace は、以下の関数 cstdio の使用を検出します。
remove()やrename()などのファイル操作関数。fclose()、fflush()、fopen()などのファイル アクセス関数。fprintf()、fscanf()、printf()、scanf()などの書式設定付き入力/出力関数。fgetc()、fgets()、fputc()、getc()などの文字入力/出力関数。fread()やfwrite()などの直接入力/出力関数。fgetpos()やfsetpos()などのファイル位置付け関数。clearerr()、ferror()、perror()などのエラー処理関数。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Input/output Library |
| カテゴリ: 必要 |
バージョン履歴
R2013b で導入
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.