TITLE:AntでFindBugsを実行する
#navi(../)
*AntでFindBugsを実行する [#bb042b47]
#adsense2
>編集者:[[Terai Atsuhiro>aterai]]~
作成日:2012-01-19~
更新日:&lastmod;

#contents(none)

**概要 [#g68b00f6]
AntからFindBugsを実行します。

**サンプルターゲット [#h0deaf72]
#code{{
<condition property="have.findbugs">
  <and>
    <available classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
    <available file="${env.FINDBUGS_HOME}" />
  </and>
</condition>
<target name="findbugs" depends="compile" if="have.findbugs">
  <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
  <mkdir dir="${build.reports}" />
  <findbugs home="${env.FINDBUGS_HOME}" effort="max"
          output="xml" outputFile="${build.reports}/findbugs.xml" >
    <auxClasspath refid="project.class.path" />
    <sourcePath path="${src.dir}" />
    <class location="${build.dest}" />
  </findbugs>
</target>
}}

**解説 [#g9d082f0]
+[http://findbugs.sourceforge.net/ FindBugs™ - Find Bugs in Java Programs]からダウンロードしたfindbugs-2.0.0.zipを適当な場所に展開し、環境変数FINDBUGS_HOMEに設定
-- 変数名: FINDBUGS_HOME
-- 変数値: C:\Applications\findbugs-2.0.0
+ %FINDBUGS_HOME%\lib\findbugs-ant.jar を、%ANT_HOME%\lib にコピー
+ ant findbugs で、findbugs.xml を生成し、jenkinsのFindBugsプラグインや、%FINDBUGS_HOME%\bin\findbugs.bat でGUIで読み込む

----
- FindBugs2.0 で、以下のような java.text.ParseException: Unparseable date: "12/20/2011 09:17 PM EST" が発生する場合
 [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)
 ...

- [http://findbugs.sourceforge.net/ 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 を変更
#code{{
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";
}}

- 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

//----
//findbugs-noUpdateChecks-2.0.0.zip を使っても ParseException が発生する
//> The following versions of FindBugs are pre-configured to disable checks for updated versions of FindBugs, and the plugin tha allows communication with the FindBugs community cloud is disabled by default. Such configurations are appropriate in situations where it is important that no information about the use of FindBugs be disclosed outside of the organization where it is used.

**参考リンク [#e3297a48]
- [http://findbugs.sourceforge.net/ FindBugs™ - Find Bugs in Java Programs]

**コメント [#sc369256]
#comment