TOPシステム開発> はじめに
まるごとEclipse!
Eclipseで使えるテストツール

第2回:静的解析による手戻り削減

著者:坂田祐司(SAKATA, Yuji)   2006/4/3
1   2  次のページ
はじめに

   本稿では、Eclipseプラグインツールとして利用できる静的解析ツールを紹介します。静的解析ツールとは、プログラムを動作させずに、そのプログラムの品質を改善、もしくは評価するためのツールの総称です。静的解析ツールは、コード解析ツールとメトリクス分析ツールとに大きく分けることができます.ここでは、それぞれの代表的なツールとして、コード解析ツールPMDとメトリクス計測ツールMetrics plugin for Eclipse(そのままの名前ですね)を紹介します。

   なお、本稿では、表1の環境で動作を確認しています。

利用環境 名称
OS Windows XP Home Edition
Java Sun JDK 1.4.2_08
Eclipse Eclipse 3.1.1 / Language Pack 3.1.Xにより日本語化済み
PMD Version 3.3
Metrics plugin for Eclipse Version 1.3.6

表1:本稿のプログラムの実行環境


PMD:コード解析ツール

   コード解析ツールとは、ソースやクラスファイルを構造的に解析して一般的に知られている問題がコードに存在していないかどうかをチェックするツールです。ここでいう一般的な問題とは、潜在的なバグ、コーディング規約違反や拡張性といった保守性の低いコード、そして性能劣化などの原因になるコードの存在などを指します。

   コードに問題がないかどうかをチェックするのは、テストの役目であると思われる方もいるでしょう。しかし、テストは、バグ、つまり、設計どおりにコードが記述されているかどうかを確認する工程であると言えます。そのため、テストによるチェックでは発見できない問題も存在します。

   たとえば、ソースのコーディング規約違反はテストでは見つからないでしょうし、保守性に関する問題の多くもテストでは見つかりません。また、性能劣化の問題は、たいていはすべてのソフトウェアを結合させてテストを実施することで発見されます。その時点で問題が発見された場合、手戻りは非常に大きなものになるでしょう。ですので、静的解析による問題の発見が重要になってくるわけです。

   さらに言えば、一般的に単体テストは開発者自身が実施します。しかし、経験の浅い開発者の場合、そのテストコード自身の質も低く、バグを見つけることのできないテストケースを記述しがちです。しかし、静的解析ツールは、過去の有識者が発見した多くの「定石」とも言えるチェックルールと照合して、問題を発見します。そのため、経験の浅い開発者は必ず利用すべきです。

   では、実際どのようなコード解析ツールがあるのでしょうか。優れた商用製品もありますが、ここでは、オープンソースとして利用でき、かつEclipseのプラグインツールとして利用できるツールを表2に紹介します。

  URL ライセンス
FindBugs(注1) http://findbugs.sourceforge.net/ LGPL
PMD http://pmd.sourceforge.net/ BSD
CheckStyle http://checkstyle.sourceforge.net/ LGPL
Jlint http://artho.com/jlint/ GPL

表2:主なコード解析ツール

※注1:
FindBugsについては「標準FindBugs」(ISBN:4-7561-4655-4)という大変すばらしい本があるので、そちらを参照してください。

   どのツールも有用なツールですが、「どのような問題が得意か」という点で若干異なります。FindBugsやJlintは、潜在的なバグを発見することを主眼としています。また、CheckStyleは、コーディング規約のチェックを主眼としています。PMDは、幅広い問題を対象にしているといってよいでしょう。

   今回は、幅広い問題を対象にできるPMDを例に、コード解析ツールを紹介します。

1   2  次のページ

坂田祐司(SAKATA, Yuji)
著者プロフィール
坂田祐司(SAKATA, Yuji)
SI企業の研究所においてソフトウェア工学の研究に従事。試験やプログラムの解析技術に興味を持ち活動中。

INDEX
第2回:静的解析による手戻り削減
はじめに
  PMDとは