適切な手法の欠陥
適切なコーディング手法に従うことが可能な欠陥 (ハードコードされたメモリ バッファー サイズや未使用の関数パラメーターの検出など)
これらの欠陥により、コーディング手法の適切さが保たれます。欠陥は、それ自体がクラッシュを発生させなくても、コード内にあるより深刻な論理エラーを示している場合があります。欠陥により、攻撃に対するコードの脆弱性が検出され、保守が難しい場合もあります。欠陥には次のものがあります。
ハード コードされた定数 (バッファー サイズやループ境界など)
コードの可読性を妨げる問題
潜在的なコーディング エラー
constの欠落
Polyspace 結果
不明瞭な宣言の構文 | 宣言の構文はオブジェクト宣言としてまたは関数宣言の一部として解釈可能 |
ステートメントのインデントが正しくありません | ステートメントのインデントが間違っていることによって、それがブロックの一部として表示される |
科学表記形式が無効です | 無効な形式を使用するとコードの可読性が低くなる (R2022b 以降) |
ステートメントが複数存在する行 | 1 行に複数のステートメント |
重複しているコード | コード セクションが他の場所で重複している (R2023a 以降) |
部分的に重複しているコード | A section of code is duplicated in other places with very minor changes (R2023a 以降) |
バッファー サイズがハードコードされています | メモリ バッファーのサイズがシンボリック定数ではなく数値になっている |
ループ境界がハードコードされています | ループ境界がシンボリック定数でなく数値になっている |
メモリの操作に使用するオブジェクトのサイズがハードコードされています | sizeof の代わりにサイズがハードコードされているメモリ操作 |
const でないメソッド | A method that can be made const is not marked
const (R2022a 以降) |
パブリックな静的フィールドが const ではない | A static and public field of a
struct or class is not marked as a
const (R2022a 以降) |
未変更の変数に const 修飾子が付いていません | const 修飾されていない変数の値が存続期間中に変更されない |
セミコロンで終了するマクロ | マクロ定義がセミコロンで終了している |
マクロに複数のステートメントがあります | マクロがセミコロンで終了する複数のステートメントで構成されており、ステートメントは中かっこで囲まれている場合と囲まれていない場合がある |
switch case の break がありません | switch ステートメントの case ブロックが break、[[fallthrough]]、または説明コメントで終了していない |
データ型は switch 式に不適切な可能性があります | switch 式に char、short、int、または enum 以外のデータ型が含まれている |
if、for、または while ステートメントと同じ行にあるセミコロン | 同じ行にセミコロンがあると、if、for、または while ステートメントの本体が空になる |
void ポインターが削除されています | オブジェクトを指す void* ポインターに対し delete を実行 |
割り当て関数または割り当て解除関数のオーバーロードが見つかりません | 割り当て関数と割り当て解除関数のペアのうち 1 つの関数のみをオーバーロード |
解放したポインターのリセットがありません | ポインター free の後に、残りのデータをクリアするリセット ステートメントが続いていない |
const 修飾子付きの型と後続の変更への C++ 参照 | const 修飾子付きの型の参照を後で変更 |
const 修飾子または volatile 修飾子付きの C++ の参照型 | 冗長な const 修飾子または volatile 修飾子で宣言されている参照型 |
汎用の例外に対するキャッチの宣言 | A catch block handles a generic exception that might have many
different subtypes (R2022a 以降) |
汎用の例外に対するスローの宣言 | A function throws a generic exception, which might have many subtypes (R2022a 以降) |
無名一時オブジェクトへの参照 | Local reference is declared by using unnamed temporary variable that a function returns by value (R2023a 以降) |
フレキシブル配列メンバー サイズの構文が正しくありません | サイズ 0 または 1 で定義されたフレキシブル配列メンバー |
禁止された関数の使用 | 禁止された関数のブロックリストに追加されている関数の使用 |
禁止されたキーワードの使用 | Use of keyword that appears in a blocklist of forbidden keywords (R2022a 以降) |
禁止されたマクロの使用 | Use of macro that appears in a blocklist of forbidden macros (R2022b 以降) |
setjmp/longjmp の使用 | setjmp と longjmp により通常の制御フローからの逸脱が発生 |
同じデータに対してビット演算と算術演算が行われています | ビット演算と算術演算が混在したステートメント |
ファイルがコンパイルされません | ファイルにコンパイル エラーがあります (R2021a 以降) |
未使用のパラメーターです | 関数プロトタイプに、関数本体で読み取りも書き込みもされないパラメーターがある |
使用されない変数 | Variable defined or declared but not read (R2024a 以降) |
sizeof のオペランドに含まれる式が無意味です | sizeof オペランドに評価されない式が含まれている |
無意味なインクルード | 存在するが使用されない include 命令 (R2022b 以降) |
無意味なキャプチャ | Lambda captures objects but does not use the objects (R2024b 以降) |
トピック
- 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)