プロジェクト

全般

プロフィール

NetBeans FindBugsプラグイン

FindBugsは、Javaのコード1を静的解析し、バグパターンに合致する箇所を検出するツールです。
NetBeansのプラグインとしてFindBugsを組み込むことで、NetBeans上で解析の実施と検出箇所を表示することができます。

1 FindBugsはソースコードではなくバイトコードを検査します。

インストール

  • [ツール]メニュー>[プラグイン]を選択し、「プラグイン」ダイアログを開きます。
  • [使用可能なプラグイン]タブを選択し、一覧から「FindBugs Integration」を選択し、インストール欄にチェックを付け、[インストール]ボタンを押します。

FindBugs-01.png (FindBugsインストール)

2017.6.25現在でインストールされるFindBugs Integrationプラグインの1.32は、FindBugs 3.0.0を同梱したプラグインです。

設定

適用するルールを編集する方法を示します。

  • [ツール]メニュー>[オプション]で「オプション」ダイアログを開きます。
  • [エディタ]を選択し、[ヒント]タブを選択します。
  • 左上の言語欄で[FindBugs]を選択します。

FindBugsConfig-01.png (FindBugsルール設定)

  • リストのルールを適宜On/Offします。
  • [Run FindBugs in Editor]にチェックを付けます。

[適用]ないし[OK]ボタンを押し、適用するルールの変更を反映すると、ルール設定が次のパスに生成されます。

USERPROFILE\AppData\Roaming\NetBeans\8.0rc1\config\Preferences\org\netbeans\modules\findbugs\global-settings.properties
BAC_BAD_APPLET_CONSTRUCTOR=true
BC_IMPOSSIBLE_CAST=true
BC_IMPOSSIBLE_CAST_PRIMITIVE_ARRAY=true
BC_IMPOSSIBLE_DOWNCAST=true
  :(中略)
VR_UNRESOLVABLE_REFERENCE=true
XSS_REQUEST_PARAMETER_TO_JSP_WRITER=false
XSS_REQUEST_PARAMETER_TO_SEND_ERROR=false
XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER=false

実行

FindBugsの検査を実行

FindBugsの検査を実行するには、

  • [ソース]メニュー > [検査]を選択し、「検査」ダイアログを表示します。
  • [スコープ]ドロップダウンリストを展開し、検査対象とするスコープを選択します(次の画面)。

inspect_scope-1.png (検査ダイアログでスコープの一覧を表示)

  • [構成]ドロップダウンリストを展開し、FindBugsを選択します(次の画面)。

inspect_config-1.png (検査ダイアログで構成の一覧を表示)

  • [検査]ボタンを押し、検査を実行します。

実行結果(インスペクト画面)が表示され、検査結果が表示されます(次の画面)。

result-1.png (FindBugs実行結果)

Java SE 8のコード(ラムダ式)を使っていますが、FindBugsの解析は通っています。

その他メモ

  • Java SE 8 b106ではFindBugs実行([ソース]メニュー>[検査])でエラーとなります。
    Java SE 8のクラスファイル仕様変更によるものらしいです。
    http://sourceforge.net/p/findbugs/bugs/1162/

SpotBugs

2015年のFindBugs 3.0.1リリース以降、2017年6月現在までFindBugsの更新が滞っています。ブログ等でその状況が説明されています。

FindBugs Integrationプラグイン 1.32 のFindbugs 3.0.0をSpotBugs 3.1.0 RC3に入れ替え

チケット #72 において、FindBugs 1.32 のライブラリを差し替えて、SpotBugs 3.10 RC3を使う調査と実験をしました。

以下は、Windows上にインストールされたNetBeans 8.2 のFindBugs Integrationプラグイン(1.32)の同梱FindBugs 3.0.0 を、SpotBugs 3.1.0 RC3に更新するパッチです(バッチコマンドでjarファイルを追加・差し替え)。

過去のメモ

Java SE 8とFindBugs

  • 2015-04時点
    Findbugs 3.0.1がリリースされています。
  • 2014-07-30時点の状況
    Java SE 8対応のFindBugs 3.0.0がリリースされています。
  • 2014-07-05時点の状況
    Java SE 8対応のFindBugs 3.0.0-rc2がリリースされています。NetBeans向けFindBugs Integrationプラグイン 1.27をFindBugs 3.0.0-rc2に差し替えるパッチを作成しました。
  • 2014-03-20時点の状況
    FindBugs Integrationのバージョン1.27は、Java SE 8のクラスファイル仕様に対応していないFindBugs 2.0.xを使用しています。Java SE 8への対応は次のメジャーリリースであるFindBugs 3.0の予定です。しかし、FindBugs 3.0はまだ開発途上で正式リリースされていません。
    なお、FindBugs 3.0スナップショット版が入手できるので、いったんFindBugs Integrationプラグインをインストールした後、FindBugs 3.0スナップショット版にファイルを差し替えることで完全ではない(invokedynamic未対応)ですがJava SE 8対応させることができます。
    差し替え版の作成手順は、チケット #8-3 を参照。

FindBugs IntegrationプラグインをJDK 8対応させるバッチ

3.0.0-SNAPSHOT版

FindBugs Integrationプラグインをインストールした後、FindBugsを2.0.3から3.0.0-SNAPSHOTに差し替える上述手順をバッチファイル化したものを作成しました。(バッチファイルなのでWindows用です)

NetBeansFindBugsIntegration_updater4jdk8-20140321.zip

一時作業ディレクトリを用意してそこにzipアーカイブを展開します。update.batを実行します(エクスプローラからダブルクリックでOK)。

2014-04-28コミット版

gitコミットハッシュ:1103397c8de2d0c0fcdf7ea5a7e15d86f002651e

FindBugs Integration プラグイン1.27版をインストールした後、FindBugsを2.0.3からtrunk最新版(2014-04-28)に差し替えるアップデータです(バッチファイルなのでWindows用です。Linux、MacOS Xは、バッチファイルを見ながら手作業で更新することで対応可能です)。

NetBeansFindBugsIntegration_updater4jdk8-20140601.zip

3.0.0-rc2版

FindBugs Integrationプラグインをインストールした後、FindBugsを2.0.3から3.0.0-rc2に差し替える上述手順をバッチファイル化したものを作成しました。(バッチファイルなのでWindows用ですLinux、MacOS Xは、バッチファイルを見ながら手作業で更新することで対応可能です)。

FindBugsIntegration_updater4jdk8_3.0.0rc2.zip

一時作業ディレクトリを用意してそこにzipアーカイブを展開します。update.batを実行します(エクスプローラからダブルクリックでOK)。

クリップボードから画像を追加 (サイズの上限: 1 GB)