EclipseからThread Analyzer for Javaを使う画面
EclipseからThread Analyzer for Javaを使う画面
[画像のクリックで拡大表示]

 米Coverityは,Javaソースコードに含まれる不具合を検出するソフト「Thread Analyzer for Java」を,日本国内向けに6月20日から出荷開始する。コンパイル済みのJavaプログラム(バイトコード)を実際に実行させながら動的に解析するのが特徴。価格は,対象となるソースコードのステップ数で決まり,50万行までで年額500万円程度など。

 Thread Analyzer for Javaは,EclipseプラグインまたはスタンドアロンのJavaプログラムとして動作する。Java開発者やテスト担当者が,Thread Analyzer for Javaの監視下でJavaアプリケーションを実行することで,実行時に不具合を引き起こすコードを検知し,ソースコードの記述カ所を指摘する。

 検出の対象となる主な不具合は,マルチコアCPUの浸透などの要因で増えているマルチスレッド処理(並列処理)によって引き起こされる,競合状態とデッドロックである。競合状態とは,複数のスレッドが共有データにアクセスし,処理の期待値と結果に矛盾が生じることである。例えば,共通の預金口座に二人が入金した際に,タイミングによっては二人分の入金が合計でカウントされない,といった不具合がありえる。一方,デッドロックとは,他のスレッドの状態をトリガーに処理を進める際に,複数のスレッドが互いの状態に変化が起こるのを待ったまま無限ループを脱出できなくなる状態である。

 なお,同社はこれまで,ソースコードを静的に解析する不具合検出ツール「Prevent」を提供してきた。Preventは,ソースコードを対象とするため,検出対象とする不具合の範囲(カバレッジ)が広い。一方,今回出荷するThread Analyzerは,検知対象となる不具合の範囲を並列処理時の不具合に限定しているものの,バイトコードの実行時における動的な解析を行うことで,Preventでは検知できない深い解析が可能になる。