エーアイコーポレーションは、C/C++コード対応のバグ検出ツール「CodeSonar」の販売を開始した。本製品は米GrammaTechが開発したもので、C/C++言語で書かれたソースコードをコンパイル時に静的に解析し、メモリリークやバッファオーバラン、フォーマットストリングなどのバグを高い精度で検出する。
本製品は、ソースコードをビルドし、プロシージャ間解析によってファイル全体の解析を行う。解析結果のレポートはHTML形式のファイルに出力する。モジュールのすべてのパスを解析するパス解析や、すべてのパスの変数を追跡するデータフロー解析などの機能を備えており、解析結果を詳細にレポートできる。
本製品で検出できる基本的なバグは次のとおり。
- バッファオーバラン
- バッファアンダラン
- 危険な関数キャスト
- mallocで確保した領域をdelete[]で解放
- newで確保した領域をdelete[]で解放
- mallocで確保した領域をdeleteで解放
- new[]で確保した領域をdeleteで解放
- ゼロによる割り算
- 二重解放
- フォーマットストリング
- 非ヒープ変数解放
- NULLポインタ解放
- new[]で確保した領域をfreeで解放
- newで確保した領域をfreeで解放
- 無視された戻り値
- メモリリーク
- リターン命令ミス
- NULLポインタ参照
- 参照後のNULLテスト
- 冗長な条件
- ローカル変数へのポインタ戻し
- 解放メモリへのポインタ戻し
- 型オーバラン
- 型アンダラン
- 未初期化変数
- 未到達コード
- 未使用値
- 解放後の使用
- 無意味な割り当て
- 可変引数関数キャスト