SpotBugs Eclipseプラグインの使い方

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

必要条件

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

インストール

We provide update sites that allow you to automatically install SpotBugs into Eclipse and also query and install updates. There are four different update sites:

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 を参照してください。