Home | History | Annotate | Download | only in manual
      1 <html><head>
      2       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      3    <title>Chapter&nbsp;3.&nbsp;Building FindBugs&#8482; from Source</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="FindBugs&#8482; Manual"><link rel="up" href="index.html" title="FindBugs&#8482; Manual"><link rel="prev" href="installing.html" title="Chapter&nbsp;2.&nbsp;Installing FindBugs&#8482;"><link rel="next" href="running.html" title="Chapter&nbsp;4.&nbsp;Running FindBugs&#8482;"></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&nbsp;3.&nbsp;Building <span class="application">FindBugs</span>&#8482; from Source</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="installing.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="running.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;3.&nbsp;Building FindBugs&#8482; from Source"><div class="titlepage"><div><div><h2 class="title"><a name="building"></a>Chapter&nbsp;3.&nbsp;Building <span class="application">FindBugs</span>&#8482; 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>&#8482; from a source directory</a></span></dt></dl></div><p>
      4 This chapter describes how to build <span class="application">FindBugs</span> from source code.  Unless you are
      5 interesting in modifying <span class="application">FindBugs</span>, you will probably want to skip to the
      6 <a class="link" href="running.html" title="Chapter&nbsp;4.&nbsp;Running FindBugs&#8482;">next chapter</a>.
      7 </p><div class="sect1" title="1.&nbsp;Prerequisites"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e173"></a>1.&nbsp;Prerequisites</h2></div></div></div><p>
      8 To compile <span class="application">FindBugs</span> from source, you will need the following:
      9 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
     10       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>
     11     </p></li><li class="listitem"><p>
     12       <a class="ulink" href="http://java.sun.com/j2se/" target="_top">JDK 1.5.0 or later</a>
     13     </p></li><li class="listitem"><p>
     14       <a class="ulink" href="http://ant.apache.org/" target="_top">Apache <span class="application">Ant</span></a>, version 1.6.3 or later
     15     </p></li></ul></div><p>
     16 </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>
     17         The version of <span class="application">Ant</span> included as <code class="filename">/usr/bin/ant</code> on
     18         Redhat Linux systems will <span class="emphasis"><em>not</em></span> work for compiling
     19         <span class="application">FindBugs</span>.  We recommend you install a binary distribution of <span class="application">Ant</span>
     20         downloaded from the <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span> website</a>.
     21         Make sure that when you run <span class="application">Ant</span> your <em class="replaceable"><code>JAVA_HOME</code></em>
     22         environment variable points to the directory in which you installed
     23         JDK 1.5 (or later).
     24     </p></td></tr></table></div><p>
     25 If you want to be able to generate formatted versions of the <span class="application">FindBugs</span> documentation,
     26 you will also need the following software:
     27 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
     28     The <a class="ulink" href="http://docbook.sourceforge.net/projects/xsl/index.html" target="_top">DocBook XSL Stylesheets</a>.
     29     These are required to convert the <span class="application">FindBugs</span> manual into HTML format.
     30     </p></li><li class="listitem"><p>
     31       The <a class="ulink" href="http://saxon.sourceforge.net/" target="_top"><span class="application">Saxon</span> XSLT Processor</a>.
     32       (Also required for converting the <span class="application">FindBugs</span> manual to HTML.)
     33     </p></li></ul></div><p>
     34 </p></div><div class="sect1" title="2.&nbsp;Extracting the Source Distribution"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e262"></a>2.&nbsp;Extracting the Source Distribution</h2></div></div></div><p>
     35 After you download the source distribution, you'll need to extract it into
     36 a working directory.  A typical command to do this is:
     37 
     38 </p><pre class="screen">
     39 <code class="prompt">$ </code><span class="command"><strong>unzip findbugs-2.0.3-source.zip</strong></span>
     40 </pre><p>
     41 
     42 </p></div><div class="sect1" title="3.&nbsp;Modifying local.properties"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e275"></a>3.&nbsp;Modifying <code class="filename">local.properties</code></h2></div></div></div><p>
     43 If you intend to build the FindBugs documentation,
     44 you will need to modify the <code class="filename">local.properties</code> file
     45 used by the <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span></a>
     46 <code class="filename">build.xml</code> file to build <span class="application">FindBugs</span>.
     47 If you do not want to build the FindBugs documentation, then you
     48 can ignore this file.
     49 </p><p>
     50 The <code class="filename">local.properties</code> overrides definitions
     51 in the <code class="filename">build.properties</code> file.
     52 The <code class="filename">build.properties</code> file looks something like this:
     53 </p><pre class="programlisting">
     54 
     55 # User Configuration:
     56 # This section must be modified to reflect your system.
     57 
     58 local.software.home     =/export/home/daveho/linux
     59 
     60 # Set this to the directory containing the DocBook Modular XSL Stylesheets
     61 #  from http://docbook.sourceforge.net/projects/xsl/
     62 
     63 xsl.stylesheet.home     =${local.software.home}/docbook/docbook-xsl-1.71.1
     64 
     65 # Set this to the directory where Saxon (http://saxon.sourceforge.net/)
     66 # is installed.
     67 
     68 saxon.home              =${local.software.home}/java/saxon-6.5.5
     69 
     70 </pre><p>
     71 </p><p>
     72 The <code class="varname">xsl.stylesheet.home</code> property specifies the full
     73 path to the directory where you have installed the
     74 <a class="ulink" href="http://docbook.sourceforge.net/projects/xsl/" target="_top">DocBook Modular XSL
     75 Stylesheets</a>.  You only need to specify this property if you will be
     76 generating the <span class="application">FindBugs</span> documentation.
     77 </p><p>
     78 The <code class="varname">saxon.home</code> property is the full path to the
     79 directory where you installed the <a class="ulink" href="http://saxon.sourceforge.net/" target="_top"><span class="application">Saxon</span> XSLT Processor</a>.
     80 You only need to specify this property if you will be
     81 generating the <span class="application">FindBugs</span> documentation.
     82 </p></div><div class="sect1" title="4.&nbsp;Running Ant"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e333"></a>4.&nbsp;Running <span class="application">Ant</span></h2></div></div></div><p>
     83 Once you have extracted the source distribution,
     84 made sure that <span class="application">Ant</span> is installed,
     85 modified <code class="filename">build.properties</code> (optional),
     86 and configured the tools (such as <span class="application">Saxon</span>),
     87 you are ready to build <span class="application">FindBugs</span>.  Invoking <span class="application">Ant</span> is a simple matter
     88 of running the command
     89 </p><pre class="screen">
     90 <code class="prompt">$ </code><span class="command"><strong>ant <em class="replaceable"><code>target</code></em></strong></span>
     91 </pre><p>
     92 where <em class="replaceable"><code>target</code></em> is one of the following:
     93 </p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>build</strong></span></span></dt><dd><p>
     94          This target compiles the code for <span class="application">FindBugs</span>. It is the default target.
     95        </p></dd><dt><span class="term"><span class="command"><strong>docs</strong></span></span></dt><dd><p>
     96        This target formats the documentation.  (It also compiles some of
     97        the source code as a side-effect.)
     98        </p></dd><dt><span class="term"><span class="command"><strong>runjunit</strong></span></span></dt><dd><p>
     99             This target compiles and runs the internal JUnit tests included
    100             in <span class="application">FindBugs</span>.  It will print an error message if any unit
    101             tests fail.
    102         </p></dd><dt><span class="term"><span class="command"><strong>bindist</strong></span></span></dt><dd><p>
    103             Builds a binary distribution of <span class="application">FindBugs</span>.
    104             The target creates both <code class="filename">.zip</code> and
    105             <code class="filename">.tar.gz</code> archives.
    106         </p></dd></dl></div><p>
    107 </p><p>
    108 After running an <span class="application">Ant</span> command, you should see output similar to
    109 the following (after some other messages regarding the tasks that
    110 <span class="application">Ant</span> is running):
    111 </p><pre class="screen">
    112 <code class="computeroutput">
    113 BUILD SUCCESSFUL
    114 Total time: 17 seconds
    115 </code>
    116 </pre><p>
    117 </p></div><div class="sect1" title="5.&nbsp;Running FindBugs&#8482; from a source directory"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e427"></a>5.&nbsp;Running <span class="application">FindBugs</span>&#8482; from a source directory</h2></div></div></div><p>
    118 The <span class="application">Ant</span> build script for <span class="application">FindBugs</span> is written such that after
    119 building the <span class="command"><strong>build</strong></span> target, the working directory
    120 is set up just like a binary distribution.  So, the information about
    121 running <span class="application">FindBugs</span> in <a class="xref" href="running.html" title="Chapter&nbsp;4.&nbsp;Running FindBugs&#8482;">Chapter&nbsp;4, <i>Running <span class="application">FindBugs</span>&#8482;</i></a>
    122 applies to source distributions, too.
    123 </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>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="running.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;2.&nbsp;Installing <span class="application">FindBugs</span>&#8482;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;4.&nbsp;Running <span class="application">FindBugs</span>&#8482;</td></tr></table></div></body></html>