調査 #72
未完了NetBeansのFindBugs IntegrationプラグインをSpotbugsに入れ替えできるか調査する
50%
説明
調査目的:
Findbugsは、3.0.1リリース以降更新が滞っている。コミュニティは継続に向けて動いているが、暫定的にFindbugsをフォークしたSpotbugsを公開している。NetBeansのFindbugs Integrationプラグインに含まれるFindbugs 3.0.1を、このSpotbugsに差し替えたい。
調査結果:
第2目標は、#72-5で達成
完了条件:
第1目標:FindBugs Integrationのnbmファイルの中に含まれるFindBugs 3.0.0をSpotBugs 4.0.0に差し替え、ローカルインストール(非インターネット接続環境でのファイルからのインストール)を可能とする。
第2目標:FindBugs Integrationプラグインをインストール後、インストール先のファイルをSpotBugsおよびSpotBugsが必要とするファイルに差し替える。
高橋 徹 さんが7年以上前に更新
- ステータス を 新規 から 進行中 に変更
- 担当者 を 高橋 徹 にセット
- 進捗率 を 0 から 50 に変更
Spotbugs は、mavenリポジトリでビルド済みバイナリが公開されている。
http://central.maven.org/maven2/com/github/spotbugs/spotbugs/
ここから、現時点で最新の spotbugs-3.1.0-RC3.jar を取得し、MANIFEST.MFを取り出して依存ライブラリを確認した。
spotbugs-3.1.0-RC3.jar に含まれるMANIFEST.MF¶
Manifest-Version: 1.0 Bundle-Version: 3.1.0-RC3 Class-Path: dom4j-1.6.1.jar jaxen-1.1.6.jar asm-debug-all-6.0_ALPHA.ja r jsr305-3.0.1.jar jFormatString-3.0.0.jar commons-lang-2.6.jar Main-Class: edu.umd.cs.findbugs.LaunchAppropriateUI
FindBugs Integration 1.32 のライブラリのMANIFEST.MF¶
現時点でインストールされる最新の FindBugs Integration のバージョン1.32の内容を確認する。
FindBugs Integration をインストールし、%APPDATA%\NetBeans\8.2\modules\org-netbeans-libs-findbugs.jar の MANIFEST.MF に記載のClass-Path属性は次のとおり。
Class-Path: ext/jFormatString.jar ext/commons-lang-2.6.jar ext/jaxen-1 .1.6.jar ext/findbugs.jar ext/dom4j-1.6.1.jar ext/asm-debug-all-5.0.2 .jar ext/bcel-6.0-SNAPSHOT.jar ext/jsr305.jar
Spotbugs に入れ替えるために¶
依存ライブラリ | FindBugs Integrationには |
---|---|
dom4j-1.6.1.jar | あり |
jaxen-1.1.6.jar | あり |
asm-debug-all-6.0_ALPHA.jar | バージョンが古い(5.0.2) |
jsr305-3.0.1.jar | 名前が違う(jsr305.jar) 内容違う |
jFormatString-3.0.0.jar | 名前が違う(jFormatString.jar)内容同じ |
commons-lang-2.6.jar | あり |
- FindBugs Integrationのjsr305は、中のファイルタイムスタンプがjsr305-3.0.1.jarに比べて古い
- FindBugs IntegrationのjFormatString.jarは、中のファイルタイムスタンプが jFormatString-3.0.0.jarと一致
高橋 徹 さんが7年以上前に更新
必要な依存ライブラリの入手
- asm-debug-all-6.0_ALPHA.jar
https://mvnrepository.com/artifact/org.ow2.asm/asm-debug-all/6.0_ALPHA
高橋 徹 さんが7年以上前に更新
org-netbeans-libs-findbugsjar のMANIFEST.MF変更¶
- Class-Path: ext/jFormatString.jar ext/commons-lang-2.6.jar ext/jaxen-1
- .1.6.jar ext/findbugs.jar ext/dom4j-1.6.1.jar ext/asm-debug-all-5.0.2
- .jar ext/bcel-6.0-SNAPSHOT.jar ext/jsr305.jar
+ Class-Path: ext/jFormatString.jar ext/commons-lang-2.6.jar ext/jaxen-1
+ .1.6.jar ext/dom4j-1.6.1.jar ext/asm-debug-all-6.0_ALPHA.jar ext/jsr3
+ 05-3.0.1.jar ext/spotbugs-3.1.0-RC3.jar
org-netbeans-libs-findbugs.jarの作成¶
APPDATA\NetBeans\8.2\modules\org-netbeans-libs-findbugs.jar を作業ディレクトリに解凍・展開し、上述の修正したMANIFEST.MFを使って再作成する。
D:\work> jar xf org-netbeans-libs-findbugs.jar D:\work> jar cfm org-netbeans-libs-findbugs.jar MANIFEST.MF org
再作成しった org-netbeans-libs-findbugs.jar を、元の場所のものと入れ替える。
APPDATA\NetBeans\8.2\modules\org-netbeans-libs-findbugs.jar
新たに必要となる依存ライブラリをコピーする。
APPDATA\NetBeans\8.2\modules\ext ディレクトリの下に次をコピー
- asm-debug-all-6.0_ALPHA.jar
- jsr305-3.0.1.jar
- spotbugs-3.1.0-RC3.jar
不必要なライブラリは、そのまま残しておいても、削除しても
高橋 徹 さんがほぼ5年前に更新
- 説明 を更新 (差分)
- ステータス を 解決 から フィードバック に変更
- 進捗率 を 80 から 50 に変更
2020-03-11現在、FindBugsはバージョン3.0.1のまま停滞している。一方、SpotBugsは2020-02にバージョン4.0.0がリリースされている。
SpotBugs 4.0.0が依存するライブラリを調べる。spotbugs-4.0.0.jarのMETA-INF/MANIFEST.MFの記載
Class-Path: asm-commons-7.3.1.jar asm-util-7.3.1.jar asm-analysis-7.3. 1.jar asm-tree-7.3.1.jar asm-7.3.1.jar bcel-6.4.1.jar jcip-annotation s-1.0.jar dom4j-2.1.1.jar commons-lang-2.6.jar slf4j-api-1.8.0-beta4. jar spotbugs-annotations.jar jaxen-1.1.6.jar Saxon-HE-9.9.1-2.jar jsr 305-3.0.2.jar icu4j-63.1.jar log4j-slf4j18-impl-2.11.1.jar slf4j-api- 1.8.0-alpha2.jar log4j-core-2.11.1.jar log4j-api-2.11.1.jar config/
これらは、spotbugs-4.0.0.tgzを入手すると中に含まれている。
org-netbeans-libs-findbugs.nbm の中にある関連しそうなファイルを調べる。
- netbeans/modules/org-netbeans-libs-findbugs.jar.pack.gz
pack200で圧縮されているので、JDKのunpack200コマンドで解凍。なお、pack200ツールはdeprecatedとなっており、JDK 14で削除予定。D:\work> unpack200 org-netbeans-libs-findbugs.jar.pack.gz org-netbeans-libs-findbugs.jar Warning: The unpack200 tool is deprecated, and is planned for removal in a future JDK release. D:\work>
unpack200で解凍したorg.netbeans-libs-findbugs.jarの中のMETA-INF/MANIFEST.MFを表示
上述MANIFEST.MFの最後にあるClass-PathをSpotBugs用に変更
org.netbeans-libs-findbugs.jar をpack200で圧縮
D:\work> pack200 org-netbeans-libs-findbugs.jar.pack.gz org-netbeans-libs-findbugs.jar 警告: pack200ツールは非推奨であり、今後のJDKリリースで削除される予定です。 D:\work>
修正したorg-netbeans-libs-findbugs.jar.pack.gzを、org-netbeans-libs-findbugs.nbm に戻します(差し替え)
org-netbeans-libs-findbugs.nbm の中のnetbeans/modules/ext の下をSpotBugs依存ライブラリに置き換えます。依存ライブラリ群は、spotbugs-4.0.0.tgzから持ってきます。
差し替えたorg-netbeans-libs-findbugs.jar.pack.gzはハッシュ値が変わってしまい、NetBeansでプラグインをインストールする途中でエラーとなるので、、、
T.B.D.