<html>
<head>
<title>FindBugs™ Fact Sheet</title>
<link rel="stylesheet" type="text/css" href="findbugs.css">
</head>
<body>
<table width="100%"><tr>
<td bgcolor="#b9b9fe" valign="top" align="left" width="20%">
<table width="100%" cellspacing="0" border="0">
<tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="FindBugs"></a></td></tr>
<tr><td> </td></tr>
<tr><td><b>Docs and Info</b></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="findbugs2.html">FindBugs 2.0</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="demo.html">Demo and data</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="users.html">Users and supporters</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="http://findbugs.blogspot.com/">FindBugs blog</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="factSheet.html">Fact sheet</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="manual/index.html">Manual</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="ja/manual/index.html">Manual(ja/日本語)</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="FAQ.html">FAQ</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="bugDescriptions.html">Bug descriptions</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="mailingLists.html">Mailing lists</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="publications.html">Documents and Publications</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="links.html">Links</a></font></td></tr>
<tr><td> </td></tr>
<tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr>
<tr><td> </td></tr>
<tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs Swag</b></a></td></tr>
<tr><td> </td></tr>
<tr><td><b>Development</b></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="http://sourceforge.net/tracker/?group_id=96405">Open bugs</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="reportingBugs.html">Reporting bugs</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="contributing.html">Contributing</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="team.html">Dev team</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="api/index.html">API</a> <a class="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="Changes.html">Change log</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="http://sourceforge.net/projects/findbugs">SF project page</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="http://code.google.com/p/findbugs/source/browse/">Browse source</a></font></td></tr>
<tr><td><font size="-1"><a class="sidebar" href="http://code.google.com/p/findbugs/source/list">Latest code changes</a></font></td></tr>
</table>
</td>
<td align="left" valign="top">
<h1>FindBugs™ Fact Sheet</h1>
<p> FindBugs looks for bugs in Java programs. It is based
on the concept of <i>bug patterns</i>. A bug pattern is a code
idiom that is often an error. Bug patterns arise for a variety
of reasons:
</p>
<ul>
<li> Difficult language features
<li> Misunderstood API methods
<li> Misunderstood invariants when code is modified during maintenance
<li> Garden variety mistakes: typos, use of the wrong boolean operator
</ul>
<p> FindBugs uses <i>static analysis</i> to inspect Java bytecode
for occurrences of bug patterns.
Static analysis means that FindBugs can find bugs by simply inspecting
a program's code: executing the program is not necessary.
This makes FindBugs very easy to use: in general, you should be
able to use it to look for bugs in your code within a few minutes of downloading it.
FindBugs works by analyzing Java bytecode (compiled class files),
so you don't even need the program's source code to use it.
Because its analysis is
sometimes imprecise, FindBugs can report <i>false warnings</i>,
which are warnings that do not indicate real errors.
In practice, the rate of false warnings reported by FindBugs
is less than 50%.
</p>
<p>
FindBugs supports a plugin architecture allowing anyone to add new
bug detectors. The <a href="publications.html">publications page</a>
contains links to articles describing how to write a new detector
for FindBugs. If you are familiar with Java bytecode
you can write a new FindBugs detector in as little as a few minutes.
</p>
<p> FindBugs is free software, available under the terms of the
<a href="http://www.gnu.org/copyleft/lesser.html">Lesser GNU Public License</a>.
It is written in Java, and can be run with any virtual machine compatible
with Sun's JDK 1.5. It can analyze programs written for any version
of Java. FindBugs was originally developed by Bill Pugh and David Hovemeyer.
It is maintained by Bill Pugh, and
a <a href="team.html">team of volunteers</a>.
</p>
<p> FindBugs uses <a href="http://jakarta.apache.org/bcel/">BCEL</a> to
analyze Java bytecode.
As of version 1.1, FindBugs also supports bug detectors written using
the <a href="http://asm.objectweb.org/">ASM</a> bytecode framework.
FindBugs uses <a href="http://dom4j.org/">dom4j</a>
for XML manipulation.
</p>
<hr> <p>
<script language="JavaScript" type="text/javascript">
<!---//hide script from old browsers
document.write( "Last updated "+ document.lastModified + "." );
//end hiding contents --->
</script>
<p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbugs@cs.umd.edu</a>
<p>
<A href="http://sourceforge.net"><IMG src="http://sourceforge.net/sflogo.php?group_id=96405&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></A>
</td>
</tr></table>
</body>
</html>