このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
プログラミングの欠陥
プログラミングのコーディングエラーに関する欠陥、代入演算子と等号演算子、型の不一致、ラップアラウンド、string 配列
これらの欠陥は、プログラミング構文に関係するエラーです。欠陥には次のものがあります。
代入と等号演算子
変数修飾子または宣言の不一致
形式が正しくない文字列
Polyspace 結果
アサーション | 失敗したアサート ステートメント |
文字の値が EOF に吸収 | データ型変換によって、有効な文字値がファイル終端 (EOF) と同じになる |
宣言の不一致 | 関数または変数の宣言の間の不一致 |
errno がリセットされていません | errno を設定する関数を呼び出す前に errno をリセットしていない |
不適切な値の転送 | 転送されたオブジェクトが予期せず変更される場合がある |
反復子の使用法が無効です | Mismatched or uninitialized iterators are used in standard algorithm functions and comparison operations (R2022a 以降) |
== (等号) 演算子の無効な使用 | 代入ステートメント内の等号演算子 |
標準ライブラリ ルーチンの無効な使用 | 標準ライブラリ関数の間違った引数 |
va_list 引数が無効です | 変数の引数リストが、va_end での無効化後に使用されているか、va_start または va_copy で初期化されていない |
errno の不適切な使用 | errno がエラー状態について正しくチェックされていない |
ナロー文字列またはワイド文字列の不適切な使用 | ワイド (ナロー) 文字列関数に渡されるナロー (ワイド) 文字列 |
再呼び出し不可能な標準関数の戻り値の不適切な使用 | 後続の呼び出しがそのバッファーを変更しているにもかかわらず、前の呼び出しからの静的バッファーへのポインターを使用している |
AUTOSAR 仕様に非準拠 | RTE API 関数が、AUTOSAR 規格仕様に違反する引数を指定して使用されています (R2021a 以降) |
破棄された一時オブジェクトへのポインターまたは参照 | Destruction of temporary object results in dangling pointer or reference (R2023b 以降) |
sizeof を誤って使用している可能性があります | sizeof 演算子の使用が想定外の結果の原因となり得る |
演算子の優先順位のルールにより、予期せぬ式の評価が得られる可能性があります | 演算子の優先順位のルールにより、演算式での評価順が予想外のものになる |
未接続のポインターにより初期化された std::string_view | An std::string_view object is initialized by using an unnamed
temporary object (R2022b 以降) |
Typedef が一致しません | typedef ステートメント間の不一致 |
可変長配列が正のサイズをもっていません | 可変長配列のサイズがゼロか負である |
const 修飾子付きオブジェクトに書き込んでいます | const 修飾子で宣言されているオブジェクトが変更されている |
sizeof において使用された誤った型 | sizeof の引数が指している型と一致しない |
終了ハンドラーが異常終了しました | プログラムの正常な実行に割り込む終了ハンドラー関数 |
ファイル アクセス モードまたはステータスが不適切です | fopen または open グループの関数のアクセス モード引数が無効 |
プロトタイプのない関数ポインターによる呼び出し | パラメーターの型や数なしで宣言された関数ポインターは予期しない動作を引き起こす |
オーバーラップするメモリのコピーです | コピー関数のソース引数とコピー先引数にオーバーラップするメモリがある |
前の操作によって無効になった環境ポインター | setenv または putenv ファミリ関数の呼び出しによってポインターの参照先の環境が変更されている |
等号演算子による浮動小数点の比較 | 浮動小数点変数の不正確な比較 |
非同期安全ではない信号ハンドラーから呼び出された関数 | 割り込み関数の呼び出しは未定義のプログラム動作を引き起こす |
非同期安全ではない信号ハンドラーから呼び出された関数 (厳密な ISO C) | 割り込み関数の呼び出しは未定義のプログラム動作を引き起こす |
配列の初期化が不適切です | 初期化子を使用した場合の配列の初期化が正しくない |
非プロパーな erase-remove の用法 | Container's erase() is not called or called improperly following
a call to std::remove() (R2022a 以降) |
無効なデータ型が va_arg に渡されました | 可変個引数関数の引数のデータ型が va_arg 呼び出しの型と一致しない |
ポインターのスケーリングが無効です | ポインター演算での暗黙的なスケーリングは無視される場合がある |
va_start に渡された不正な型のデータ | va_start マクロの 2 番目の引数のデータ型による未定義の動作の発生 |
C++ の offsetof の誤った使用 | offsetof マクロの不適切な引数による未定義の動作の発生 |
va_start の誤った使用 | va_start を可変個引数関数でない関数で呼び出している、または可変個引数関数の右端のパラメーターでない 2 番目の引数を指定して呼び出している |
インライン制約が守られていません | const でない静的変数が非静的インライン関数で変更される |
メモリ編成の前提条件が無効です | 変数のアドレスに対する加算または減算によってアドレスが計算されている |
無効なファイル位置 | fsetpos() が fgetpos() から取得されたのではないファイル位置引数を使用して呼び出される |
= (代入) 演算子の無効な使用 | 条件付きステートメント内の代入 |
パディング データのメモリ比較 | 構造体のパディングで格納したデータを memcmp で比較している |
文字列のメモリ比較 | 文字列の NULL 終端以降に格納されたデータを memcmp で比較している |
データ転送時の欠落バイトの並べ替え | ホストとネットワークのエンディアンが異なる |
信号ハンドラーでの errno の不適切な使用 | 信号ハンドラーで errno を設定する関数を呼び出した後に errno を読み取る |
信号ハンドラー内でのデータ アクセスの共有 | 共有データへのアクセスまたは変更による不整合状態の発生 |
安全でないマクロへの引数の二次的影響 | 複数回評価されるか、評価されない可能性のある引数が含まれたマクロ |
信号ハンドラー内からの信号呼び出し | 非永続的な信号ハンドラーが Windows システム内で signal() を呼び出すことによる競合状態の発生 |
標準関数が正しくない引数で呼び出されました | 標準関数の引数がその関数における使用の要件を満たさない |
現在の引数リストに対する va_arg 呼び出しが多すぎます | va_arg の呼び出しの数が可変個引数関数に渡される引数の数を超えている |
現在の引数リストに対する va_arg 呼び出しが多すぎます | va_arg の呼び出しの数が可変個引数関数に渡される引数の数を超えている |
ヘッダー ファイルの無名の名前空間 | 複数の定義につながる無名の名前空間がヘッダー ファイルに含まれる |
ポインターと整数間での変換は安全ではありません | ポインターと整数型間の変換によるミスアライメントまたは不適切な結果 |
size 引数がゼロの memset を使用しています | memset ファミリの関数の size 引数がゼロ |
不確定文字列の使用 | fgets ファミリ関数の未検証バッファーの使用 |
移動後の変数の読み取り | A variable in a moved-from state is used in an operation that has preconditions (R2025a 以降) |
有効期間が一時的なオブジェクトにアクセスしています | オブジェクトに対する読み取りまたは書き込み操作が未定義の動作 |
フラッシュまたは位置付け呼び出しなしでのストリームからの入出力の交互実行 | 入出力ストリーム操作による未定義の動作 |
意図しない値をもつ memset の呼び出しです | memset または wmemset が、不正確とみられる引数とともに使用されている |
書式文字列指定子と引数の不一致 | printf のような関数で、書式指定子が対応する引数と一致していません |
浮動小数点値のメモリ比較 | 浮動小数点値のオブジェクト表現が、等しい (等しくない) 浮動小数点値で異なる (同じである) |
string 配列での null 値の欠落 | 文字列が null 文字で終了していない |
FILE オブジェクトの不適切な使用 | FILE オブジェクトのコピーの使用 |
符号拡張文字の値の不適切な使用 | 符号拡張によるデータ型変換は予期しない動作を引き起こす |
フレキシブル配列メンバーをもつ構造体の不適切な使用 | メモリの割り当てによるフレキシブル配列メンバーの無視 |
再呼び出し不可能な標準関数から返された内部バッファーが変更されています | 再呼び出し不可能な標準関数から返された内部バッファーが関数により変更されようとしている |
代入が重複しています | 代入の左辺と右辺間のメモリ オーバーラップ |
コピーして貼り付けのエラーの可能性あり | A section of code is duplicated in other places with exactly one minor change (R2023a 以降) |
オブジェクトとして使用される事前定義されたマクロ | assert や errno などの標準ライブラリのマクロをオブジェクトとして使用する |
マクロ引数のプリプロセッサ命令 | 関数形式のマクロの引数で使用されるプリプロセッサ命令 |
変換において修飾子を削除 | 変数修飾子が変換中に失われる |
別のポインターと比較された string::c_str() の結果 | The C string obtained from std::string::c_str() is compared to a
pointer (or NULL) (R2021b 以降) |
計算例外の信号ハンドラーからの戻り値 | プログラム エラーから信号ハンドラーが通常どおりに値を返す場合の未定義の動作 |
式の二次的影響は無視されます | 二次的影響のある式に対して実行される sizeof 、_Alignof 、または _Generic |
意図しない二次的影響の可能性があるストリーム引数 | 複数回発生するストリーム引数の二次的影響 |
トークン連結からのユニバーサル文字名 | ## 演算子でトークンを結合することによりユニバーサル文字列名を作成 |
文字列から数値への変換は安全ではありません | 検証チェックなしの文字列から数値への変換 |
トピック
- Bug Finder 欠陥グループ
Bug Finder の欠陥チェッカーは、データ フロー、同時実行、数値などのグループに分類されています。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)