C++ 検査

提供: RAD Studio
移動先: 案内検索

[C++ 検査構成]ダイアログ ボックス への移動


各 C++ ソース コード検査項目とその簡単な説明の一覧を以下の表に示します。

C++ 検査

検査項目 説明
コア:
AdjustedReturnValue -- 関数呼び出しの戻り値が期待するものと異なる

関数呼び出しの戻り値が呼び出し側の想定する値と異なっていないかを確認します。

AttributeNonNull

引数に nonnull の属性が付いている関数にヌル ポインタが引数として渡されていないかを確認します。

BoolAssignment

論理型変数への {0,1} 以外の値の代入を警告します。

CastSize

malloc で割り当てられたシンボル領域を型 T をキャストする際に、そのサイズが T のサイズの倍数になっているかを確認します。

CastToStruct -- 構造体以外のポインタから構造体のポインタへのキャスト

構造体以外のポインタを構造体ポインタにキャストしていないかを確認します。

FixedAddr -- ポインタに対する固定アドレスの代入

固定アドレスをポインタに代入していないかを確認します。

PointerArithm

配列要素以外の場所でポインタ算術演算が行われていないかを確認します。

PointerSub -- サイズの判定にポインタ減算を使用

異なるメモリ チャンクを指す 2 つのポインタでポインタ減算が行われていないかを確認します。

SizeofPtr -- ポインタ型に対する sizeof() の使用

ポインタ式に対して意図せず sizeof() を使用している場合に警告を出力します。

NullDereference

ヌル ポインタの逆参照がないかを確認します。

DivideZero -- ゼロ除算の確認

ゼロ除算が行われていないかを確認します。

NoReturnFunctions -- 戻らない関数

呼び出し側に戻らない関数がないかを確認します。

UndefReturn

初期化されていない値が呼び出し側に返されていないかを確認します。

Branch

初期化されていない値が分岐条件として使用されていないかを確認します。

ArraySubscript

初期化されていない値が配列の添字として使用されていないかを確認します。

System.Classes.TPersistent.Assign

初期化されていない値が代入されていないかを確認します。

StackAddressEscape

スタック メモリを指すアドレスが関数外で使用されていないことを確認します。

UndefinedBinaryOperatorResult

二項演算子(代入以外)の結果が未定義でないかを確認します。

VLASize -- サイズが未定義の可変長配列

サイズが未定義またはゼロの VLA(可変長配列)の宣言がないかを確認します。

セキュリティ:
ArrayBound -- 配列境界外の要素へのアクセス

バッファ オーバーフローについての警告を出力します(旧チェッカー)。

ArrayBoundV2 -- 配列境界外の要素へのアクセス

バッファ オーバーフローについての警告を出力します(新チェッカー)。

ReturnPtrRange -- 返されたポインタがオブジェクトの範囲外を指している

範囲外のポインタが呼び出し側に返されていないかを確認します。

FloatLoopCounter

浮動小数点値のループ カウンタとしての使用を警告します。

効果のないコード:
DeadStores -- 式の値が使用されていない

変数に格納されたものの、その後読み出されていない値がないかを確認します。

IdempotentOperations -- べき等演算についての警告を出力

べき等演算についての警告を出力します。

UnreachableCode -- 絶対に実行されないコードの確認

絶対に実行されないコードがないかを確認します。

その他:
CFPV -- 浮動小数点値の比較(Comparing Floating-Point Values)

浮動小数点値の比較。

CVFCD -- コンストラクタやデストラクタからの仮想関数の呼び出し(Calling Virtual Functions from Constructors and Destructor)

コンストラクタやデストラクタからの仮想関数の呼び出し。

DCPC -- コピー コンストラクタの定義(Default Copy Constructor)

コピー コンストラクタの定義。

IVNU -- 反復変数がループ本体で使用されていない(Iteration Variable is Not Used in loop body)

反復変数がループ本体で使用されていません。

OPM -- private メソッドのオーバーライド(Overriding Private Method)

private メソッドのオーバーライド。

RINF -- 継承した非仮想関数の再定義(Redefining an Inherited Nonvirtual Function)

継承した非仮想関数の再定義。

SFS -- 疑わしい for 文(Suspicious For Statement)

疑わしい for 文。

SSSIDC -- switch 文には必ずデフォルト ケースを付加(Switch Statement Should Include the Default Case)

switch 文には必ずデフォルト ケースを付加します。

NC -- 命名規則(Naming Conventions)

命名規則に従っているかどうか。

OROT -- 関係する演算子を一緒に上書き(Overwrite Related Operators Together)

関係する演算子は一緒に上書きする必要があります。

PVD -- 仮想デストラクタを用意(Provide Virtual Destructor)

仮想デストラクタを用意する必要があります。

UCSC -- C++ スタイルのキャストを使用(Use C++ Style Casts)

C++ スタイルのキャストを使用する必要があります。

PMSNT -- 同名のメソッドを 1 か所にまとめる(Place Methods with Same Name Together)

同名のメソッドを 1 か所にまとめる必要があります。

RCD -- 制限されたクラス宣言(Restricted Class Declaration)

制限されたクラス宣言。

ASO

代入演算子。

CIUCFL

for ループ内での複雑な初期化句/更新句。

CIL

コンストラクタ初期化リスト。

関連項目