SpotBugsやCheckstyleといったOSSとの違い

SpotBugsやCheckstyleといったOSSで見逃しがちなバグと静的フロー解析によるバグの検出例についてご紹介します。

JtestとOSSとの違い
 
SpotBugsやCheckstyleといったOSSの静的解析は、単一ファイルの中で発生する違反の検出はできますが、複数ファイルに呼び出しがまたがるバグを検出できないことがほとんどです。

静的フロー解析

フロー解析を使用すると、SpotBugsやCheckstyleといったOSSでは難しかった違反の検出が可能になります。Jtestのフロー解析機能は実行パスを網羅的にシミュレートし、特定の実行パスで発生する問題を検出します。

Jtestの静的フロー解析機能では、ファイルまたがりで発生する以下の問題を検出することが可能になります。また、導入後すぐに高速な解析が可能なため、まずは現状のソースコード品質を把握するのに最適です。

  • NullPointerException
  • ファイル・ソケット・データベースなどのリソースクローズ漏れ
  • SQLインジェクション
  • クロスサイトスクリプティング
  • スレッド間のデッドロックの可能性

Jtestのフロー解析で検出できるバグの例

Jtestを使用するとSpotBugsやCheckstyleといったOSSでは検出が難しかったNullPointerExceptionを検出することが可能です。

Jtestの静的フロー解析で検出できるバグの例


Jtestを使用するとOSSでは検出が難しかったクロスサイトスクリプティングを検出することが可能です。
 
Jtestの静的フロー解析で検出できるバグの例

静的フロー解析の効果

  • 結合テストレベルのバグをコーディング工程で検出します。
  • 開発工程の終盤でコーディングミスレベルのバグが見つかることで生じる手戻りを防止し、品質向上に寄与します。
  • テストが難しい異常系処理で発生するバグも効率的に検出します。

コード変更に伴う違反を抽出

Jtestのある時点の解析結果をベースラインとして設定してそれ以降の解析ではベースラインの違反と比較して新規に追加された違反情報だけをレポートする機能があります。
この機能を使うと、ベースラインの解析以降に行われたソースコードの変更により生じた違反だけをレポートすることができます。
保守開発現場などにおいてソースコードの変更とは関係が無い違反は修正せず、新規に検出した違反だけを修正する運用が可能です。
新規に検出された違反を絞り込む作業はParasoft DTPが自動で行います。

Java対応静的解析・単体テストツール Jtestに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
parasoft-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。