コンパイラ、discover、および uncover は、コード内の静的コードの問題、動的メモリーアクセスの問題、およびカバレージの問題を検出します。このセクションでは、これらのツールで検出され、コードアナライザで分析されるエラーの種類について説明します。
これらのエラーと警告の詳細は、Oracle Developer Studio 12.5: コードアナライザユーザーズガイド の 付録 A, コードアナライザで分析されるエラー,を参照してください。
静的コード検査では、次の種類のエラーが検出されます。
ABR: 配列境界を越える読み取り (beyond array bounds read)
ABW: 配列境界を越える書き込み (beyond array bounds write)
DFM: メモリーの二重解放 (double freeing memory)
ECV: 明示的型キャスト違反 (explicit type cast violation)
FMR: 解放済みメモリーの読み取り (freed memory read)
FMW: 解放済みメモリーの書き込み (freed memory write)
INF: 空の無限ループ (infinite empty loop)
MLK: メモリーリーク (memory leak)
MFR: 関数の復帰なし (missing function return)
MRC: malloc 戻り値の検査なし (missing malloc return value check)
NFR: 初期化されていない関数の復帰 (uninitialized function return)
NUL: NULL ポインタ間接参照、リークの可能性があるポインタの検査
RFM: 解放済みメモリーを返す (return freed memory)
UMR: 初期化されていないメモリーの読み取り、初期化されていないメモリーの読み取りビット操作 (uninitialized memory read, uninitialized memory read bit operation)
URV: 使用されていない戻り値 (unused return value)
VES: スコープ外での局所変数の使用 (out-of-scope local variable usage)
動的メモリーアクセス検査では、次の種類のエラーが検出されます。
ABR: 配列境界を越える読み取り (beyond array bounds read)
ABW: 配列境界を越える書き込み (beyond array bounds write)
BFM: 不正な空きメモリー (bad free memory)
BRP: 不正な realloc アドレスパラメータ (bad realloc address parameter)
CGB: 破損したガードブロック (corrupted guard block)
DFM: メモリーの二重解放 (double freeing memory)
FMR: 解放済みメモリーの読み取り (freed memory read)
FMW: 解放済みメモリーの書き込み (freed memory write)
FRP: 解放済み Realloc パラメータ (freed realloc parameter)
IMR: 無効なメモリーの読み取り (invalid memory read)
IMW: 無効なメモリーの書き込み (invalid memory write)
MLK: メモリーリーク (memory leak)
OLP: 送り側と受け側の重複 (overlapping source and destination)
PIR: 部分的に初期化された読み取り (partially initialized read)
SBR: スタック境界を越える読み取り (beyond stack bounds read)
SBW: スタック境界を越える書き込み (beyond stack bounds write)
UAR: 割り当てられていないメモリーの読み取り (unallocated memory read)
UAW: 割り当てられていないメモリーの書き込み (unallocated memory write)
UMR: 初期化されていないメモリーの読み取り (uninitialized memory read)
動的メモリーアクセス検査では、次の種類の警告が検出されます。
AZS: 0 サイズの割り当て (allocating zero size)
MLK: メモリーリーク (memory leak)
SMR: 投機的な非初期化メモリーからの読み取り (speculative uninitialized memory read)
コードカバレージ検査では、カバーされていない関数が特定されます。結果では、見つかったコードカバレージの問題に「カバーされていない関数」というラベルが付けられ、潜在的なカバレージの割合が示されます。この割合は、該当する関数をカバーするテストを追加した場合にアプリケーションの合計カバレージが何パーセント増加するかを示しています。