エーアイコーポレーションは、C/C++コード対応のバグ検出ツール「CodeSonar」の販売を開始した。本製品は米GrammaTechが開発したもので、C/C++言語で書かれたソースコードをコンパイル時に静的に解析し、メモリリークやバッファオーバラン、フォーマットストリングなどのバグを高い精度で検出する。

本製品は、ソースコードをビルドし、プロシージャ間解析によってファイル全体の解析を行う。解析結果のレポートはHTML形式のファイルに出力する。モジュールのすべてのパスを解析するパス解析や、すべてのパスの変数を追跡するデータフロー解析などの機能を備えており、解析結果を詳細にレポートできる。

本製品で検出できる基本的なバグは次のとおり。

  • バッファオーバラン
  • バッファアンダラン
  • 危険な関数キャスト
  • mallocで確保した領域をdelete[]で解放
  • newで確保した領域をdelete[]で解放
  • mallocで確保した領域をdeleteで解放
  • new[]で確保した領域をdeleteで解放
  • ゼロによる割り算
  • 二重解放
  • フォーマットストリング
  • 非ヒープ変数解放
  • NULLポインタ解放
  • new[]で確保した領域をfreeで解放
  • newで確保した領域をfreeで解放
  • 無視された戻り値
  • メモリリーク
  • リターン命令ミス
  • NULLポインタ参照
  • 参照後のNULLテスト
  • 冗長な条件
  • ローカル変数へのポインタ戻し
  • 解放メモリへのポインタ戻し
  • 型オーバラン
  • 型アンダラン
  • 未初期化変数
  • 未到達コード
  • 未使用値
  • 解放後の使用
  • 無意味な割り当て
  • 可変引数関数キャスト