SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

JavaのバグをFindBugsで見つける

オープンソースのJava向け静的分析ツール

FindBugsをビルドプロセスに統合する

 FindBugsをIDE内で使うのが、おそらくこの静的分析ツールを利用する最も効率的な方法です。ただし、FindBugsのバグ検出処理を非常に効率よくビルドプロセスに統合することもできます。これは、プロジェクト全体のコードを自動的に高品質に保ち、すべての開発者にルールを遵守させるには最適な方法です。さらに、プロジェクト全体のFindBugs分析を自動化する一方でコードのレビューや定期的なコード品質会議を実施することにより、チームのスキルを高めることもできます。

 FindBugsは、AntMavenの両方に巧みに統合されます。ビルドスクリプトがAntで書かれている場合は、FindBugsに付属するAntタスクを使用できます。findbugs-ant.jarファイルをAntのlibディレクトリにコピーし、FindBugsタスクを次のように宣言します。

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"     />

 FindBugsがインストールされている場所も定義する必要があります。たとえば、homeディレクトリ下のfindbugsという名前のディレクトリにインストールした場合、次のように記述します。

<property name="findbugs.home" value="${user.home}/findbugs"     />

 あとは、FindBugsタスクを次のように呼び出すだけです。

<target name="findbugs" depends="compile">
  <findbugs home="${findbugs.home}" output="xml" 
            failOnError="true" outputFile="findbugs-report.xml">
    <class location="${build.classes.dir}"     />
    <auxClasspath refId="compile.classpath"     />
    <sourcePath path="src"     />
  </findbugs>
</target>

 すべてのFindBugs検出項目について、マシンに負担をかけないようにXML形式でレポートが生成されます。HTML形式で出力するオプションを使うと、読みやすいレポートが得られます。

 Mavenを使用する場合は、Maven FindBugsプラグインをpom.xmlのreportingセクションに統合するだけで作業は終わりです。

<project>
  <reporting>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <configuration>
          <threshold>Normal</threshold>
          <xmlOutput>true</xmlOutput>
        </configuration>
      </plugin>
      ...
    </plugins>
  </reporting>
</project>

 どちらのプラグインもレポートをXMLとHTMLの両方で生成できます。HTML形式のレポートは整然としていて読みやすく、チェック結果を発行するために使用できます。ただし、FindBugsの結果と統計を表示する最もユーザーフレンドリな手段は、Hudson Continuous Integrationサーバーです(図5を参照)。Hudsonは、FindBugsから生成されたXML形式のレポートを受け取り、HTML形式のレポートと、各ビルドに見つかった問題点の詳細が注釈として追加されたソースコードを生成します。また、FindBugsで検出された問題点の数を時系列で示すグラフも作成します。

図5. HudsonによるFindBugs分析統計: Hudson Continuous Integrationサーバーは、FindBugsのチェック結果と統計を表示するユーザーフレンドリな方法である。
図5. HudsonによるFindBugs分析統計: Hudson Continuous Integrationサーバーは、FindBugsのチェック結果と統計を表示するユーザーフレンドリな方法である。

アプリケーションを脅かすバグへの専念

 市場にあふれるJava静的分析ツールのなかでも、FindBugsは際立った存在です。FindBugsは、コーディングのスタイル、命名規則、あるいはベストプラクティスに重点を置くのではなく、アプリケーションを脅かすバグを特定することに全力を傾けます。しかも、妥当な成功率でこのようなバグを検出できます。実際に試した範囲では、FindBugsで指摘される問題点の少なくとも半数には注意する価値があります。コードのエラー検出に真剣に取り組むなら、FindBugsは必携のツールです。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

John Ferguson Smart(John Ferguson Smart)

政府機関や企業の国内外の開発チームから成る大規模なJ2EEプロジェクトに数多く携わる。J2EEのアーキテクチャと開発、およびITプロジェクト管理を専門とする。オープンソースのJavaテクノロジの経験も豊富。自らのテクニカルブログを公開中(www.jroller.com/page/wakaleo)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3024 2008/10/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー