<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Chapter 3. Building FindBugs™ from Source</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="FindBugs™ Manual"><link rel="up" href="index.html" title="FindBugs™ Manual"><link rel="prev" href="installing.html" title="Chapter 2. Installing FindBugs™"><link rel="next" href="running.html" title="Chapter 4. Running FindBugs™"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Building <span class="application">FindBugs</span>™ from Source</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="installing.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="running.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 3. Building FindBugs™ from Source"><div class="titlepage"><div><div><h2 class="title"><a name="building"></a>Chapter 3. Building <span class="application">FindBugs</span>™ from Source</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="building.html#d0e173">1. Prerequisites</a></span></dt><dt><span class="sect1"><a href="building.html#d0e262">2. Extracting the Source Distribution</a></span></dt><dt><span class="sect1"><a href="building.html#d0e275">3. Modifying <code class="filename">local.properties</code></a></span></dt><dt><span class="sect1"><a href="building.html#d0e333">4. Running <span class="application">Ant</span></a></span></dt><dt><span class="sect1"><a href="building.html#d0e427">5. Running <span class="application">FindBugs</span>™ from a source directory</a></span></dt></dl></div><p> This chapter describes how to build <span class="application">FindBugs</span> from source code. Unless you are interesting in modifying <span class="application">FindBugs</span>, you will probably want to skip to the <a class="link" href="running.html" title="Chapter 4. Running FindBugs™">next chapter</a>. </p><div class="sect1" title="1. Prerequisites"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e173"></a>1. Prerequisites</h2></div></div></div><p> To compile <span class="application">FindBugs</span> from source, you will need the following: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> The <a class="ulink" href="http://prdownloads.sourceforge.net/findbugs/findbugs-2.0.3-source.zip?download" target="_top"><span class="application">FindBugs</span> source distribution</a> </p></li><li class="listitem"><p> <a class="ulink" href="http://java.sun.com/j2se/" target="_top">JDK 1.5.0 or later</a> </p></li><li class="listitem"><p> <a class="ulink" href="http://ant.apache.org/" target="_top">Apache <span class="application">Ant</span></a>, version 1.6.3 or later </p></li></ul></div><p> </p><div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p> The version of <span class="application">Ant</span> included as <code class="filename">/usr/bin/ant</code> on Redhat Linux systems will <span class="emphasis"><em>not</em></span> work for compiling <span class="application">FindBugs</span>. We recommend you install a binary distribution of <span class="application">Ant</span> downloaded from the <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span> website</a>. Make sure that when you run <span class="application">Ant</span> your <em class="replaceable"><code>JAVA_HOME</code></em> environment variable points to the directory in which you installed JDK 1.5 (or later). </p></td></tr></table></div><p> If you want to be able to generate formatted versions of the <span class="application">FindBugs</span> documentation, you will also need the following software: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> The <a class="ulink" href="http://docbook.sourceforge.net/projects/xsl/index.html" target="_top">DocBook XSL Stylesheets</a>. These are required to convert the <span class="application">FindBugs</span> manual into HTML format. </p></li><li class="listitem"><p> The <a class="ulink" href="http://saxon.sourceforge.net/" target="_top"><span class="application">Saxon</span> XSLT Processor</a>. (Also required for converting the <span class="application">FindBugs</span> manual to HTML.) </p></li></ul></div><p> </p></div><div class="sect1" title="2. Extracting the Source Distribution"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e262"></a>2. Extracting the Source Distribution</h2></div></div></div><p> After you download the source distribution, you'll need to extract it into a working directory. A typical command to do this is: </p><pre class="screen"> <code class="prompt">$ </code><span class="command"><strong>unzip findbugs-2.0.3-source.zip</strong></span> </pre><p> </p></div><div class="sect1" title="3. Modifying local.properties"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e275"></a>3. Modifying <code class="filename">local.properties</code></h2></div></div></div><p> If you intend to build the FindBugs documentation, you will need to modify the <code class="filename">local.properties</code> file used by the <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span></a> <code class="filename">build.xml</code> file to build <span class="application">FindBugs</span>. If you do not want to build the FindBugs documentation, then you can ignore this file. </p><p> The <code class="filename">local.properties</code> overrides definitions in the <code class="filename">build.properties</code> file. The <code class="filename">build.properties</code> file looks something like this: </p><pre class="programlisting"> # User Configuration: # This section must be modified to reflect your system. local.software.home =/export/home/daveho/linux # Set this to the directory containing the DocBook Modular XSL Stylesheets # from http://docbook.sourceforge.net/projects/xsl/ xsl.stylesheet.home =${local.software.home}/docbook/docbook-xsl-1.71.1 # Set this to the directory where Saxon (http://saxon.sourceforge.net/) # is installed. saxon.home =${local.software.home}/java/saxon-6.5.5 </pre><p> </p><p> The <code class="varname">xsl.stylesheet.home</code> property specifies the full path to the directory where you have installed the <a class="ulink" href="http://docbook.sourceforge.net/projects/xsl/" target="_top">DocBook Modular XSL Stylesheets</a>. You only need to specify this property if you will be generating the <span class="application">FindBugs</span> documentation. </p><p> The <code class="varname">saxon.home</code> property is the full path to the directory where you installed the <a class="ulink" href="http://saxon.sourceforge.net/" target="_top"><span class="application">Saxon</span> XSLT Processor</a>. You only need to specify this property if you will be generating the <span class="application">FindBugs</span> documentation. </p></div><div class="sect1" title="4. Running Ant"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e333"></a>4. Running <span class="application">Ant</span></h2></div></div></div><p> Once you have extracted the source distribution, made sure that <span class="application">Ant</span> is installed, modified <code class="filename">build.properties</code> (optional), and configured the tools (such as <span class="application">Saxon</span>), you are ready to build <span class="application">FindBugs</span>. Invoking <span class="application">Ant</span> is a simple matter of running the command </p><pre class="screen"> <code class="prompt">$ </code><span class="command"><strong>ant <em class="replaceable"><code>target</code></em></strong></span> </pre><p> where <em class="replaceable"><code>target</code></em> is one of the following: </p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>build</strong></span></span></dt><dd><p> This target compiles the code for <span class="application">FindBugs</span>. It is the default target. </p></dd><dt><span class="term"><span class="command"><strong>docs</strong></span></span></dt><dd><p> This target formats the documentation. (It also compiles some of the source code as a side-effect.) </p></dd><dt><span class="term"><span class="command"><strong>runjunit</strong></span></span></dt><dd><p> This target compiles and runs the internal JUnit tests included in <span class="application">FindBugs</span>. It will print an error message if any unit tests fail. </p></dd><dt><span class="term"><span class="command"><strong>bindist</strong></span></span></dt><dd><p> Builds a binary distribution of <span class="application">FindBugs</span>. The target creates both <code class="filename">.zip</code> and <code class="filename">.tar.gz</code> archives. </p></dd></dl></div><p> </p><p> After running an <span class="application">Ant</span> command, you should see output similar to the following (after some other messages regarding the tasks that <span class="application">Ant</span> is running): </p><pre class="screen"> <code class="computeroutput"> BUILD SUCCESSFUL Total time: 17 seconds </code> </pre><p> </p></div><div class="sect1" title="5. Running FindBugs™ from a source directory"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e427"></a>5. Running <span class="application">FindBugs</span>™ from a source directory</h2></div></div></div><p> The <span class="application">Ant</span> build script for <span class="application">FindBugs</span> is written such that after building the <span class="command"><strong>build</strong></span> target, the working directory is set up just like a binary distribution. So, the information about running <span class="application">FindBugs</span> in <a class="xref" href="running.html" title="Chapter 4. Running FindBugs™">Chapter 4, <i>Running <span class="application">FindBugs</span>™</i></a> applies to source distributions, too. </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="installing.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="running.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Installing <span class="application">FindBugs</span>™ </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Running <span class="application">FindBugs</span>™</td></tr></table></div></body></html>