<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Koelsch &#187; eclipse</title>
	<atom:link href="http://www.simon-koelsch.de/tag/eclipse/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simon-koelsch.de</link>
	<description>coding software, using gadgets</description>
	<lastBuildDate>Mon, 20 Jun 2011 09:38:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>FindBugs &#8211; Eclipse Plugin zur Fehlererkennung</title>
		<link>http://www.simon-koelsch.de/79-findbugs-eclipse-plugin-zur-fehlererkennung</link>
		<comments>http://www.simon-koelsch.de/79-findbugs-eclipse-plugin-zur-fehlererkennung#comments</comments>
		<pubDate>Mon, 19 Oct 2009 16:35:44 +0000</pubDate>
		<dc:creator>Simon Koelsch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.simon-koelsch.de/?p=79</guid>
		<description><![CDATA[FindBugs ist ein Eclipse Plugin um häufig gemachte Fehler in seinem Quellcode zu finden. Entstanden ist dieses Projekt an der University of Maryland und wurde inzwischen nach eigenen Angaben ueber 700.000 mal heruntergeladen. Um Fehler zu finden wird der Bytecode der kompilierten Java Klassen auf auffälligen Muster untersucht, welche haeufig auf einen Fehler schliessen lassen. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Offizielle Projektseite" href="http://mojo.codehaus.org/findbugs-maven-plugin/">FindBugs</a> ist ein Eclipse Plugin um häufig gemachte Fehler in seinem Quellcode zu finden. Entstanden ist dieses Projekt an der University of Maryland und wurde inzwischen nach eigenen Angaben ueber 700.000 mal heruntergeladen.<br />
Um Fehler zu finden wird der Bytecode der kompilierten Java Klassen auf auffälligen Muster untersucht, welche haeufig auf einen Fehler schliessen lassen.<br />
<span id="more-79"></span><br />
Das Plugin bringt dazu selbst im Moment 369 sogenannter "<em>Bugpattern</em>" mit. Eingeteilt sind diese Pattern in folgende Kategorien:</p>
<ul>
<li>Bad Practice</li>
<li>Correctness</li>
<li>Experimental</li>
<li>Internationalization</li>
<li>Malicious code vulnerability</li>
<li>Multithreaded correctness</li>
<li>Performance</li>
<li>Security</li>
<li>Dodgy</li>
</ul>
<p>In der Konfiguration ist es dann möglich, die einzelnen Pattern an/abzuwählen, nur schnelle Pattern prüfen zu lassen, das Reporting nach Kategorien zu beschränken oder mit Filtern spezielle Dateien von einer Pruefung auszuschliessen.</p>
<p>Hier ein kurzes Code Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">String</span> str <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">String</span> str2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>str <span style="color: #339933;">==</span> str2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// ...</span></pre></div></div>

<p>FindBugs kritisiert hier den String-Vergleich, welcher wahrscheinlich ueber die Equals-Methode des Strings gemacht werden sollte. Auch ist der explizite Aufruf des Konstruktors der Stringklasse in der ersten Zeile überflüssig.</p>
<p>Ein Beispiel für häufige Nullpointer Exception Fehler:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">User user <span style="color: #339933;">=</span> <span style="color: #003399;">Map</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;id3345&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>user <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
user.<span style="color: #006633;">refresh</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003399;">String</span> pwd <span style="color: #339933;">=</span> user.<span style="color: #006633;">getPassword</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Hier wird ausserhalb der Bedingung auf ein eventuell nicht vorhandenes Objekt zugegriffen. FindBugs markiert die entsprechende Stelle dann mit einer Warnung.</p>
<p>Implementiert eine Klasse das java.util.Iterator Interface ohne eine NoSuchElementException zu werfen, wird auch diese Klasse als Fehlerhaft makiert. So gibt es eine Unmenge an weiteren Beispielen im <a title="FindBugs Handbuch" href="http://findbugs.sourceforge.net/bugDescriptions.html">Handbuch, welches alle Pattern dokumentiert</a>.</p>
<p>Wem die vorhanden Pattern nicht reichen, der kann relativ einfach selbst eigene Pattern erstellen und mit FindBugs benutzen. So lassen sich zum Beispiel auch Fehler in der falschen Benutzung von eigenen Frameworks finden. Chris Grindstaff von IBM hat ein kleines Tutorial dazu geschrieben: <a title="Custom Bug Detector" href="http://www.ibm.com/developerworks/java/library/j-findbug2/">Writing custom bug detectors</a>.<br />
<a title="FindBugs Contributions" href="http://fb-contrib.sourceforge.net/">fb-contrib</a> ist eine offene Sammlung eigener Pattern.</p>
<p>FindBugs muss übrigends nicht zwingend als Eclipse Plugin benutzt werden. Es gibt eine eigene <a title="FindBugs GUI im Handbuch" href="http://findbugs.sourceforge.net/manual/gui.html">GUI</a> dafür und wer will kann es sogar als <a title="FindBugs Handbuch - Ant-Task" href="http://findbugs.sourceforge.net/manual/anttask.html">Ant-Task</a> in seinem Deploymentprozess nutzen. Auch für <a title="Maven Plugin" href="http://maven-plugins.sourceforge.net/maven-findbugs-plugin/index.html">Maven</a> und <a title="Maven 2.x Plugin" href="http://mojo.codehaus.org/findbugs-maven-plugin/">Maven 2.0</a> gibt es inzwischen ein entsprechendes Plugin.<br />
Hier ist der <a title="FindBug Download" href="http://http://findbugs.sourceforge.net/downloads.htmlhttp://findbugs.sourceforge.net/downloads.html">Download</a> zu finden.<br />
Plugin only: <em>http://findbugs.cs.umd.edu/eclipse</em> ist die offizielle Update Seite fuer den Eclipse Plugin Manager.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-koelsch.de/79-findbugs-eclipse-plugin-zur-fehlererkennung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

