FindBugsは潜在的なバグをチェックすることができる静的解析ツールです。例えばメソッドのパラメーターを、nullチェックを行わずに使用しているため、NullPointerExceptionが発生する可能性などを指摘してくれます。これまでに紹介したCheckstyleやPMDと比べると、より潜在的なバグの検出が得意なツールです。
FindBugsの特長は以下になります。
・潜在バグに特化したルールを提供
バグが存在する可能性のある個所、バグの原因となり得る個所を検出するためのチェックルールを提供します。
・バイトコードが解析対象
バイトコードが解析対象のため、コンパイルが済んだ状態で初めて実行することができます。
・適用するルールの選択が可能
必要なルールのみをチェックできるようにフィルタリングすることができます。
・ルールの拡張は困難
FingBugsではバイトコードスキャンニングチェック機能を用いてカスタムルールの作成を実施することができます。BCEL(Byte Code Engineering Library)を利用してチェック機能を実装することになるため、簡単なルールの作成であっても多くの時間と検証を必要とします。FindBugsは確かに強力なツールですが、安易に個別でカスタムルールを作成するのはあまりお勧めしません。
FingBugsプラグインを利用する場合は、eclipsePlugin-0.9.5-source.zipとde.tobject.findbugs_0.0.20.zipを以下のサイトから取得してください。
ダウンロードしたプラグインをEclipseの[plugins]ディレクトリに格納し、再起動を行えばインストールが完了です。プロジェクトのコンテキストメニューを開き、ツリーの部分に[FindBugs]が表示されていればインストールが成功しています。
FindBugsの利用方法については「ソフトウェアの品質向上を支援するプラグイン-FindBugs」にて詳しく解説しているので、そちらを参照してください。
現在提供されているFindBugsプラグインでは、デフォルトで提供されるルールから使用するルールを選択することができません。ルールの選択を行って実行したい場合は、コマンドラインやGUIから実行するFindBugsの解析プロパティを変更して実行するしかないようです。今後のFindBugsプラグインでの対応に期待しましょう。
ここまで静的テストツールを3つご紹介しましたが、筆者のお勧めの使い方は、紹介した3つのツールすべてを組み合わせて使用する方法です。この場合、あらかじめ各ツールの特性を理解したうえで、不要なルールの削除やプロジェクト固有のルールの作成などカスタマイズをする作業が必要になりますが、ツールができることは極力ツールで数多く行い、目視チェックレビューへ問題を持ち越さないことが最終的に良いコードを開発するための一番の近道になると考えています。
また開発時は、プログラミングスキル(あるいはツールへの習熟度)に合わせて静的解析を実行するタイミングを決定してみるのがよいと思います。最初からソースコードが保存されたタイミングでチェックをONの状態にした場合、静的解析ツールが検出したメッセージばかりに気を取られ、本質的なロジック部分に集中できなくなる可能性があります。使い始めの方であれば、まずはある程度ソースコードを記述した後で、手動でツールを実行してみてはいかがでしょうか。
次回はソフトウェアの品質をチェックするためのメトリクスツールについてご紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.