書式文字列指定子と引数の不一致
printf のような関数で、書式指定子が対応する引数と一致していません
説明
この欠陥は、printf などの書式設定付き出力関数内の書式指定子が、それに対応する引数と一致しない場合に発生します。たとえば、unsigned long 型の引数の書式指定は %lu でなければなりません。
リスク
書式指定子と対応する引数の間の不一致により、未定義の動作が発生します。
修正方法
書式指定子が対応する引数と一致することを確認します。たとえば、次の例では、%d 指定子は文字列引数 message に一致せず、%s 指定子は整数引数 err_number に一致しません。
const char *message = "License not available";
int err_number = -4;
printf("Error: %d (error type %s)\n", message, err_number);認識される引数のデータ型が整数プロモーションによって変更された場合、解析結果に元の型とプロモーション後の型の両方が示されます。書式指定子は整数プロモーション後の型と一致していなければなりません。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: オン |
コマンド ライン構文: STRING_FORMAT |
| 影響度: Low |
バージョン履歴
R2013b で導入