1<html><head> 2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 3 <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> 4This chapter describes how to build <span class="application">FindBugs</span> from source code. Unless you are 5interesting in modifying <span class="application">FindBugs</span>, you will probably want to skip to the 6<a class="link" href="running.html" title="Chapter 4. Running FindBugs™">next chapter</a>. 7</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> 8To 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> 25If you want to be able to generate formatted versions of the <span class="application">FindBugs</span> documentation, 26you 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. 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> 35After you download the source distribution, you'll need to extract it into 36a 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. 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> 43If you intend to build the FindBugs documentation, 44you will need to modify the <code class="filename">local.properties</code> file 45used 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>. 47If you do not want to build the FindBugs documentation, then you 48can ignore this file. 49</p><p> 50The <code class="filename">local.properties</code> overrides definitions 51in the <code class="filename">build.properties</code> file. 52The <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 58local.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 63xsl.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 68saxon.home =${local.software.home}/java/saxon-6.5.5 69 70</pre><p> 71</p><p> 72The <code class="varname">xsl.stylesheet.home</code> property specifies the full 73path to the directory where you have installed the 74<a class="ulink" href="http://docbook.sourceforge.net/projects/xsl/" target="_top">DocBook Modular XSL 75Stylesheets</a>. You only need to specify this property if you will be 76generating the <span class="application">FindBugs</span> documentation. 77</p><p> 78The <code class="varname">saxon.home</code> property is the full path to the 79directory where you installed the <a class="ulink" href="http://saxon.sourceforge.net/" target="_top"><span class="application">Saxon</span> XSLT Processor</a>. 80You only need to specify this property if you will be 81generating the <span class="application">FindBugs</span> documentation. 82</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> 83Once you have extracted the source distribution, 84made sure that <span class="application">Ant</span> is installed, 85modified <code class="filename">build.properties</code> (optional), 86and configured the tools (such as <span class="application">Saxon</span>), 87you are ready to build <span class="application">FindBugs</span>. Invoking <span class="application">Ant</span> is a simple matter 88of 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> 92where <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> 108After running an <span class="application">Ant</span> command, you should see output similar to 109the 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"> 113BUILD SUCCESSFUL 114Total time: 17 seconds 115</code> 116</pre><p> 117</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> 118The <span class="application">Ant</span> build script for <span class="application">FindBugs</span> is written such that after 119building the <span class="command"><strong>build</strong></span> target, the working directory 120is set up just like a binary distribution. So, the information about 121running <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> 122applies 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> </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>