Ant/FindBugs のバックアップの現在との差分(No.14)
TITLE:AntでFindBugsを実行する
AntでFindBugsを実行する
#adsense2
編集者:Terai Atsuhiro~
作成日:2012-01-19
更新日:2018-10-30 (火) 16:42:34
- title: AntでFindBugsを実行する author: aterai pubdate: 2012-01-19T18:51:01+09:00 description: 静的解析で潜在的なエラーを検査するFindBugsをAntから実行するためのサンプルターゲットなど。
概要
概要
Ant
からFindBugs
を実行します。
サンプルターゲット
サンプルターゲット
<property environment="env" />
<condition property="have.findbugs">
<and>
<available classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<available file="${env.FINDBUGS_HOME}" />
</and>
<available file="${env.FINDBUGS_HOME}" />
</condition>
<target name="findbugs" depends="compile" if="have.findbugs">
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<echo>${env.FINDBUGS_HOME}</echo>
<path id="findbugs.classpath">
<fileset dir="${env.FINDBUGS_HOME}/lib">
<include name="*-ant.jar" />
</fileset>
</path>
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
classpathref="findbugs.classpath" />
<mkdir dir="${build.reports}" />
<findbugs home="${env.FINDBUGS_HOME}" effort="max"
output="xml" outputFile="${build.reports}/findbugs.xml" >
<echo>userdir: ${user.dir}</echo>
<echo>basedir: ${basedir}</echo>
<findbugs home="${env.FINDBUGS_HOME}" effort="max" reportLevel="low"
excludeFilter="${sca.dir}/excludefilter.xml"
output="xml:withMessages" outputFile="${build.reports}/findbugs.xml">
<auxClasspath refid="project.class.path" />
<sourcePath path="${src.dir}" />
<class location="${build.dest}" />
</findbugs>
</target>
解説
Windows 7
解説
Windows 7
- FindBugs Downloadsからダウンロードした
findbugs-x.x.x.zip
を適当な場所に展開し、環境変数FINDBUGS_HOME
に設定- 変数名:
FINDBUGS_HOME
- 変数値:
C:\Applications\findbugs-2.0.2
- 変数名:
-
%FINDBUGS_HOME%\lib\findbugs-ant.jar
を、%ANT_HOME%\lib
にコピー(シンボリックリンクでも可) -
%FINDBUGS_HOME%\lib\findbugs-ant.jar
を、%ANT_HOME%\lib
にコピー(シンボリックリンクでも可) ant findbugs
で、findbugs.xml
を生成し、jenkins
のFindBugs
プラグインや、%FINDBUGS_HOME%\bin\findbugs.bat
でGUI
に読み込む
Ubuntu 12.10
Ubuntu 12.10
- FindBugs Downloadsから、
findbugs-x.x.x.tar.gz
をダウンロード - 適当な場所に展開して、
$ANT_HOME/lib
以下に、findbugs-ant.jar
をリンクsudo tar zxvf findbugs-2.0.2.tar.gz -C /usr/share/ sudo ln -f -s /usr/share/findbugs-2.0.2/lib/findbugs-ant.jar /usr/share/ant/lib/
-
適当な場所に展開して、$ANT_HOME/lib
以下に、findbugs-ant.jar
をリンク .bashrc
などに、環境変数FINDBUGS_HOME
を記述export FINDBUGS_HOME=/usr/share/findbugs-2.0.2
FindBugs2.0でParseException: Unparseable date
除外フィルタ
検査したくないエラーパターンを作成して、excludeFilter
で指定することもできます。
-
excludefilter.xml
#spanend #spanadd <?xml version="1.0" encoding="UTF-8"?> #spanend #spanadd <FindBugsFilter> #spanend <Match> <Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON" /> </Match> #spanadd </FindBugsFilter> #spanend #spanadd
#spanend
#spanadd
<findbugs home="${env.FINDBUGS_HOME}" effort="max" reportLevel="low"
#spanend
excludeFilter="${user.dir}/excludefilter.xml"
output="xml:withMessages" outputFile="${build.reports}/findbugs.xml" >
#spanadd
FindBugs2.0でParseException: Unparseable date
FindBugs2.0
で、以下のようなjava.text.ParseException: Unparseable date: "12/20/2011 09:17 PM EST"
が発生する場合Windows 7
の日本語環境?[findbugs] Executing findbugs from ant task [findbugs] Running FindBugs... [findbugs] java.text.ParseException: Unparseable date: "12/20/2011 09:17 PM EST" [findbugs] at java.text.DateFormat.parse(DateFormat.java:357) [findbugs] at edu.umd.cs.findbugs.Version.<clinit>(Version.java:175) [findbugs] at edu.umd.cs.findbugs.PluginLoader.init(PluginLoader.java:595) [findbugs] at edu.umd.cs.findbugs.PluginLoader.<init>(PluginLoader.java:280) ...
- FindBugs™ - Find Bugs in Java Programsから
findbugs-2.0.0-source.zip
をダウンロードして展開 findbugs-2.0.0\src\java\edu\umd\cs\findbugs\updates\UpdateChecker.java
を変更public class UpdateChecker { //public static final String PLUGIN_RELEASE_DATE = "MM/dd/yyyy hh:mm aa z"; public static final String PLUGIN_RELEASE_DATE = "MM/dd/yyyy HH:mm z";
- もしくは、
findbugs-2.0.0\src\java\edu\umd\cs\findbugs\Version.java
の173
行目付近を以下のように変更//SimpleDateFormat releaseDateFormat = new SimpleDateFormat(UpdateChecker.PLUGIN_RELEASE_DATE); SimpleDateFormat releaseDateFormat = new SimpleDateFormat(UpdateChecker.PLUGIN_RELEASE_DATE, Locale.ENGLISH);
JDK 1.6.0_30
などでコンパイル> cd findbugs-2.0.0 > set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_30 > ant.bat
findbugs-2.0.0\lib
に生成された以下のjar
ファイルを%FINDBUGS_HOME%\lib\
に上書きコピーannotations.jar
findbugs.jar
findbugs-ant.jar
- 以下、再現テストコード
import java.text.*; import java.util.*; public class UnparseableDateTest { public static final String PLUGIN_RELEASE_DATE = "MM/dd/yyyy hh:mm aa z"; public static void main(String[] args) throws Exception { SimpleDateFormat enDateFormat = new SimpleDateFormat(PLUGIN_RELEASE_DATE, Locale.ENGLISH); System.out.println("1: "+enDateFormat.parse("12/20/2011 09:17 PM EST")); SimpleDateFormat jaDateFormat = new SimpleDateFormat(PLUGIN_RELEASE_DATE, Locale.JAPANESE); System.out.println("2: "+jaDateFormat.parse("12/20/2011 09:17 午後 EST")); SimpleDateFormat releaseDateFormat = new SimpleDateFormat(PLUGIN_RELEASE_DATE); System.out.println("3: "+releaseDateFormat.parse("12/20/2011 09:17 PM EST")); } }
Windows 7
,cygwin
,mintty
,JDK 1.6.0_30
で実行$ export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.6.0_30" $ echo $JAVA_HOME /cygdrive/c/Program Files/Java/jdk1.6.0_30 $ "$JAVA_HOME/bin/javac.exe" UnparseableDateTest.java $ "$JAVA_HOME/bin/java.exe" -Duser.language=ja UnparseableDateTest 1: Wed Dec 21 11:17:00 JST 2011 2: Wed Dec 21 11:17:00 JST 2011 Exception in thread "main" java.text.ParseException: Unparseable date: "12/20/2011 09:17 PM EST" at java.text.DateFormat.parse(DateFormat.java:357) at UnparseableDateTest.main(UnparseableDateTest.java:13) $ "$JAVA_HOME/bin/java.exe" -Duser.language=en UnparseableDateTest 1: Wed Dec 21 11:17:00 JST 2011 2: Wed Dec 21 11:17:00 JST 2011 3: Wed Dec 21 11:17:00 JST 2011
参考リンク
参考リンク
コメント
-
MacOSX
でも同じ症状が出ました(MacOSX 10.6.8
,Java 1.6.0_29
,FindBugs 2.0.0
)。UpdateChecker.java
の修正の方が楽かもです。 -- norachlo?
コメント
-
MacOSX
でも同じ症状が出ました(MacOSX 10.6.8
,Java 1.6.0_29
,FindBugs 2.0.0
)。UpdateChecker.java
の修正の方が楽かもです。 -- norachlo- 情報ありがとうございます。特に実害はないようなのですが、気になるので早く修正されるといいですね。 -- aterai
-
Bug Tracker
ではすでにResolution: Fixed
になっているので、次版ではParseException
は発生しなくなりそうです。 -- aterai - 修正済みの
2.0.1
がダウンロード可能になっているようです。 -- aterai