SpotBugs Eclipseプラグインの使い方

SpotBugs Eclipseプラグインを使用すると SpotBugs を Eclipse IDE 内で使用できます。SpotBugs Eclipseプラグインは,Peter Friese 氏の多大なる貢献によるものです。Phil Crosby 氏と Andrey Loskutov 氏は,プラグインの大幅な改善に貢献しました。

必要条件

SpotdBugs Eclipse プラグインを使用するためには,Eclipse Neon (4.6) 以降が必要です。

インストール

私たちは,SpotBugs を Eclipse に自動的にインストールしたり,アップデートを照会してインストールもできる更新サイトを提供しています。3 つの異なる更新サイトがあります。

https://spotbugs.github.io/eclipse/
SpotBugs Eclipse プラグインの公式リリースだけを提供します。
https://spotbugs.github.io/eclipse-candidate/
SpotBugs Eclipse プラグインの公式リリースとリリース候補を提供します。
https://spotbugs.github.io/eclipse-latest/
最新の SpotBugs Eclipse プラグインをマスターブランチからビルドします。
https://spotbugs.github.io/eclipse-stable-latest/
最新で安定している SpotBugs Eclipse プラグインを release-3.1 ブランチからビルドします。

または Eclipse marketplace を使って SpotBugs Eclipse プラグインをインストールします。

プラグインの使い方

開始するには,パッケージエクスプローラで Java プロジェクトを右クリックして,「Spot Bugs」というラベルの付いたオプションを選択します。SpotBugs が実行され,問題マーカー (ソースウインドウと Eclipse の問題ビューに表示されます) は,バグパターンの潜在的なインスタンスとして特定されたコード内の場所を示します。

既存の Java アーカイブ (jar,ear,zip,war など) で SpotBugs を実行できます。空の Java プロジェクトを作成し,プロジェクトのクラスパスにアーカイブを追加するだけです。これで,パッケージエクスプローラでアーカイブノードを右クリックして,「SpotBugs」というラベルの付いたオプションを選択できます。さらに,バイナリのソースコードの場所を設定すると,SpotBugs は生成された警告を正しいソースファイルにリンクします。

SpotBugs の実行方法をカスタマイズするには,Java プロジェクトのプロパティダイアログを開き,「SpotBugs」プロパティページを選択します。選択できるオプションは次のとおりです。

  • 「Run SpotBugs Automatically」チェックボックスを有効または無効にします。有効にすると,プロジェクト内の Java クラスを変更するたびに SpotBugs が実行されます。
  • 最低限の優先度を選択し,バグカテゴリを有効にします。これらのオプションは,表示される警告を選択します。たとえば,優先度で「Medium」を選択すると,優先度 (中) と優先度 (高) の警告だけが表示されます同様に,「Style」チェックボックスのチェックを外すと,Style カテゴリの警告は表示されません。
  • ディテクタの選択。この表では,プロジェクトで有効にするディテクタを選択できます。

Eclipse プラグインの拡張 (2.0.0 以降)

Eclipse プラグインは,カスタム SpotBugs ディテクタの寄贈をサポートします (詳細については AddingDetectors.txt も参照してください)。カスタムプラグインを Eclipse に提供するには 2 つの方法があります。

  • 既存の標準 SpotBugs ディテクタパッケージは,Window Preferences Java FindBugs Misc. Settings Custom Detectors で設定できます。追加のプラグインの場所を指定するだけです。このソリューションの利点は,既存のディテクタパッケージを「そのまま」使用でき,サードパーティのディテクタの品質を迅速に検証できることです。欠点は,新しい Eclipse ワークスペースごとにこの設定を適用する必要があり,この設定をチームメンバ間で共有できないことです。

  • 標準の Eclipse 拡張機構を用いてカスタムディテクタを提供できます。

    eclipsePlugin/schema/detectorPlugins.exsd 拡張ポイントのドキュメントを参照して,plugin.xml の更新方法を確認してください。既存の SpotBugs ディテクタプラグインは,完全に機能する SpotBugs ディテクタプラグインになるように簡単に「拡張」できます。通常は,META-INF/MANIFEST.MFplugin.xml を jar ファイルに追加し,ビルド時に MANIFEST.MF を上書きしないようにビルドスクリプトを更新するだけです。

    このソリューションの利点は,Eclipse インストールが共有されていれば,それぞれのチームメンバが正確に同じディテクタセットを持ち,何も設定する必要がないことです。(本当に小さな) 前提条件は,既存のディテクタパッケージを有効な Eclipse プラグインに変換しておくことです。サードパーティのディテクタでもこれを行うことができます。もうひとつの大きな違いは,実行時に必要なサードパーティのライブラリでデフォルトの SpotBugs クラスパスを拡張する能力です (詳細については AddingDetectors.txt を参照してください)。

トラブルシューティング

この節では,プラグインの一般的な問題と (既知の) 問題を解決する方法について説明します。

  • Eclipse で SpotBugs の解析を開始した後に OutOfMemory エラーダイアログが表示されるときは,JVM の使用可能なメモリを増やしてください。eclipse.ini を変更し次の行をファイルの最後に追加してください。

    -vmargs
    -Xmx1000m
    

    重要: -vmargs 行から始まる設定引数は eclipse.ini ファイルの最後でなければならず,1 行につき 1 つの引数しか許されません!

  • SpotBugs の問題マーカーが (ソースファイルや問題ビューに) 表示されないときは,問題ビュー のフィルタ設定を変更する必要があります。詳細は FAQのQ6 を参照してください。