このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
-show-similar-overflows
ラップ アラウンド モードでのすべてのオーバーフローの表示
構文
-show-similar-overflows
説明
-show-similar-overflows
は、根本原因が同じでも、すべてのオーバーフローをラップ アラウンド モードで表示します。
オプションの [符号付き整数のオーバーフロー モード] (-signed-integer-overflows)
または [符号なし整数のオーバーフロー モード] (-unsigned-integer-overflows)
に対して warn-with-wrap-around
を選択した場合は、オーバーフローした値がラップされます。たとえば、値 INT_MAX + 1
は INT_MIN
の周りにラップされます。オーバーフローする値を含むパスは、オーバーフロー後にラップされた値につながり、数行後に同様のオーバーフローが発生する可能性があります。既定で、Code Prover は、根本原因が同じオーバーフローを検出し、同様のオーバーフローの最初のものだけを表示します。このオーバーフローを修正すると、後続のオーバーフローも修正されます。すべてのオーバーフローをラップ アラウンド モードで表示するには、オプション -show-similar-overflows
を使用します。
ユーザー インターフェイス (Polyspace® デスクトップ製品のみ) では、[構成] ペインの [その他] フィールドにこのオプションを入力します。Other
を参照してください。
例
この例では、var
の値が不明で、エッジ ケースが演算 *copy1 = var * 2
でのオーバーフローにつながる可能性があります。同じエッジ ケースが次の演算のオーバーフローにもつながります。Code Prover は、最初の演算のオレンジ [オーバーフロー] チェックのみを表示します。
int input(); void getEven(int* copy1, int* copy2) { int var; var = input(); *copy1 = var * 2; *copy2 = var * 2; }
オプション -show-similar-overflows
が使用されている場合は、Code Prover が両方の演算のオレンジ [オーバーフロー] チェックを表示します。
int input(); void getEven(int* copy1, int* copy2) { int var; var = input(); *copy1 = var * 2; *copy2 = var * 2; }
バージョン履歴
R2020b で導入