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