C++ 検査
ソース コードの検査と測定 への移動
各 C++ ソース コード検査項目とその簡単な説明の一覧を以下の表に示します。
C++ 検査
| 検査項目 | 説明 |
|---|---|
| コア: | |
|
関数呼び出しの戻り値が呼び出し側の想定する値と異なっていないかを確認します。 | |
|
引数に nonnull の属性が付いている関数にヌル ポインタが引数として渡されていないかを確認します。 | |
|
malloc で割り当てられたシンボル領域を型 T をキャストする際に、そのサイズが T のサイズの倍数になっているかを確認します。 | |
|
構造体以外のポインタを構造体ポインタにキャストしていないかを確認します。 | |
|
固定アドレスをポインタに代入していないかを確認します。 | |
|
配列要素以外の場所でポインタ算術演算が行われていないかを確認します。 | |
|
異なるメモリ チャンクを指す 2 つのポインタでポインタ減算が行われていないかを確認します。 | |
|
ポインタ式に対して意図せず sizeof() を使用している場合に警告を出力します。 | |
|
ヌル ポインタの逆参照がないかを確認します。 | |
|
ゼロ除算が行われていないかを確認します。 | |
| 呼び出し側に戻らない関数がないかを確認します。 | |
|
初期化されていない値が呼び出し側に返されていないかを確認します。 | |
|
初期化されていない値が分岐条件として使用されていないかを確認します。 | |
|
初期化されていない値が配列の添字として使用されていないかを確認します。 | |
|
初期化されていない値が代入されていないかを確認します。 | |
|
スタック メモリを指すアドレスが関数外で使用されていないことを確認します。 | |
|
二項演算子(代入以外)の結果が未定義でないかを確認します。 | |
|
サイズが未定義またはゼロの VLA(可変長配列)の宣言がないかを確認します。 | |
| セキュリティ: | |
|
バッファ オーバーフローについての警告を出力します(旧チェッカー)。 | |
|
バッファ オーバーフローについての警告を出力します(新チェッカー)。 | |
|
範囲外のポインタが呼び出し側に返されていないかを確認します。 | |
|
データ フローが不要な簡易セキュリティ API チェックを実行します。 | |
| 効果のないコード: | |
|
変数に格納されたものの、その後読み出されていない値がないかを確認します。 | |
|
べき等演算についての警告を出力します。 | |
|
絶対に実行されないコードがないかを確認します。 | |
| その他: | |
|
浮動小数点値の比較。 | |
|
コンストラクタやデストラクタからの仮想関数の呼び出し。 | |
|
コピー コンストラクタの定義。 | |
|
反復変数がループ本体で使用されていません。 | |
|
private メソッドのオーバーライド。 | |
|
継承した非仮想関数の再定義。 | |
|
疑わしい for 文。 | |
|
switch 文には必ずデフォルト ケースを付加します。 | |
|
メソッドを const に変更できます。 | |
|
命名規則に従っているかどうか。 | |
|
関係する演算子は一緒に上書きする必要があります。 | |
|
パラメータを const に変更できます。 | |
|
仮想デストラクタを用意する必要があります。 | |
|
C++ スタイルのキャストを使用する必要があります。 | |
|
同名のメソッドを 1 か所にまとめる必要があります。 | |
|
制限されたクラス宣言。 | |
|
代入演算子。 | |
|
for ループ内での複雑な初期化句/更新句。 | |
|
コンストラクタ初期化リスト。 | |
|
null 参照へのアクセス。 |