Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: doc/Changes.html

Issue 594833004: Roll FindBugs from 2.0.3 to 3.0.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/findbugs.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « README.chromium ('k') | doc/FAQ.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd"> 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd">
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>FindBugs Change Log</title> 4 <title>FindBugs Change Log</title>
5 <link rel="stylesheet" type="text/css" href="findbugs.css"> 5 <link rel="stylesheet" type="text/css" href="findbugs.css">
6 6
7 </head> 7 </head>
8 8
9 <body> 9 <body>
10 10
11 » <table width="100%"> 11 <table width="100%">
12 » » <tr> 12 <tr>
13 13
14 » » » 14
15 <td bgcolor="#b9b9fe" valign="top" align="left" width="20%"> 15 <td bgcolor="#b9b9fe" valign="top" align="left" width="20%">
16 <table width="100%" cellspacing="0" border="0"> 16 <table width="100%" cellspacing="0" border="0">
17 <tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="Fin dBugs"></a></td></tr> 17 <tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="Fin dBugs"></a></td></tr>
18 18
19 <tr><td>&nbsp;</td></tr> 19 <tr><td>&nbsp;</td></tr>
20 20
21 <tr><td><b>Docs and Info</b></td></tr> 21 <tr><td><b>Docs and Info</b></td></tr>
22 <tr><td><font size="-1"><a class="sidebar" href="findbugs2.html">FindBugs 2.0</a ></font></td></tr> 22 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="findbugs2.html">FindBugs 2.0</a></font></td></tr>
23 <tr><td><font size="-1"><a class="sidebar" href="demo.html">Demo and data</a></f ont></td></tr> 23 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="demo.html">Demo and data< /a></font></td></tr>
24 <tr><td><font size="-1"><a class="sidebar" href="users.html">Users and supporter s</a></font></td></tr> 24 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="users.html">Users and sup porters</a></font></td></tr>
25 <tr><td><font size="-1"><a class="sidebar" href="http://findbugs.blogspot.com/"> FindBugs blog</a></font></td></tr> 25 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://findbugs.blogspot. com/">FindBugs blog</a></font></td></tr>
26 <tr><td><font size="-1"><a class="sidebar" href="factSheet.html">Fact sheet</a>< /font></td></tr> 26 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="factSheet.html">Fact shee t</a></font></td></tr>
27 <tr><td><font size="-1"><a class="sidebar" href="manual/index.html">Manual</a></ font></td></tr> 27 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="manual/index.html">Manual </a></font></td></tr>
28 <tr><td><font size="-1"><a class="sidebar" href="ja/manual/index.html">Manual(ja /&#26085;&#26412;&#35486;)</a></font></td></tr> 28 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="ja/manual/index.html">Man ual(ja/&#26085;&#26412;&#35486;)</a></font></td></tr>
29 <tr><td><font size="-1"><a class="sidebar" href="FAQ.html">FAQ</a></font></td></ tr> 29 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="FAQ.html">FAQ</a></font>< /td></tr>
30 <tr><td><font size="-1"><a class="sidebar" href="bugDescriptions.html">Bug descr iptions</a></font></td></tr> 30 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions.html">Bug descriptions</a></font></td></tr>
31 <tr><td><font size="-1"><a class="sidebar" href="mailingLists.html">Mailing list s</a></font></td></tr> 31 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions_ja.html"> Bug descriptions(ja/&#26085;&#26412;&#35486;)</a></font></td></tr>
32 <tr><td><font size="-1"><a class="sidebar" href="publications.html">Documents an d Publications</a></font></td></tr> 32 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions_fr.html"> Bug descriptions(fr)</a></font></td></tr>
33 <tr><td><font size="-1"><a class="sidebar" href="links.html">Links</a></font></t d></tr> 33 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="mailingLists.html">Mailin g lists</a></font></td></tr>
34 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="publications.html">Docume nts and Publications</a></font></td></tr>
35 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="links.html">Links</a></fo nt></td></tr>
34 36
35 <tr><td>&nbsp;</td></tr> 37 <tr><td>&nbsp;</td></tr>
36 38
37 <tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr> 39 <tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr>
38 40
39 <tr><td>&nbsp;</td></tr> 41 <tr><td>&nbsp;</td></tr>
40 42
41 <tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs Swag</b></a></td></tr> 43 <tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs Swag</b></a></td></tr>
42 44
43 <tr><td>&nbsp;</td></tr> 45 <tr><td>&nbsp;</td></tr>
44 46
45 <tr><td><b>Development</b></td></tr> 47 <tr><td><b>Development</b></td></tr>
46 <tr><td><font size="-1"><a class="sidebar" href="http://sourceforge.net/tracker/ ?group_id=96405">Open bugs</a></font></td></tr> 48 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/tr acker/?group_id=96405">Open bugs</a></font></td></tr>
47 <tr><td><font size="-1"><a class="sidebar" href="reportingBugs.html">Reporting b ugs</a></font></td></tr> 49 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="reportingBugs.html">Repor ting bugs</a></font></td></tr>
48 <tr><td><font size="-1"><a class="sidebar" href="contributing.html">Contributing </a></font></td></tr> 50 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="contributing.html">Contri buting</a></font></td></tr>
49 <tr><td><font size="-1"><a class="sidebar" href="team.html">Dev team</a></font>< /td></tr> 51 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="team.html">Dev team</a></ font></td></tr>
50 <tr><td><font size="-1"><a class="sidebar" href="api/index.html">API</a> <a clas s="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></tr> 52 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="api/index.html">API</a> < a class="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></ tr>
51 <tr><td><font size="-1"><a class="sidebar" href="Changes.html">Change log</a></f ont></td></tr> 53 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="Changes.html">Change log< /a></font></td></tr>
52 <tr><td><font size="-1"><a class="sidebar" href="http://sourceforge.net/projects /findbugs">SF project page</a></font></td></tr> 54 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/pr ojects/findbugs">SF project page</a></font></td></tr>
53 <tr><td><font size="-1"><a class="sidebar" href="http://code.google.com/p/findbu gs/source/browse/">Browse source</a></font></td></tr> 55 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/browse/">Browse source</a></font></td></tr>
54 <tr><td><font size="-1"><a class="sidebar" href="http://code.google.com/p/findbu gs/source/list">Latest code changes</a></font></td></tr> 56 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/list">Latest code changes</a></font></td></tr>
55 </table> 57 </table>
56 </td> 58 </td>
57 59
58 <td align="left" valign="top"> 60 <td align="left" valign="top">
59 61
60 62
61 <h1>FindBugs Change Log, Version 2.0.3</h1> 63 <h1>FindBugs Change Log, Version 3.0.0</h1>
62 <ul> 64 <ul>
63 <li>New Bug patterns: <a 65 <li>FindBugs supports Java 8 now (both as runtime and target platform).
64 href="http://findbugs.sourceforg e.net/bugDescriptions.html#DM_BOXED_PRIMITIVE_FOR_PARSING">DM_BOXED_PRIMITIVE_FO R_PARSING</a>, 66 <li>FindBugs requires minimum Java 7 as runtime environment!
65 <a 67 <li>FindBugs uses ASM 5 now which means that some 3rd party detectors based on FindBugs 2.x/ASM 3 has to be upgraded.
66 href="http://findbugs.sourceforg e.net/bugDescriptions.html#NP_METHOD_RETURN_RELAXING_ANNOTATION">NP_METHOD_RETUR N_RELAXING_ANNOTATION</a>, 68 See details in <a href="http://download.forge.objectweb.org/ asm/asm4-guide.pdf#chapter.5">ASM documentation</a>.
67 and 69 <li>New Bug patterns:
68 <a 70 <a
69 href="http://findbugs.sourceforg e.net/bugDescriptions.html#NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP_METHOD_PA RAMETER_TIGHTENS_ANNOTATION</a> 71 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#NP_OPTIONAL_RETURN_NULL">NP_OPTIONAL_RETURN_NULL</a>,
70 </li> 72 <a
71 <li>Add the ability in the GUI to save t he currently viewable/filtered bugs to HTML output. 73 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#IIO_INEFFICIENT_INDEX_OF">IIO_INEFFICIENT_INDEX_OF</a>,
72 <li>When dataflow does't terminate, make sure we continue with 74 <a
73 analysis. 75 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#IIO_INEFFICIENT_LAST_INDEX_OF">IIO_INEFFICIENT_LAST_INDEX_OF</a>
74 76 <a
75 <li>Fix some problems that resulting in dataflow analysis not 77 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#CNT_ROUGH_CONSTANT_VALUE">CNT_ROUGH_CONSTANT_VALUE</a>
76 terminating 78 </li>
77 79 <li>New "Source" filter which can be used to filter out clas ses generated from other languages:
78 <li>Get parameter annotations from defau lt parameters 80 <pre>
79 annotations applied to the metho d. 81 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
80 <li>Add subversion change number to ecli pse plugin qualifier. 82 &lt;FindBugsFilter&gt;
81 83 &lt;Match&gt;
82 <li>Disabled detector for <a 84 &lt;Source name="~.*\.groovy" /&gt;
83 href="http://findbugs.sourceforg e.net/bugDescriptions.html#AM_CREATES_EMPTY_JAR_FILE_ENTRY">AM_CREATES_EMPTY_JAR _FILE_ENTRY</a>; 85 &lt;/Match&gt;
84 it complaints inappropriately ab out code that creates directory 86 &lt;/FindBugsFilter&gt;
85 entries. 87 </pre>
86 88 </li>
87 <li>Add warnings about incompatible type s passed to 89 <li>New "-auxclasspathFromFile" and "-analyzeFromFile" comma nd line options.
88 org.testng.Assert.assertEquals</ li> 90 </li>
89 <li>Add logic that understands more of t he Google Guava APIs. 91 <li>New "nested" ant task attribute.
90 <li>Disable type qualifier validator exe cution within Eclipse plugin; 92 </li>
91 too many problems with class loa ding and security manager (see #1154 Random obscure Eclipse failures) 93
92 <li>Consistently check both access flags and attributes to see if something is synthetic. Compiler is 94
93 inconsistent about where synthetic eleme nts are marked. 95 <!--
94 96 <li>Fixed false positives for the following bug patterns (XX X occurrences in findbugsTestCases):
95 <li>Fixed false positives for the following bug patterns (17 97 <ul>
96 occurrences in findbugsTestCases ): 98 <li><a
97 <ul> 99 href="http://findbugs.sourceforge.net/bugDescrip tions.html#XXX">XXX</a>
98 <li><a 100 </ul>
99 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC">BC</a> 101 </li>
100 <li><a 102
101 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_INSTANCEOF">BC_IMPOSSIB LE_INSTANCEOF</a> 103 <li>Fixed false negatives for the following bug patterns (XX X occurrences in findbugsTestCases):
102 <li><a 104 <ul>
103 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_C AST</a> 105 <li><a
104 <li><a 106 href="http://findbugs.sourceforge.net/bugDescrip tions.html#XXX">XXX</a>
105 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_UNRELATED_TYPES">EC_UNRELATED_TYPE S</a> 107 </ul>
106 <li><a 108 </li>
107 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#INT_BAD_COMPARISON_WITH_NONNEGATIVE_V ALUE">INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE</a> 109 -->
108 <li><a 110
109 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#IS2_INCONSISTENT_SYNC">IS2_INCONSISTE NT_SYNC</a> 111 <li>Various bug fixes, also many patches from community. Tha nks for your contributions!
110 <li><a 112 </li>
111 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGE ROUS">NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS</a> 113 </ul>
112 <li><a 114
113 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#OBL_UNSATISFIED_OBLIGATION">OBL_UNSAT ISFIED_OBLIGATION</a> 115
114 <li><a 116 <h1>FindBugs Change Log, Version 2.0.3</h1>
115 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE ">RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE</a> 117 <ul>
116 <li><a 118 <li>New Bug patterns: <a
117 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#SA_FIELD_SELF_COMPARISON">SA_FIELD_SE LF_COMPARISON</a> 119 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#DM_BOXED_PRIMITIVE_FOR_PARSING">DM_BOXED_PRIMITIVE_FOR_PARSING</a>,
118 <li><a 120 <a
119 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_ST RICTLY_REQUIRED">TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED</a> 121 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#NP_METHOD_RETURN_RELAXING_ANNOTATION">NP_METHOD_RETURN_RELAXING_ANNOTATION</a >,
120 </li> 122 and
121 </ul> 123 <a
122 <li>Fixed false negatives for the follow ing bug patterns (45 124 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP_METHOD_PARAMETER_TIGHTENS_ANNOTAT ION</a>
123 occurrences in findbugsTestCases ): 125 </li>
124 <ul> 126 <li>Add the ability in the GUI to save the currently viewabl e/filtered bugs to HTML output.
125 <li><a 127 <li>When dataflow does't terminate, make sure we continue wi th
126 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_C AST</a> 128 analysis.
127 <li><a 129
128 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#DM_NUMBER_CTOR">DM_NUMBER_CTOR</a> 130 <li>Fix some problems that resulting in dataflow analysis no t
129 <li><a 131 terminating
130 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_ARRAY_AND_NONARRAY">EC_ARRAY_AND_N ONARRAY</a> 132
131 <li><a 133 <li>Get parameter annotations from default parameters
132 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_INCOMPATIBLE_ARRAY_COMPARE">EC_INC OMPATIBLE_ARRAY_COMPARE</a> 134 annotations applied to the method.
133 <li><a 135 <li>Add subversion change number to eclipse plugin qualifier .
134 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_UNRELATED_TYPES">EC_UNRELATED_TYPE S</a> 136
135 <li><a 137 <li>Disabled detector for <a
136 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#GC_UNRELATED_TYPES">GC_UNRELATED_TYPE S</a> 138 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#AM_CREATES_EMPTY_JAR_FILE_ENTRY">AM_CREATES_EMPTY_JAR_FILE_ENTRY</a>;
137 <li><a 139 it complaints inappropriately about code that creates di rectory
138 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#IS_FIELD_NOT_GUARDED">IS_FIELD_NOT_GU ARDED</a> 140 entries.
139 <li><a 141
140 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#IT_NO_SUCH_ELEMENT">IT_NO_SUCH_ELEMEN T</a> 142 <li>Add warnings about incompatible types passed to
141 <li><a 143 org.testng.Assert.assertEquals</li>
142 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CL ASS">JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS</a> 144 <li>Add logic that understands more of the Google Guava APIs .
143 <li><a 145 <li>Disable type qualifier validator execution within Eclips e plugin;
144 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_NULL_ON_SOME_PATH">NP_NULL_ON_SOME _PATH</a> 146 too many problems with class loading and security manage r (see #1154 Random obscure Eclipse failures)
145 <li><a 147 <li>Consistently check both access flags and attributes to s ee if something is synthetic. Compiler is
146 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_NONNULL_PARAM_VIOLATION">NP_NONNUL L_PARAM_VIOLATION</a> 148 inconsistent about where synthetic elements are marked.
147 <li><a 149
148 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_NULL_ON_SOME_PATH_FROM_RETURN_VALU E">NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE</a> 150 <li>Fixed false positives for the following bug patterns (17
149 <li><a 151 occurrences in findbugsTestCases):
150 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARK ED_AS_NULLABLE">NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE</a> 152 <ul>
151 <li><a 153 <li><a
152 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_STORE_INTO_NONNULL_FIELD">NP_STORE _INTO_NONNULL_FIELD</a> 154 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC">BC</a>
153 <li><a 155 <li><a
154 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RE_POSSIBLE_UNINTENDED_PATTERN">RE_PO SSIBLE_UNINTENDED_PATTERN</a> 156 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_IMPOSSIBLE_INSTANCEOF">BC_IMPOSSIBLE_INSTANCEOF</a>
155 <li><a 157 <li><a
156 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#SA_FIELD_SELF_COMPARISON">SA_FIELD_SE LF_COMPARISON</a> 158 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_CAST</a>
157 </ul> 159 <li><a
158 </ul> 160 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_UNRELATED_TYPES">EC_UNRELATED_TYPES</a>
159 <h1>FindBugs Change Log, Version 2.0.2</h1> 161 <li><a
160 162 href="http://findbugs.sourceforge.net/bugDescrip tions.html#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT_BAD_COMPARISON_WITH_NO NNEGATIVE_VALUE</a>
161 <ul> 163 <li><a
162 <li>Fix false positions for <a 164 href="http://findbugs.sourceforge.net/bugDescrip tions.html#IS2_INCONSISTENT_SYNC">IS2_INCONSISTENT_SYNC</a>
163 href="http://findbugs.sourceforg e.net/bugDescriptions.html#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP_N ONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR</a> 165 <li><a
164 - fixing <a 166 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">NP_NULL_PARAM_DEREF_ALL_TA RGETS_DANGEROUS</a>
165 href="https://sourceforge.net/tr acker/?func=detail&aid=3547559&group_id=96405&atid=614693">Bug3547559</a>, 167 <li><a
166 <a 168 href="http://findbugs.sourceforge.net/bugDescrip tions.html#OBL_UNSATISFIED_OBLIGATION">OBL_UNSATISFIED_OBLIGATION</a>
167 href="https://sourceforge.net/tr acker/?func=detail&aid=3555408&group_id=96405&atid=614693">Bug3555408</a>, 169 <li><a
168 <a 170 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN_REDUNDANT_NULLCHECK_OF_NUL L_VALUE</a>
169 href="https://sourceforge.net/tr acker/?func=detail&aid=3580266&group_id=96405&atid=614693">Bug3580266</a> 171 <li><a
170 and <a 172 href="http://findbugs.sourceforge.net/bugDescrip tions.html#SA_FIELD_SELF_COMPARISON">SA_FIELD_SELF_COMPARISON</a>
171 href="https://sourceforge.net/tr acker/?func=detail&aid=3587164&group_id=96405&atid=614693">Bug3587164</a>. 173 <li><a
172 174 href="http://findbugs.sourceforge.net/bugDescrip tions.html#TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ_UNKNOWN_VALU E_USED_WHERE_ALWAYS_STRICTLY_REQUIRED</a>
173 175 </li>
174 </li> 176 </ul>
175 <li>Fix false positives for <a 177 <li>Fixed false negatives for the following bug patterns (45
176 href="http://findbugs.sourceforg e.net/bugDescriptions.html#SF_SWITCH_NO_DEFAULT">SF_SWITCH_NO_DEFAULT</a> 178 occurrences in findbugsTestCases):
177 <li>Inline access methods for private fi elds, 179 <ul>
180 <li><a
181 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_CAST</a>
182 <li><a
183 href="http://findbugs.sourceforge.net/bugDescrip tions.html#DM_NUMBER_CTOR">DM_NUMBER_CTOR</a>
184 <li><a
185 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_ARRAY_AND_NONARRAY">EC_ARRAY_AND_NONARRAY</a>
186 <li><a
187 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_INCOMPATIBLE_ARRAY_COMPARE">EC_INCOMPATIBLE_ARRAY_COMPARE</a>
188 <li><a
189 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_UNRELATED_TYPES">EC_UNRELATED_TYPES</a>
190 <li><a
191 href="http://findbugs.sourceforge.net/bugDescrip tions.html#GC_UNRELATED_TYPES">GC_UNRELATED_TYPES</a>
192 <li><a
193 href="http://findbugs.sourceforge.net/bugDescrip tions.html#IS_FIELD_NOT_GUARDED">IS_FIELD_NOT_GUARDED</a>
194 <li><a
195 href="http://findbugs.sourceforge.net/bugDescrip tions.html#IT_NO_SUCH_ELEMENT">IT_NO_SUCH_ELEMENT</a>
196 <li><a
197 href="http://findbugs.sourceforge.net/bugDescrip tions.html#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP_FIELD_ISNT_FINAL_IN_IM MUTABLE_CLASS</a>
198 <li><a
199 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_NULL_ON_SOME_PATH">NP_NULL_ON_SOME_PATH</a>
200 <li><a
201 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_NONNULL_PARAM_VIOLATION">NP_NONNULL_PARAM_VIOLATION</a>
202 <li><a
203 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP_NULL_ON_SOME_PATH_FROM_RET URN_VALUE</a>
204 <li><a
205 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP_PARAMETER_MUS T_BE_NONNULL_BUT_MARKED_AS_NULLABLE</a>
206 <li><a
207 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_STORE_INTO_NONNULL_FIELD">NP_STORE_INTO_NONNULL_FIELD</a>
208 <li><a
209 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RE_POSSIBLE_UNINTENDED_PATTERN">RE_POSSIBLE_UNINTENDED_PATTERN</a>
210 <li><a
211 href="http://findbugs.sourceforge.net/bugDescrip tions.html#SA_FIELD_SELF_COMPARISON">SA_FIELD_SELF_COMPARISON</a>
212 </ul>
213 </ul>
214 <h1>FindBugs Change Log, Version 2.0.2</h1>
215
216 <ul>
217 <li>Fix false positions for <a
218 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP_NONNULL_FIELD_NOT_INITIAL IZED_IN_CONSTRUCTOR</a>
219 - fixing <a
220 href="https://sourceforge.net/tracker/?func=detail&aid=3 547559&group_id=96405&atid=614693">Bug3547559</a>,
221 <a
222 href="https://sourceforge.net/tracker/?func=detail&aid=3 555408&group_id=96405&atid=614693">Bug3555408</a>,
223 <a
224 href="https://sourceforge.net/tracker/?func=detail&aid=3 580266&group_id=96405&atid=614693">Bug3580266</a>
225 and <a
226 href="https://sourceforge.net/tracker/?func=detail&aid=3 587164&group_id=96405&atid=614693">Bug3587164</a>.
227
228
229 </li>
230 <li>Fix false positives for <a
231 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#SF_SWITCH_NO_DEFAULT">SF_SWITCH_NO_DEFAULT</a>
232 <li>Inline access methods for private fields,
178 fixing false positive in <a 233 fixing false positive in <a
179 href="https://sourceforge.net/tracker/?func=detail&aid=3 484713&group_id=96405&atid=614693">Bug3484713</a>. 234 href="https://sourceforge.net/tracker/?func=detail&aid=3 484713&group_id=96405&atid=614693">Bug3484713</a>.
180 235
181 <li>Type qualifier annotations, including nullness 236 <li>Type qualifier annotations, including nullness
182 » » » » » » annotations, are now ignored on vararg parameters (including 237 annotations, are now ignored on vararg parameters (inclu ding
183 » » » » » » default and inherited annotation s), awaiting JSR308. 238 default and inherited annotations), awaiting JSR308.
184 » » » » » <li>Defined new bug pattern to give bett er explanations of 239 <li>Defined new bug pattern to give better explanations of
185 » » » » » » issues involving strict type qua lifiers <a 240 issues involving strict type qualifiers <a
186 » » » » » » href="http://findbugs.sourceforg e.net/bugDescriptions.html#TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED" >TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED</a> 241 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ_UNKNOWN_VALUE_USED_W HERE_ALWAYS_STRICTLY_REQUIRED</a>
187 » » » » » <li>Adjusted analysis of type qualifiers , now giving warnings 242 <li>Adjusted analysis of type qualifiers, now giving warning s
188 » » » » » » where a computed value is used i n a place where a value with a 243 where a computed value is used in a place where a value with a
189 » » » » » » strict type qualifier is require d. 244 strict type qualifier is required.
190 » » » » » <li>Complain about missing classes only if they are 245 <li>Complain about missing classes only if they are
191 » » » » » » encountered while analyzing appl ication classes; ignore missing 246 encountered while analyzing application classes; ignore missing
192 » » » » » » classes that are encounted while analyzing classes loaded from the 247 classes that are encounted while analyzing classes loade d from the
193 » » » » » » auxclasspath. Fix for <a 248 auxclasspath. Fix for <a
194 » » » » » » href="https://sourceforge.net/tr acker/?func=detail&aid=3588379&group_id=96405&atid=614693">Bug3588379</a> 249 href="https://sourceforge.net/tracker/?func=detail&aid=3 588379&group_id=96405&atid=614693">Bug3588379</a>
195 » » » » » <li>Fixed false positive null pointer wa rning coming from 250 <li>Fixed false positive null pointer warning coming from
196 » » » » » » synthetic bridge methods, fixing <a 251 synthetic bridge methods, fixing <a
197 » » » » » » href="https://sourceforge.net/tr acker/?func=detail&aid=3589328&group_id=96405&atid=614693">Bug3589328</a> 252 href="https://sourceforge.net/tracker/?func=detail&aid=3 589328&group_id=96405&atid=614693">Bug3589328</a>
198 » » » » » <li>In general, suppress warnings in syn thetic methods. 253 <li>In general, suppress warnings in synthetic methods.
199 » » » » » <li>Fix some false positives involving < a 254 <li>Fix some false positives involving <a
200 » » » » » » href="http://findbugs.sourceforg e.net/bugDescriptions.html#GC_UNRELATED_TYPES">GC_UNRELATED_TYPES</a> 255 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#GC_UNRELATED_TYPES">GC_UNRELATED_TYPES</a>
201 » » » » » » on classes that extend generic c ollection classes. 256 on classes that extend generic collection classes.
202 257
203 » » » » » </li> 258 </li>
204 <li>Combine multiple identical warnings about 259 <li>Combine multiple identical warnings about
205 <a 260 <a
206 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#DM_DEFAULT_ENCODING">DM_DEFAULT_ENCODING</a> 261 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#DM_DEFAULT_ENCODING">DM_DEFAULT_ENCODING</a>
207 that occur in the same method, 262 that occur in the same method,
208 simplifying issue triage. 263 simplifying issue triage.
209 264
210 <li>Changes by Andrey Loskutov 265 <li>Changes by Andrey Loskutov
211 <ul> 266 <ul>
212 <li>fixed job scheduling errors in 3.8/4.2 Eclipse <a 267 <li>fixed job scheduling errors in 3.8/4.2 Eclipse < a
213 href="https://bu gs.eclipse.org/bugs/show_bug.cgi?id=393748">bug 268 href="https://bugs.eclipse.org/bugs/show_bug.cgi ?id=393748">bug
214 report</ a> 269 report</a>
215 <li>more realistic progr ess bar updates for jobs 270 <li>more realistic progress bar updates for jobs
216 <li>added nullness annot ations for some common Eclipse API 271 <li>added nullness annotations for some common Eclip se API
217 methods known to usually return null values 272 methods known to usually return null values
218 <li>Added support for or g.eclipse.jdt.annotation.Nullable, 273 <li>Added support for org.eclipse.jdt.annotation.Nul lable,
219 NonNull and NonN ullByDefault annotations (introduced with 274 NonNull and NonNullByDefault annotations (introd uced with
220 Eclipse 3.8/4.2) </li> 275 Eclipse 3.8/4.2)</li>
221 </ul> 276 </ul>
222 <li>Documentation improvements 277 <li>Documentation improvements
223 <li><a href="http://code.google.com/p/fi ndbugs/source/list">lots 278 <li><a href="http://code.google.com/p/findbugs/source/list"> lots
224 of other small changes</ a> 279 of other small changes</a>
225 </ul> 280 </ul>
226 <h1>FindBugs Change Log, Version 2.0.1</h1> 281 <h1>FindBugs Change Log, Version 2.0.1</h1>
227 282
228 <ul> 283 <ul>
229 <li>New bug patterns; in some cases, bug s previous reported as 284 <li>New bug patterns; in some cases, bugs previous reported as
230 other bug patterns are reported as instances of these new bug 285 other bug patterns are reported as instances of these ne w bug
231 patterns in order to make it eas ier for developers to understand 286 patterns in order to make it easier for developers to un derstand
232 the bug reports 287 the bug reports
233 <ul> 288 <ul>
234 <li><a 289 <li><a
235 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#PT_ABSOLUTE_PATH_TRAVERSAL">PT_ABSOLU TE_PATH_TRAVERSAL</a></li> 290 href="http://findbugs.sourceforge.net/bugDescrip tions.html#PT_ABSOLUTE_PATH_TRAVERSAL">PT_ABSOLUTE_PATH_TRAVERSAL</a></li>
236 <li><a 291 <li><a
237 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#PT_RELATIVE_PATH_TRAVERSAL">PT_RELATI VE_PATH_TRAVERSAL</a></li> 292 href="http://findbugs.sourceforge.net/bugDescrip tions.html#PT_RELATIVE_PATH_TRAVERSAL">PT_RELATIVE_PATH_TRAVERSAL</a></li>
238 <li><a 293 <li><a
239 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_C ONSTRUCTOR">NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR</a></li> 294 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP_NONNULL_FIELD_NOT _INITIALIZED_IN_CONSTRUCTOR</a></li>
240 <li><a 295 <li><a
241 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL"> MS_SHOULD_BE_REFACTORED_TO_BE_FINAL</a></li> 296 href="http://findbugs.sourceforge.net/bugDescrip tions.html#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS_SHOULD_BE_REFACTORED_TO_BE_FI NAL</a></li>
242 <li><a 297 <li><a
243 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_UNCONFIRMED_CAST_OF_RETURN_VALUE"> BC_UNCONFIRMED_CAST_OF_RETURN_VALUE</a></li> 298 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC_UNCONFIRMED_CAST_OF_RETURN_VA LUE</a></li>
244 <li><a 299 <li><a
245 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#PT_ABSOLUTE_PATH_TRAVERSAL">PT_ABSOLU TE_PATH_TRAVERSAL</a></li> 300 href="http://findbugs.sourceforge.net/bugDescrip tions.html#PT_ABSOLUTE_PATH_TRAVERSAL">PT_ABSOLUTE_PATH_TRAVERSAL</a></li>
246 <li><a 301 <li><a
247 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#TQ_COMPARING_VALUES_WITH_INCOMPATIBLE _TYPE_QUALIFIERS">TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS</a></li> 302 href="http://findbugs.sourceforge.net/bugDescrip tions.html#TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">TQ_COMPARING_V ALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS</a></li>
248 </ul> 303 </ul>
249 </li> 304 </li>
250 305
251 <li>Changes to fix false negatives for t he following bug 306 <li>Changes to fix false negatives for the following bug
252 patterns: <a 307 patterns: <a
253 href="http://findbugs.sourceforg e.net/bugDescriptions.html#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_CAST</a>, 308 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#BC_UNCONFIRMED_CAST">BC_UNCONFIRMED_CAST</a>,
254 <a 309 <a
255 href="http://findbugs.sourceforg e.net/bugDescriptions.html#EC_BAD_ARRAY_COMPARE">EC_BAD_ARRAY_COMPARE</a>, 310 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#EC_BAD_ARRAY_COMPARE">EC_BAD_ARRAY_COMPARE</a>,
256 <a 311 <a
257 href="http://findbugs.sourceforg e.net/bugDescriptions.html#EQ_UNUSUAL">EQ_UNUSUAL</a>, 312 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#EQ_UNUSUAL">EQ_UNUSUAL</a>,
258 <a 313 <a
259 href="http://findbugs.sourceforg e.net/bugDescriptions.html#GC_UNRELATED_TYPES">GC_UNRELATED_TYPES</a>, 314 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#GC_UNRELATED_TYPES">GC_UNRELATED_TYPES</a>,
260 and <a 315 and <a
261 href="http://findbugs.sourceforg e.net/bugDescriptions.html#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE"> NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE</a>. 316 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP_PARAMETER_MUST_BE_NON NULL_BUT_MARKED_AS_NULLABLE</a>.
262 </li> 317 </li>
263 318
264 <li>Changes to fix false positions for t he following bug 319 <li>Changes to fix false positions for the following bug
265 patterns: <a 320 patterns: <a
266 href="http://findbugs.sourceforg e.net/bugDescriptions.html#DMI_DOH">DMI_DOH</a>, 321 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#DMI_DOH">DMI_DOH</a>,
267 <a 322 <a
268 href="http://findbugs.sourceforg e.net/bugDescriptions.html#EC_UNRELATED_TYPES">EC_UNRELATED_TYPES</a>, 323 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#EC_UNRELATED_TYPES">EC_UNRELATED_TYPES</a>,
269 and <a 324 and <a
270 href="http://findbugs.sourceforg e.net/bugDescriptions.html#SE_BAD_FIELD">SE_BAD_FIELD</a>. 325 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#SE_BAD_FIELD">SE_BAD_FIELD</a>.
271 </li> 326 </li>
272 </ul> 327 </ul>
273 328
274 <h1>FindBugs Change Log, Version 2.0.0</h1> 329 <h1>FindBugs Change Log, Version 2.0.0</h1>
275 330
276 <h2>Changes since version 1.3.8</h2> 331 <h2>Changes since version 1.3.8</h2>
277 <ul> 332 <ul>
278 <li>New bug patterns; in some cases, bug s previous reported as 333 <li>New bug patterns; in some cases, bugs previous reported as
279 other bug patterns are reported as instances of these new bug 334 other bug patterns are reported as instances of these ne w bug
280 patterns in order to make it eas ier for developers to understand 335 patterns in order to make it easier for developers to un derstand
281 the bug reports 336 the bug reports
282 <ul> 337 <ul>
283 <li><a 338 <li><a
284 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST ">BC_IMPOSSIBL E_DOWNCAST 339 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_IMPOSSIBLE_DOWNCAST ">BC_IMPOSSIBLE_DOWNCAST
285 </a></li> 340 </a></li>
286 <li><a 341 <li><a
287 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY ">B C_IMPOSSIBLE_DOWNCAST_OF_TOARRAY 342 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY ">BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY
288 </a></li> 343 </a></li>
289 <li><a 344 <li><a
290 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_INCOMPATIBLE_ARRAY_COMPARE ">EC_IN COMPATIBLE_ARRAY_COMPARE 345 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_INCOMPATIBLE_ARRAY_COMPARE ">EC_INCOMPATIBLE_ARRAY_COMPARE
291 </a></li> 346 </a></li>
292 <li><a 347 <li><a
293 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#JLM_JSR166_UTILCONCURRENT_MONITORENTE R ">JLM_JSR166_UTILCONCURRENT_MONITORENTER 348 href="http://findbugs.sourceforge.net/bugDescrip tions.html#JLM_JSR166_UTILCONCURRENT_MONITORENTER ">JLM_JSR166_UTILCONCURRENT_MO NITORENTER
294 </a></li> 349 </a></li>
295 <li><a 350 <li><a
296 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE ">LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE 351 href="http://findbugs.sourceforge.net/bugDescrip tions.html#LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE ">LG_LOST_LOGGER_DUE_TO_WEAK_REF ERENCE
297 </a></li> 352 </a></li>
298 <li><a 353 <li><a
299 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_CLOSING_NULL ">NP_CLOSING_NULL 354 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_CLOSING_NULL ">NP_CLOSING_NULL
300 </a></li> 355 </a></li>
301 <li><a 356 <li><a
302 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RC_REF_COMPARISON_BAD_PRACTICE ">RC_R EF_COMPARISON_BAD_PRACTICE 357 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RC_REF_COMPARISON_BAD_PRACTICE ">RC_REF_COMPARISON_BAD_PRACTICE
303 </a></li> 358 </a></li>
304 <li><a 359 <li><a
305 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RC_REF_COMPARISON_BAD_PRACTICE_BOOLEA N ">RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN 360 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN ">RC_REF_COMPARISON_BAD_PRACTI CE_BOOLEAN
306 </a></li> 361 </a></li>
307 <li><a 362 <li><a
308 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORE D ">RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED 363 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED ">RV_RETURN_VALUE_OF_PUTIFABSE NT_IGNORED
309 </a></li> 364 </a></li>
310 <li><a 365 <li><a
311 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#SIC_THREADLOCAL_DEADLY_EMBRACE ">SIC_ THREADLOCAL_DEADLY_EMBRACE 366 href="http://findbugs.sourceforge.net/bugDescrip tions.html#SIC_THREADLOCAL_DEADLY_EMBRACE ">SIC_THREADLOCAL_DEADLY_EMBRACE
312 </a></li> 367 </a></li>
313 <li><a 368 <li><a
314 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#UR_UNINIT_READ_CALLED_FROM_SUPER_CONS TRUCTOR ">UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR 369 href="http://findbugs.sourceforge.net/bugDescrip tions.html#UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR ">UR_UNINIT_READ_CALLED_ FROM_SUPER_CONSTRUCTOR
315 </a></li> 370 </a></li>
316 <li><a 371 <li><a
317 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#VA_FORMAT_STRING_EXPECTED_MESSAGE_FOR MAT_SUPPLIED ">VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED 372 href="http://findbugs.sourceforge.net/bugDescrip tions.html#VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED ">VA_FORMAT_STRING_ EXPECTED_MESSAGE_FORMAT_SUPPLIED
318 </a></li> 373 </a></li>
319 </ul> 374 </ul>
320 </li> 375 </li>
321 <li>Providing a bug rank (1-20), and the ability to filter by 376 <li>Providing a bug rank (1-20), and the ability to filter b y
322 bug rank. Eventually, it will be possible to specify your own 377 bug rank. Eventually, it will be possible to specify you r own
323 rules for ranking bugs, but the procedure for doing so hasn't been 378 rules for ranking bugs, but the procedure for doing so h asn't been
324 specified yet.</li> 379 specified yet.</li>
325 <li>Fixed about <a 380 <li>Fixed about <a
326 href="https://sourceforge.net/se arch/index.php?group_id=96405&search_summary=1&search_details=1&type_of_search=a rtifact&group_artifact_id%5B%5D=614693&open_date_start=2009-03-16&open_date_end= 2009-08-20&form_submit=Search">45 381 href="https://sourceforge.net/search/index.php?group_id= 96405&search_summary=1&search_details=1&type_of_search=artifact&group_artifact_i d%5B%5D=614693&open_date_start=2009-03-16&open_date_end=2009-08-20&form_submit=S earch">45
327 bugs filed</a> through S ourceForge 382 bugs filed</a> through SourceForge
328 </li> 383 </li>
329 <li>Various reclassifications and priori ty tweaks</li> 384 <li>Various reclassifications and priority tweaks</li>
330 <li>Added more bug annotations to a vari ety of bug reports. 385 <li>Added more bug annotations to a variety of bug reports.
331 This provides more context for u nderstanding bug reports (e.g., if 386 This provides more context for understanding bug reports (e.g., if
332 the value in question was is the return value of a method, the 387 the value in question was is the return value of a metho d, the
333 method is described as the sourc e of the value in a bug 388 method is described as the source of the value in a bug
334 annotation). This also provide m ore accurate tracking of issues 389 annotation). This also provide more accurate tracking of issues
335 across versions of the code bein g analyzed, but has the downside 390 across versions of the code being analyzed, but has the downside
336 that when comparing results from FindBugs 1.3.8 and FindBugs 1.3.9 391 that when comparing results from FindBugs 1.3.8 and Find Bugs 1.3.9
337 on the same version of code bein g analyzed, FindBugs may think 392 on the same version of code being analyzed, FindBugs may think
338 that mistakenly believe that the issue reported by 1.3.8 was fixed 393 that mistakenly believe that the issue reported by 1.3.8 was fixed
339 and a new issue was introduced t hat was reported by FindBugs 394 and a new issue was introduced that was reported by Find Bugs
340 1.3.9. While annoying, it would be unusual for more than a dozen 395 1.3.9. While annoying, it would be unusual for more than a dozen
341 issues per million lines of code s to be mistracked.</li> 396 issues per million lines of codes to be mistracked.</li>
342 <li>Lots of internal changes moving towa rds FindBugs 2.0, but 397 <li>Lots of internal changes moving towards FindBugs 2.0, bu t
343 these features are undocumented, not yet officially supported, and 398 these features are undocumented, not yet officially supp orted, and
344 subject to radical changes befor e FindBugs 2.0 is released.</li> 399 subject to radical changes before FindBugs 2.0 is releas ed.</li>
345 </ul> 400 </ul>
346 401
347 <p>Changes since version 1.3.8</p> 402 <p>Changes since version 1.3.8</p>
348 <ul> 403 <ul>
349 <li>New bug patterns; in some cases, bug s previous reported as 404 <li>New bug patterns; in some cases, bugs previous reported as
350 other bug patterns are reported as instances of these new bug 405 other bug patterns are reported as instances of these ne w bug
351 patterns in order to make it eas ier for developers to understand 406 patterns in order to make it easier for developers to un derstand
352 the bug reports 407 the bug reports
353 <ul> 408 <ul>
354 <li><a 409 <li><a
355 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST ">BC_IMPOSSIBL E_DOWNCAST 410 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_IMPOSSIBLE_DOWNCAST ">BC_IMPOSSIBLE_DOWNCAST
356 </a> 411 </a>
357 <li><a 412 <li><a
358 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY ">B C_IMPOSSIBLE_DOWNCAST_OF_TOARRAY 413 href="http://findbugs.sourceforge.net/bugDescrip tions.html#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY ">BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY
359 </a> 414 </a>
360 <li><a 415 <li><a
361 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#EC_INCOMPATIBLE_ARRAY_COMPARE ">EC_IN COMPATIBLE_ARRAY_COMPARE 416 href="http://findbugs.sourceforge.net/bugDescrip tions.html#EC_INCOMPATIBLE_ARRAY_COMPARE ">EC_INCOMPATIBLE_ARRAY_COMPARE
362 </a> 417 </a>
363 <li><a 418 <li><a
364 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#JLM_JSR166_UTILCONCURRENT_MONITORENTE R ">JLM_JSR166_UTILCONCURRENT_MONITORENTER 419 href="http://findbugs.sourceforge.net/bugDescrip tions.html#JLM_JSR166_UTILCONCURRENT_MONITORENTER ">JLM_JSR166_UTILCONCURRENT_MO NITORENTER
365 </a> 420 </a>
366 <li><a 421 <li><a
367 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE ">LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE 422 href="http://findbugs.sourceforge.net/bugDescrip tions.html#LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE ">LG_LOST_LOGGER_DUE_TO_WEAK_REF ERENCE
368 </a> 423 </a>
369 <li><a 424 <li><a
370 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#NP_CLOSING_NULL ">NP_CLOSING_NULL 425 href="http://findbugs.sourceforge.net/bugDescrip tions.html#NP_CLOSING_NULL ">NP_CLOSING_NULL
371 </a> 426 </a>
372 <li><a 427 <li><a
373 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RC_REF_COMPARISON_BAD_PRACTICE ">RC_R EF_COMPARISON_BAD_PRACTICE 428 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RC_REF_COMPARISON_BAD_PRACTICE ">RC_REF_COMPARISON_BAD_PRACTICE
374 </a> 429 </a>
375 <li><a 430 <li><a
376 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RC_REF_COMPARISON_BAD_PRACTICE_BOOLEA N ">RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN 431 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN ">RC_REF_COMPARISON_BAD_PRACTI CE_BOOLEAN
377 </a> 432 </a>
378 <li><a 433 <li><a
379 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORE D ">RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED 434 href="http://findbugs.sourceforge.net/bugDescrip tions.html#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED ">RV_RETURN_VALUE_OF_PUTIFABSE NT_IGNORED
380 </a> 435 </a>
381 <li><a 436 <li><a
382 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#SIC_THREADLOCAL_DEADLY_EMBRACE ">SIC_ THREADLOCAL_DEADLY_EMBRACE 437 href="http://findbugs.sourceforge.net/bugDescrip tions.html#SIC_THREADLOCAL_DEADLY_EMBRACE ">SIC_THREADLOCAL_DEADLY_EMBRACE
383 </a> 438 </a>
384 <li><a 439 <li><a
385 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#UR_UNINIT_READ_CALLED_FROM_SUPER_CONS TRUCTOR ">UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR 440 href="http://findbugs.sourceforge.net/bugDescrip tions.html#UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR ">UR_UNINIT_READ_CALLED_ FROM_SUPER_CONSTRUCTOR
386 </a> 441 </a>
387 <li><a 442 <li><a
388 href="http://fin dbugs.sourceforge.net/bugDescriptions.html#VA_FORMAT_STRING_EXPECTED_MESSAGE_FOR MAT_SUPPLIED ">VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED 443 href="http://findbugs.sourceforge.net/bugDescrip tions.html#VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED ">VA_FORMAT_STRING_ EXPECTED_MESSAGE_FORMAT_SUPPLIED
389 </a> 444 </a>
390 </ul> 445 </ul>
391 </li> 446 </li>
392 <li>Providing a bug rank (1-20), and the ability to filter by 447 <li>Providing a bug rank (1-20), and the ability to filter b y
393 bug rank. Eventually, it will be possible to specify your own 448 bug rank. Eventually, it will be possible to specify you r own
394 rules for ranking bugs, but the procedure for doing so hasn't been 449 rules for ranking bugs, but the procedure for doing so h asn't been
395 specified yet.</li> 450 specified yet.</li>
396 <li>Fixed about <a 451 <li>Fixed about <a
397 href="https://sourceforge.net/se arch/index.php?group_id=96405&search_summary=1&search_details=1&type_of_search=a rtifact&group_artifact_id%5B%5D=614693&open_date_start=2009-03-16&open_date_end= 2009-08-20&form_submit=Search">45 452 href="https://sourceforge.net/search/index.php?group_id= 96405&search_summary=1&search_details=1&type_of_search=artifact&group_artifact_i d%5B%5D=614693&open_date_start=2009-03-16&open_date_end=2009-08-20&form_submit=S earch">45
398 bugs filed</a> through S ourceForge 453 bugs filed</a> through SourceForge
399 </li> 454 </li>
400 <li>Various reclassifications and priori ty tweaks</li> 455 <li>Various reclassifications and priority tweaks</li>
401 <li>Added more bug annotations to a vari ety of bug reports. 456 <li>Added more bug annotations to a variety of bug reports.
402 This provides more context for u nderstanding bug reports (e.g., if 457 This provides more context for understanding bug reports (e.g., if
403 the value in question was is the return value of a method, the 458 the value in question was is the return value of a metho d, the
404 method is described as the sourc e of the value in a bug 459 method is described as the source of the value in a bug
405 annotation). This also provide m ore accurate tracking of issues 460 annotation). This also provide more accurate tracking of issues
406 across versions of the code bein g analyzed, but has the downside 461 across versions of the code being analyzed, but has the downside
407 that when comparing results from FindBugs 1.3.8 and FindBugs 1.3.9 462 that when comparing results from FindBugs 1.3.8 and Find Bugs 1.3.9
408 on the same version of code bein g analyzed, FindBugs may think 463 on the same version of code being analyzed, FindBugs may think
409 that mistakenly believe that the issue reported by 1.3.8 was fixed 464 that mistakenly believe that the issue reported by 1.3.8 was fixed
410 and a new issue was introduced t hat was reported by FindBugs 465 and a new issue was introduced that was reported by Find Bugs
411 1.3.9. While annoying, it would be unusual for more than a dozen 466 1.3.9. While annoying, it would be unusual for more than a dozen
412 issues per million lines of code s to be mistracked.</li> 467 issues per million lines of codes to be mistracked.</li>
413 <li>Lots of internal changes moving towa rds FindBugs 2.0, but 468 <li>Lots of internal changes moving towards FindBugs 2.0, bu t
414 these features are undocumented, not yet officially supported, and 469 these features are undocumented, not yet officially supp orted, and
415 subject to radical changes befor e FindBugs 2.0 is released.</li> 470 subject to radical changes before FindBugs 2.0 is releas ed.</li>
416 </ul> 471 </ul>
417 472
418 <p>Changes since version 1.3.7</p> 473 <p>Changes since version 1.3.7</p>
419 <ul> 474 <ul>
420 <li>Primarily another small bugfix relea se.</li> 475 <li>Primarily another small bugfix release.</li>
421 <li>FindBugs base: 476 <li>FindBugs base:
422 <ul> 477 <ul>
423 <li>New Reports: 478 <li>New Reports:
424 <ul> 479 <ul>
425 <li>SF_S WITCH_NO_DEFAULT: missing default case in switch 480 <li>SF_SWITCH_NO_DEFAULT: missing default ca se in switch
426 statement.</li> 481 statement.</li>
427 <li>SF_D EAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW: 482 <li>SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_ TO_THROW:
428 value ignored when switch fallthrough leads to thrown 483 value ignored when switch fallthrough le ads to thrown
429 exception.</li> 484 exception.</li>
430 <li>INT_ VACUOUS_BIT_OPERATION: bit operations that don't 485 <li>INT_VACUOUS_BIT_OPERATION: bit operation s that don't
431 do any meaningful work.</li> 486 do any meaningful work.</li>
432 <li>FB_U NEXPECTED_WARNING: warning generated that 487 <li>FB_UNEXPECTED_WARNING: warning generated that
433 conflicts with @NoWarning FindBugs annotation.</li> 488 conflicts with @NoWarning FindBugs annot ation.</li>
434 <li>FB_M ISSING_EXPECTED_WARNING: warning not generated 489 <li>FB_MISSING_EXPECTED_WARNING: warning not generated
435 despite presence of @ExpectedWarning FindBugs annotation.</li> 490 despite presence of @ExpectedWarning Fin dBugs annotation.</li>
436 <li>NOIS E category: intended for use in data mining 491 <li>NOISE category: intended for use in data mining
437 experiments. 492 experiments.
438 <ul> 493 <ul>
439 <li>NOISE_NULL_DEREFERENCE: fake null point dereference 494 <li>NOISE_NULL_DEREFERENCE: fake nul l point dereference
440 warning.</li> 495 warning.</li>
441 <li>NOISE_METHOD_CALL: fake method call warning.</li> 496 <li>NOISE_METHOD_CALL: fake method c all warning.</li>
442 <li>NOISE_FIELD_REFERENCE: fake field dereference 497 <li>NOISE_FIELD_REFERENCE: fake fiel d dereference
443 warning.</li> 498 warning.</li>
444 <li>NOISE_OPERATION: fake operation warning.</li> 499 <li>NOISE_OPERATION: fake operation warning.</li>
445 </ul> 500 </ul>
446 </li> 501 </li>
447 </ul> 502 </ul>
448 </li> 503 </li>
449 <li>Other: 504 <li>Other:
450 <ul> 505 <ul>
451 <li>Garv in Leclaire has created a new Apache Maven 506 <li>Garvin Leclaire has created a new Apache Maven
452 repository for FindBugs at <a 507 repository for FindBugs at <a
453 href="http://code.google.com/p/findbugs/">the Google Code 508 href="http://code.google.com/p/findbugs/ ">the Google Code
454 FindBugs SVN repository</a>. (Thanks Garvin!) 509 FindBugs SVN repository</a>. (Thanks Garvin!)
455 </li> 510 </li>
456 </ul> 511 </ul>
457 </li> 512 </li>
458 <li>Fixes: 513 <li>Fixes:
459 <ul> 514 <ul>
460 <li>[ 23 17842 ] Highlighting broken in Windows</li> 515 <li>[ 2317842 ] Highlighting broken in Windo ws</li>
461 <li>[ 25 15908 ] check for oddness should track sign of 516 <li>[ 2515908 ] check for oddness should tra ck sign of
462 argument</li> 517 argument</li>
463 <li>[ 24 87936 ] &quot;L B GC&quot; false pos cast from 518 <li>[ 2487936 ] &quot;L B GC&quot; false pos cast from
464 Map.Entry.getKey() to Map.get()</li> 519 Map.Entry.getKey() to Map.get()</li>
465 <li>[ 25 28264 ] Ant tasks not compatible with Ant 1.7.1</li> 520 <li>[ 2528264 ] Ant tasks not compatible wit h Ant 1.7.1</li>
466 <li>[ 25 39590 ] SF_SWITCH_FALLTHROUGH wrong message 521 <li>[ 2539590 ] SF_SWITCH_FALLTHROUGH wrong message
467 reported</li> 522 reported</li>
468 <li>[ 20 20066 ] Bug history displayed in fancy-hist.xsl is 523 <li>[ 2020066 ] Bug history displayed in fan cy-hist.xsl is
469 incorrect</li> 524 incorrect</li>
470 <li>[ 25 45098 ] Invalid character in analysis results file</li> 525 <li>[ 2545098 ] Invalid character in analysi s results file</li>
471 <li>[ 24 92673 ] Plugin sites should specify &quot;requires 526 <li>[ 2492673 ] Plugin sites should specify &quot;requires
472 Eclipse 3.3 or newer&quot;</li> 527 Eclipse 3.3 or newer&quot;</li>
473 <li>[ 25 88044 ] a tiny typing error</li> 528 <li>[ 2588044 ] a tiny typing error</li>
474 <li>[ 25 89048 ] Documentation for convertXmlToText 529 <li>[ 2589048 ] Documentation for convertXml ToText
475 insufficient</li> 530 insufficient</li>
476 <li>[ 26 38739 ] NullPointerException when building</li> 531 <li>[ 2638739 ] NullPointerException when bu ilding</li>
477 </ul> 532 </ul>
478 </li> 533 </li>
479 <li>Patches: 534 <li>Patches:
480 <ul> 535 <ul>
481 <li>[ 25 38184 ] Make BugCollection implement 536 <li>[ 2538184 ] Make BugCollection implement
482 Iterable&lt;BugInstance&gt; (thanks to Tomas Pollak)</li> 537 Iterable&lt;BugInstance&gt; (thanks to T omas Pollak)</li>
483 <li>[ 22 49771 ] Add Maven2 Findbugs plugin link to the 538 <li>[ 2249771 ] Add Maven2 Findbugs plugin l ink to the
484 Links page (thanks to Garvin Leclaire)</li> 539 Links page (thanks to Garvin Leclaire)</ li>
485 <li>[ 26 09526 ] Japanese manual update (thanks to K. 540 <li>[ 2609526 ] Japanese manual update (than ks to K.
486 Hashimoto)</li> 541 Hashimoto)</li>
487 <li>[ 21 19482 ] CheckBcel checks for nonexistent classes 542 <li>[ 2119482 ] CheckBcel checks for nonexis tent classes
488 (thanks to Jerry James)</li> 543 (thanks to Jerry James)</li>
489 </ul> 544 </ul>
490 </li> 545 </li>
491 </ul> 546 </ul>
492 </li> 547 </li>
493 <li>FindBugs Eclipse plugin: 548 <li>FindBugs Eclipse plugin:
494 <ul> 549 <ul>
495 <li>Major feature enhanc ements (thanks to Andrey Loskutov). 550 <li>Major feature enhancements (thanks to Andrey Los kutov).
496 See <a href="htt p://andrei.gmxhome.de/findbugs/index.html">this 551 See <a href="http://andrei.gmxhome.de/findbugs/i ndex.html">this
497 overview </a> for more information. 552 overview</a> for more information.
498 </li> 553 </li>
499 <li>Major test improveme nts (thanks to Tomas Pollak).</li> 554 <li>Major test improvements (thanks to Tomas Pollak) .</li>
500 <li>Fixes: 555 <li>Fixes:
501 <ul> 556 <ul>
502 <li>[ 25 32365 ] Compiler warning</li> 557 <li>[ 2532365 ] Compiler warning</li>
503 <li>[ 25 22989 ] Fix filter files selection</li> 558 <li>[ 2522989 ] Fix filter files selection</ li>
504 <li>[ 25 04068 ] NullPointerException</li> 559 <li>[ 2504068 ] NullPointerException</li>
505 <li>[ 26 40849 ] NPE in Eclipse plugin 1.3.7 and Eclipse 560 <li>[ 2640849 ] NPE in Eclipse plugin 1.3.7 and Eclipse
506 3.5 M5</li> 561 3.5 M5</li>
507 </ul> 562 </ul>
508 </li> 563 </li>
509 <li>Patches: 564 <li>Patches:
510 <ul> 565 <ul>
511 <li>[ 21 43140 ] Unchecked conversion fixes for Eclipse 566 <li>[ 2143140 ] Unchecked conversion fixes f or Eclipse
512 plugin (thanks to Jerry James) 567 plugin (thanks to Jerry James)
513 </ul> 568 </ul>
514 </li> 569 </li>
515 </ul> 570 </ul>
516 </li> 571 </li>
517 </ul> 572 </ul>
518 573
519 <p>Changes since version 1.3.6</p> 574 <p>Changes since version 1.3.6</p>
520 <ul> 575 <ul>
521 <li>Overall, a small bugfix release. 576 <li>Overall, a small bugfix release.
522 <li>New detection of accidental vacuous/ useless calls to 577 <li>New detection of accidental vacuous/useless calls to
523 EasyMock methods, and of generic signatures that proclaim the use 578 EasyMock methods, and of generic signatures that proclai m the use
524 of unhashable classes in ways th at require that they be hashed. 579 of unhashable classes in ways that require that they be hashed.
525 <li>Eliminate some false positives where we were warning about 580 <li>Eliminate some false positives where we were warning abo ut
526 a useless call (e.g., comparing two incompatible types for 581 a useless call (e.g., comparing two incompatible types f or
527 equality), but the only thing th e code was doing with the result 582 equality), but the only thing the code was doing with th e result
528 was passing it to assertFalse. 583 was passing it to assertFalse.
529 <li>Japanese localization and manual by K.Hashimoto. (Thanks!) 584 <li>Japanese localization and manual by K.Hashimoto. (Thanks !)
530 585
531 <li>Added -exclude and -outputDir comman d line options to 586 <li>Added -exclude and -outputDir command line options to
532 rejarForAnalysis 587 rejarForAnalysis
533 <li>Extended -adjustPriorities option to FindBugs analysis 588 <li>Extended -adjustPriorities option to FindBugs analysis
534 textui so that you can modify th e priorities of individual bug 589 textui so that you can modify the priorities of individu al bug
535 patterns as well as visitors, an d also completely suppress 590 patterns as well as visitors, and also completely suppre ss
536 individual bug patterns or visit ors. 591 individual bug patterns or visitors.
537 <ul> 592 <ul>
538 <li>e.g., -adjustPriorit y 593 <li>e.g., -adjustPriority
539 MS_SHOULD_BE_FIN AL=suppress,MS_PKGPROTECT=suppress,EI_EXPOSE_REP=suppress,EI_EXPOSE_REP2=suppres s,PZLA_PREFER_ZERO_LENGTH_ARRAYS=raise 594 MS_SHOULD_BE_FINAL=suppress,MS_PKGPROTECT=suppre ss,EI_EXPOSE_REP=suppress,EI_EXPOSE_REP2=suppress,PZLA_PREFER_ZERO_LENGTH_ARRAYS =raise
540 595
541 </ul> 596 </ul>
542 </ul> 597 </ul>
543 598
544 599
545 <p>Changes since version 1.3.5</p> 600 <p>Changes since version 1.3.5</p>
546 <ul> 601 <ul>
547 <li>Added fairly exhaustive static analy sis of uses of format 602 <li>Added fairly exhaustive static analysis of uses of forma t
548 strings, checking for missing or extra arguements, invalid format 603 strings, checking for missing or extra arguements, inval id format
549 specifiers, or mismatched format specifiers and arguments (e.g, 604 specifiers, or mismatched format specifiers and argument s (e.g,
550 passing a String value for a %d format specifier). The logic for 605 passing a String value for a %d format specifier). The l ogic for
551 doing so is derived from Sun's j ava.util.Formatter class, and 606 doing so is derived from Sun's java.util.Formatter class , and
552 available separately from FindBu gs as part of the <a 607 available separately from FindBugs as part of the <a
553 href="https://jformatstring.dev. java.net/">jFormatString</a> 608 href="https://jformatstring.dev.java.net/">jFormatString </a>
554 project. 609 project.
555 <li>More tuning of the unsatisfied oblig ation detector. Since 610 <li>More tuning of the unsatisfied obligation detector. Sinc e
556 this detector is still rather no isy and an unfinished research 611 this detector is still rather noisy and an unfinished re search
557 project, I've moved the generate d issues to a new category: 612 project, I've moved the generated issues to a new catego ry:
558 EXPERIMENTAL. 613 EXPERIMENTAL.
559 <li>Added check for <a 614 <li>Added check for <a
560 href="http://findbugs.sourceforg e.net/bugDescriptions.html#BIT_ADD_OF_SIGNED_BYTE">BIT_ADD_OF_SIGNED_BYTE</a>; 615 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#BIT_ADD_OF_SIGNED_BYTE">BIT_ADD_OF_SIGNED_BYTE</a>;
561 similar to <a 616 similar to <a
562 href="http://findbugs.sourceforg e.net/bugDescriptions.html#BIT_IOR_OF_SIGNED_BYTE">BIT_IOR_OF_SIGNED_BYTE</a>, 617 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#BIT_IOR_OF_SIGNED_BYTE">BIT_IOR_OF_SIGNED_BYTE</a>,
563 except that addition is being us ed to combine shifted signed 618 except that addition is being used to combine shifted si gned
564 bytes. 619 bytes.
565 <li>Changed detection of EI_EXPOSE_REP2, so we only report it 620 <li>Changed detection of EI_EXPOSE_REP2, so we only report i t
566 if the value stored is guarantee d to be the same value that was 621 if the value stored is guaranteed to be the same value t hat was
567 passed in as a parameter. 622 passed in as a parameter.
568 <li>Added <a 623 <li>Added <a
569 href="http://findbugs.sourceforg e.net/bugDescriptions.html#EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">EQ_CHE CK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS</a>, 624 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">EQ_CHECK_FOR_OPERAND_NOT_COMPA TIBLE_WITH_THIS</a>,
570 a warning when an equals method checks to see if an operand is an 625 a warning when an equals method checks to see if an oper and is an
571 instance of a class not compatib le with itself. For example, if 626 instance of a class not compatible with itself. For exam ple, if
572 the Foo class checks to see if t he argument is an instance of 627 the Foo class checks to see if the argument is an instan ce of
573 String. This is either a questio nable design decision or a coding 628 String. This is either a questionable design decision or a coding
574 mistake. 629 mistake.
575 <li>Added <a 630 <li>Added <a
576 href="http://findbugs.sourceforg e.net/bugDescriptions.html#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI_INVOKING_HASHCODE _ON_ARRAY</a>, 631 href="http://findbugs.sourceforge.net/bugDescriptions.ht ml#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI_INVOKING_HASHCODE_ON_ARRAY</a>,
577 which checks for invoking <code> hashCode()</code> on an array, 632 which checks for invoking <code>hashCode()</code> on an array,
578 which returns a hash code that i gnores the contents of the array. 633 which returns a hash code that ignores the contents of t he array.
579 634
580 <li>Added checks for using <code>x.remov eAll(x)</code> to 635 <li>Added checks for using <code>x.removeAll(x)</code> to
581 rather than <code>x.clear()</cod e> to clear an array. 636 rather than <code>x.clear()</code> to clear an array.
582 <li>Add checks for calls such as <code>x .contains(x)</code>, <code>x.remove(x)</code> 637 <li>Add checks for calls such as <code>x.contains(x)</code>, <code>x.remove(x)</code>
583 and <code>x.containsAll(x)</code >. 638 and <code>x.containsAll(x)</code>.
584 <li>Improvements to Eclipse plugin (than ks to Andrey 639 <li>Improvements to Eclipse plugin (thanks to Andrey
585 Loskutov): 640 Loskutov):
586 <ul> 641 <ul>
587 <li>Report separate mark ers for each occurrence of an issue 642 <li>Report separate markers for each occurrence of a n issue
588 that appears mul tiple times in a method 643 that appears multiple times in a method
589 <li>fine tuning for repo rted markers: add only one marker 644 <li>fine tuning for reported markers: add only one m arker
590 for fields, add marker on right position 645 for fields, add marker on right position
591 <li>link bugs selected i n bug explorer view to the opened 646 <li>link bugs selected in bug explorer view to the o pened
592 editor and vice versa 647 editor and vice versa
593 <li>select bugs selected in editor ruler in the opened bug 648 <li>select bugs selected in editor ruler in the open ed bug
594 explorer view 649 explorer view
595 <li>consistent abbreviat ions used in both bug explorer and 650 <li>consistent abbreviations used in both bug explor er and
596 bug details view 651 bug details view
597 <li>added "Expand All" b utton to the bug explorer view 652 <li>added "Expand All" button to the bug explorer vi ew
598 <li>added "Go Into/Go Up " buttons to the bug explorer view 653 <li>added "Go Into/Go Up" buttons to the bug explore r view
599 <li>added "Copy to clipb oard" menu/functionality to the 654 <li>added "Copy to clipboard" menu/functionality to the
600 details view lis t widget 655 details view list widget
601 <li>fix for CNF exceptio n if loading the backup solution for 656 <li>fix for CNF exception if loading the backup solu tion for
602 broken browser w idget 657 broken browser widget
603 </ul> 658 </ul>
604 </ul> 659 </ul>
605 660
606 661
607 662
608 <p>Changes since version 1.3.4</p> 663 <p>Changes since version 1.3.4</p>
609 <ul> 664 <ul>
610 <li>Analysis about 15% faster 665 <li>Analysis about 15% faster
611 <li><a 666 <li><a
612 href="http://sourceforge.net/tra cker/?atid=614693&group_id=96405&func=browse&status=closed">38 667 href="http://sourceforge.net/tracker/?atid=614693&group_ id=96405&func=browse&status=closed">38
613 bugs closed</a></li> 668 bugs closed</a></li>
614 <li>New defect warnings: 669 <li>New defect warnings:
615 <ul> 670 <ul>
616 <li>calls to methods tha t always throw 671 <li>calls to methods that always throw
617 UnsupportedOpera tionException (DMI_UNSUPPORTED_METHOD) 672 UnsupportedOperationException (DMI_UNSUPPORTED_M ETHOD)
618 <li>repeated conditional tests (e.g., <code>if (x 673 <li>repeated conditional tests (e.g., <code>if (x
619 &lt; 0 | | x &lt; 0) ...</code>) (RpC_REPEATED_CONDITIONAL_TEST) 674 &lt; 0 || x &lt; 0) ...</code>) (RpC_REPEATE D_CONDITIONAL_TEST)
620 <li>Complete rewrite of detector for format string problems. 675 <li>Complete rewrite of detector for format string p roblems.
621 More accurate, f inds more problems, generates more descriptive 676 More accurate, finds more problems, generates mo re descriptive
622 reports, several different bug pattern 677 reports, several different bug pattern
623 (VA_FORMAT_STRIN G_EXTRA_ARGUMENTS_PASSED, 678 (VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED,
624 VA_FORMAT_STRING _ILLEGAL, VA_FORMAT_STRING_MISSING_ARGUMENT, 679 VA_FORMAT_STRING_ILLEGAL, VA_FORMAT_STRING_MISSI NG_ARGUMENT,
625 VA_FORMAT_STRING _BAD_ARGUMENT, 680 VA_FORMAT_STRING_BAD_ARGUMENT,
626 VA_FORMAT_STRING _NO_PREVIOUS_ARGUMENT) 681 VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT)
627 <li>Fairly complete impl ementation of JSR-305 custom type 682 <li>Fairly complete implementation of JSR-305 custom type
628 qualifier analys is (no support for custom validators yet). 683 qualifier analysis (no support for custom valida tors yet).
629 (TQ_MAYBE_SOURCE _VALUE_REACHES_NEVER_SINK 684 (TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK
630 TQ_EXPLICIT_UNKN OWN_SOURCE_VALUE_REACHES_ALWAYS_SINK 685 TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_ SINK
631 TQ_EXPLICIT_UNKN OWN_SOURCE_VALUE_REACHES_NEVER_SINK) 686 TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_S INK)
632 <li>New detector for uns atisfied obligations such forgetting 687 <li>New detector for unsatisfied obligations such fo rgetting
633 to close a file (OBL_UNSATISFIED_OBLIGATION). 688 to close a file (OBL_UNSATISFIED_OBLIGATION).
634 <li>Warning when a param eter is marked as nullable, but is 689 <li>Warning when a parameter is marked as nullable, but is
635 always dereferen ced. 690 always dereferenced.
636 (NP_PARAMETER_MU ST_BE_NONNULL_BUT_MARKED_AS_NULLABLE) 691 (NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULL ABLE)
637 <lI>Separate warning for dereference the result of readLine 692 <lI>Separate warning for dereference the result of r eadLine
638 (NP_DEREFERENCE_ OF_READLINE_VALUE) 693 (NP_DEREFERENCE_OF_READLINE_VALUE)
639 </ul> 694 </ul>
640 <li>When XML is generated with messages, the project stats now 695 <li>When XML is generated with messages, the project stats n ow
641 include &lt;FileStat&gt; element s. For each source file, this 696 include &lt;FileStat&gt; elements. For each source file, this
642 gives the path for the file, the total number of warnings for that 697 gives the path for the file, the total number of warning s for that
643 file, and a bugHash for the file . While the instanceHash for a bug 698 file, and a bugHash for the file. While the instanceHash for a bug
644 is intended to be version invari ant (ignoring line numbers, etc), 699 is intended to be version invariant (ignoring line numbe rs, etc),
645 the bugHash for a file is intend ed to reflect all the information 700 the bugHash for a file is intended to reflect all the in formation
646 about the warnings in that file. The intended use case is that if 701 about the warnings in that file. The intended use case i s that if
647 the bugHash for a file is the sa me in two analysis runs, then <em>nothing</em> 702 the bugHash for a file is the same in two analysis runs, then <em>nothing</em>
648 has changed about any of the war nings reported for that file 703 has changed about any of the warnings reported for that file
649 between the two analysis runs. 704 between the two analysis runs.
650 <li>More merging of similar issues withi n a method. For 705 <li>More merging of similar issues within a method. For
651 example, if the result of readLi ne() is dereferences multiple 706 example, if the result of readLine() is dereferences mul tiple
652 times within a method, it will b e reported as a single warning 707 times within a method, it will be reported as a single w arning
653 with occurrences at multiple sou rce lines. 708 with occurrences at multiple source lines.
654 </ul> 709 </ul>
655 <p>Changes since version 1.3.3</p> 710 <p>Changes since version 1.3.3</p>
656 711
657 <ul> 712 <ul>
658 <li>FindBugs base 713 <li>FindBugs base
659 <ul> 714 <ul>
660 <li>New Reports: 715 <li>New Reports:
661 <ul> 716 <ul>
662 <li>EQ_O VERRIDING_EQUALS_NOT_SYMMETRIC: equals method 717 <li>EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC: equa ls method
663 overrides equals in superclass and may not be symmetric</li> 718 overrides equals in superclass and may n ot be symmetric</li>
664 <li>EQ_A LWAYS_TRUE: equals method always returns true</li> 719 <li>EQ_ALWAYS_TRUE: equals method always ret urns true</li>
665 <li>EQ_A LWAYS_FALSE: equals method always returns false</li> 720 <li>EQ_ALWAYS_FALSE: equals method always re turns false</li>
666 <li>EQ_C OMPARING_CLASS_NAMES: equals method compares class 721 <li>EQ_COMPARING_CLASS_NAMES: equals method compares class
667 names rather than class objects</li> 722 names rather than class objects</li>
668 <li>EQ_U NUSUAL: Unusual equals method</li> 723 <li>EQ_UNUSUAL: Unusual equals method</li>
669 <li>EQ_G ETCLASS_AND_CLASS_CONSTANT: equals method fails 724 <li>EQ_GETCLASS_AND_CLASS_CONSTANT: equals m ethod fails
670 for subtypes</li> 725 for subtypes</li>
671 <li>SE_R EAD_RESOLVE_IS_STATIC: The readResolve method must 726 <li>SE_READ_RESOLVE_IS_STATIC: The readResol ve method must
672 not be declared as a static method.</li> 727 not be declared as a static method.</li>
673 <li>SE_P RIVATE_READ_RESOLVE_NOT_INHERITED: private 728 <li>SE_PRIVATE_READ_RESOLVE_NOT_INHERITED: p rivate
674 readResolve method not inherited by subclasses</li> 729 readResolve method not inherited by subc lasses</li>
675 <li>MSF_ MUTABLE_SERVLET_FIELD: Mutable servlet field</li> 730 <li>MSF_MUTABLE_SERVLET_FIELD: Mutable servl et field</li>
676 <li>XSS_ REQUEST_PARAMETER_TO_SEND_ERROR: Servlet reflected 731 <li>XSS_REQUEST_PARAMETER_TO_SEND_ERROR: Ser vlet reflected
677 cross site scripting vulnerability</li> 732 cross site scripting vulnerability</li>
678 <li>SKIP PED_CLASS_TOO_BIG: Class too big for analysis</li> 733 <li>SKIPPED_CLASS_TOO_BIG: Class too big for analysis</li>
679 </ul> 734 </ul>
680 </li> 735 </li>
681 <li>Other: 736 <li>Other:
682 <ul> 737 <ul>
683 <li>Valu e-number analysis now more space-efficient</li> 738 <li>Value-number analysis now more space-eff icient</li>
684 <li>Enha ncements to reduce memory overhead when analyzing 739 <li>Enhancements to reduce memory overhead w hen analyzing
685 very large classes</li> 740 very large classes</li>
686 <li>Now skips very large classes that would otherwise take 741 <li>Now skips very large classes that would otherwise take
687 too much time and memory to analyze</li> 742 too much time and memory to analyze</li>
688 <li>Infr astructure for tracking effectively-constant/ 743 <li>Infrastructure for tracking effectively- constant/
689 effectively-final fields</li> 744 effectively-final fields</li>
690 <li>Adde d more cweids</li> 745 <li>Added more cweids</li>
691 <li>Enha nced taint tracking for taint-based detectors</li> 746 <li>Enhanced taint tracking for taint-based detectors</li>
692 <li>Igno re doomed calls to equals if result is used as an 747 <li>Ignore doomed calls to equals if result is used as an
693 argument to assertFalse</li> 748 argument to assertFalse</li>
694 <li>EQ_O VERRIDING_EQUALS_NOT_SYMMETRIC handles compareTo</li> 749 <li>EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC handl es compareTo</li>
695 <li>Prio rity tweak for ICAST_INTEGER_MULTIPLY_CAST_TO_LONG 750 <li>Priority tweak for ICAST_INTEGER_MULTIPL Y_CAST_TO_LONG
696 (only low priority if multiplying by 1000)</li> 751 (only low priority if multiplying by 100 0)</li>
697 <li>Impr oved tracking of fields across method calls</li> 752 <li>Improved tracking of fields across metho d calls</li>
698 </ul> 753 </ul>
699 </li> 754 </li>
700 <li>Fixes: 755 <li>Fixes:
701 <ul> 756 <ul>
702 <li>[ 19 41450 ] DLS_DEAD_LOCAL_STORE not reported</li> 757 <li>[ 1941450 ] DLS_DEAD_LOCAL_STORE not rep orted</li>
703 <li>[ 19 53323 ] Omitted break statement in 758 <li>[ 1953323 ] Omitted break statement in
704 SynchronizeAndNullCheckField</li> 759 SynchronizeAndNullCheckField</li>
705 <li>[ 19 42620 ] Source Directories selection dialog 760 <li>[ 1942620 ] Source Directories selection dialog
706 interface confusion (partial)</li> 761 interface confusion (partial)</li>
707 <li>[ 19 48275 ] Unhelpful "Load of known null"</li> 762 <li>[ 1948275 ] Unhelpful "Load of known nul l"</li>
708 <li>[ 19 33922 ] MWM error in findbugs</li> 763 <li>[ 1933922 ] MWM error in findbugs</li>
709 <li>[ 19 34772 ] 1.3.3 appears to rely on JDK 1.6, JNLP 764 <li>[ 1934772 ] 1.3.3 appears to rely on JDK 1.6, JNLP
710 still specifies 1.5</li> 765 still specifies 1.5</li>
711 <li>[ 19 33945 ] -loadbugs doesn't work</li> 766 <li>[ 1933945 ] -loadbugs doesn't work</li>
712 <li>Fixe d problems for class names starting with '$'</li> 767 <li>Fixed problems for class names starting with '$'</li>
713 <li>Fixe d bugs and incomplete handling of annotations in 768 <li>Fixed bugs and incomplete handling of an notations in
714 VersionInsensitiveBugComparator</li> 769 VersionInsensitiveBugComparator</li>
715 </ul> 770 </ul>
716 </li> 771 </li>
717 <li>Patches: 772 <li>Patches:
718 <ul> 773 <ul>
719 <li>[ 19 55106 ] Javadoc fixes</li> 774 <li>[ 1955106 ] Javadoc fixes</li>
720 <li>[ 19 51930 ] Superfluous import statements (thanks to 775 <li>[ 1951930 ] Superfluous import statement s (thanks to
721 Jerry James)</li> 776 Jerry James)</li>
722 <li>[ 19 51907 ] Missing @Deprecated annotations (thanks to 777 <li>[ 1951907 ] Missing @Deprecated annotati ons (thanks to
723 Jerry James)</li> 778 Jerry James)</li>
724 <li>[ 19 51876 ] Infonode Docking Windows compile fix 779 <li>[ 1951876 ] Infonode Docking Windows com pile fix
725 (thanks to Jerry James)</li> 780 (thanks to Jerry James)</li>
726 <li>[ 19 36055 ] bugfix for findbugs.de.comment not working 781 <li>[ 1936055 ] bugfix for findbugs.de.comme nt not working
727 (thanks to Peter Fokkinga) 782 (thanks to Peter Fokkinga)
728 </ul> 783 </ul>
729 </li> 784 </li>
730 </ul> 785 </ul>
731 <li>FindBugs BlueJ plugin 786 <li>FindBugs BlueJ plugin
732 <ul> 787 <ul>
733 <li>Updated to use FindB ugs 1.3.4 (first new release since 788 <li>Updated to use FindBugs 1.3.4 (first new release since
734 1.1.3)</li> 789 1.1.3)</li>
735 </ul> 790 </ul>
736 </li> 791 </li>
737 </ul> 792 </ul>
738 793
739 <p>Changes since version 1.3.2</p> 794 <p>Changes since version 1.3.2</p>
740 795
741 <ul> 796 <ul>
742 <li>FindBugs base 797 <li>FindBugs base
743 <ul> 798 <ul>
744 <li>New Detectors: 799 <li>New Detectors:
745 <ul> 800 <ul>
746 <li>Fiel dItemSummary: Produces summary information for 801 <li>FieldItemSummary: Produces summary infor mation for
747 what is stored into fields</li> 802 what is stored into fields</li>
748 <li>Sync hronizeOnClassLiteralNotGetClass: Look for code 803 <li>SynchronizeOnClassLiteralNotGetClass: Lo ok for code
749 that synchronizes on the results of getClass rather than on 804 that synchronizes on the results of getC lass rather than on
750 class literals</li> 805 class literals</li>
751 <li>Sync hronizingOnContentsOfFieldToProtectField: This 806 <li>SynchronizingOnContentsOfFieldToProtectF ield: This
752 detector looks for code that seems to be synchronizing on a 807 detector looks for code that seems to be synchronizing on a
753 field in order to guard updates of that field</li> 808 field in order to guard updates of that field</li>
754 </ul> 809 </ul>
755 </li> 810 </li>
756 <li>New BugCode: 811 <li>New BugCode:
757 <ul> 812 <ul>
758 <li>HRS: HTTP Response splitting vulnerability</li> 813 <li>HRS: HTTP Response splitting vulnerabili ty</li>
759 <li>WL: Possible locking on wrong object</li> 814 <li>WL: Possible locking on wrong object</li >
760 </ul> 815 </ul>
761 </li> 816 </li>
762 <li>New Reports: 817 <li>New Reports:
763 <ul> 818 <ul>
764 <li>DMI_ CONSTANT_DB_PASSWORD: This code creates a database 819 <li>DMI_CONSTANT_DB_PASSWORD: This code crea tes a database
765 connect using a hard coded, constant password</li> 820 connect using a hard coded, constant pas sword</li>
766 <li>HRS_ REQUEST_PARAMETER_TO_COOKIE: HTTP cookie formed 821 <li>HRS_REQUEST_PARAMETER_TO_COOKIE: HTTP co okie formed
767 from untrusted input</li> 822 from untrusted input</li>
768 <li>HRS_ REQUEST_PARAMETER_TO_HTTP_HEADER: HTTP parameter 823 <li>HRS_REQUEST_PARAMETER_TO_HTTP_HEADER: HT TP parameter
769 directly written to HTTP header output</li> 824 directly written to HTTP header output</ li>
770 <li>CN_I MPLEMENTS_CLONE_BUT_NOT_CLONEABLE: Class defines 825 <li>CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE: C lass defines
771 clone() but doesn't implement Cloneable</li> 826 clone() but doesn't implement Cloneable< /li>
772 <li>DL_S YNCHRONIZATION_ON_BOXED_PRIMITIVE: Synchronization 827 <li>DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE: S ynchronization
773 on boxed primitive could lead to deadlock</li> 828 on boxed primitive could lead to deadloc k</li>
774 <li>DL_S YNCHRONIZATION_ON_BOOLEAN: Synchronization on 829 <li>DL_SYNCHRONIZATION_ON_BOOLEAN: Synchroni zation on
775 Boolean could lead to deadlock</li> 830 Boolean could lead to deadlock</li>
776 <li>ML_S YNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD: 831 <li>ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_ FIELD:
777 Synchronization on field in futile attempt to guard that field 832 Synchronization on field in futile attem pt to guard that field
778 </li> 833 </li>
779 <li>DLS_ DEAD_LOCAL_STORE_IN_RETURN: Useless assignment in 834 <li>DLS_DEAD_LOCAL_STORE_IN_RETURN: Useless assignment in
780 return statement</li> 835 return statement</li>
781 <li>WL_U SING_GETCLASS_RATHER_THAN_CLASS_LITERAL: 836 <li>WL_USING_GETCLASS_RATHER_THAN_CLASS_LITE RAL:
782 Synchronization on getClass rather than class literal</li> 837 Synchronization on getClass rather than class literal</li>
783 </ul> 838 </ul>
784 </li> 839 </li>
785 <li>Other: 840 <li>Other:
786 <ul> 841 <ul>
787 <li>Many enhancements to cross-site scripting detector and 842 <li>Many enhancements to cross-site scriptin g detector and
788 its documentation</li> 843 its documentation</li>
789 <li>Enha nced switch fall through handling</li> 844 <li>Enhanced switch fall through handling</l i>
790 <li>Enha nced unread field handling (look for IF_ACMPEQ and 845 <li>Enhanced unread field handling (look for IF_ACMPEQ and
791 IF_ACMPNE)</li> 846 IF_ACMPNE)</li>
792 <li>Clar ified documentation for @Nullable in manual</li> 847 <li>Clarified documentation for @Nullable in manual</li>
793 <li>Fewe r DeadLocalStore false positives</li> 848 <li>Fewer DeadLocalStore false positives</li >
794 <li>Fewe r UnreadField false positives</li> 849 <li>Fewer UnreadField false positives</li>
795 <li>Fewe r StaticCalendarDetector false positives</li> 850 <li>Fewer StaticCalendarDetector false posit ives</li>
796 <li>Perf ormance fix for slow file system IO e.g. Clearcase 851 <li>Performance fix for slow file system IO e.g. Clearcase
797 repositories (thanks, Andrei!)</li> 852 repositories (thanks, Andrei!)</li>
798 <li>Othe r, general performance enhancements (thanks, 853 <li>Other, general performance enhancements (thanks,
799 Andrei!)</li> 854 Andrei!)</li>
800 <li>Enha ncements for using FindBugs scripts with MKS on 855 <li>Enhancements for using FindBugs scripts with MKS on
801 Windows (thanks, Kelly O'Hair!)</li> 856 Windows (thanks, Kelly O'Hair!)</li>
802 <li>Note d in the manual that jsr305.jar must be present 857 <li>Noted in the manual that jsr305.jar must be present
803 for annotations to compile</li> 858 for annotations to compile</li>
804 <li>Adde d and fine-tuned default-nullness annotations</li> 859 <li>Added and fine-tuned default-nullness an notations</li>
805 <li>More CWE IDs added</li> 860 <li>More CWE IDs added</li>
806 <li>Chec k and warning for unexpected BCEL version in 861 <li>Check and warning for unexpected BCEL ve rsion in
807 classpath</li> 862 classpath</li>
808 </ul> 863 </ul>
809 </li> 864 </li>
810 <li>Fixes: 865 <li>Fixes:
811 <ul> 866 <ul>
812 <li>Bug fix to handling of local variable tables in BCEL</li> 867 <li>Bug fix to handling of local variable ta bles in BCEL</li>
813 <li>Refi ned documentation for 868 <li>Refined documentation for
814 MTIA_SUSPECT_STRUTS_INSTANCE_FIELD</li> 869 MTIA_SUSPECT_STRUTS_INSTANCE_FIELD</li>
815 <li>[ 19 27295 ] NPE when called on project root</li> 870 <li>[ 1927295 ] NPE when called on project r oot</li>
816 <li>[ 19 26405 ] Incorrect dead store warning</li> 871 <li>[ 1926405 ] Incorrect dead store warning </li>
817 <li>[ 19 26409 ] Incorrect redundant nullcheck warning</li> 872 <li>[ 1926409 ] Incorrect redundant nullchec k warning</li>
818 <li>[ 19 26389 ] Wrong line number printed/highlighted in 873 <li>[ 1926389 ] Wrong line number printed/hi ghlighted in
819 bug</li> 874 bug</li>
820 <li>[ 19 27040 ] typo in bug description</li> 875 <li>[ 1927040 ] typo in bug description</li>
821 <li>[ 19 26263 ] Minor glitch in HTML output</li> 876 <li>[ 1926263 ] Minor glitch in HTML output< /li>
822 <li>[ 19 26240 ] Minor error in standard options in manual</li> 877 <li>[ 1926240 ] Minor error in standard opti ons in manual</li>
823 <li>[ 19 26236 ] Minor bug in installation section of 878 <li>[ 1926236 ] Minor bug in installation se ction of
824 manual</li> 879 manual</li>
825 <li>[ 19 25539 ] ZIP is default file system code base</li> 880 <li>[ 1925539 ] ZIP is default file system c ode base</li>
826 <li>[ 18 94701 ] Livelock / memory leak in 881 <li>[ 1894701 ] Livelock / memory leak in
827 ObjectTypeFactory (thanks, Andrei!)</li> 882 ObjectTypeFactory (thanks, Andrei!)</li>
828 <li>[ 18 67491 ] Doesn't reload annotations after code 883 <li>[ 1867491 ] Doesn't reload annotations a fter code
829 changes in IDE (thanks, Andrei!)</li> 884 changes in IDE (thanks, Andrei!)</li>
830 <li>[ 19 21399 ] -project option not supported</li> 885 <li>[ 1921399 ] -project option not supporte d</li>
831 <li>[ 19 13834 ] "Dead" store to variable with method call</li> 886 <li>[ 1913834 ] "Dead" store to variable wit h method call</li>
832 <li>[ 19 17352 ] H B se:...field in serializable class</li> 887 <li>[ 1917352 ] H B se:...field in serializa ble class</li>
833 <li>[ 19 11617 ] CloneIdiom relies on 888 <li>[ 1911617 ] CloneIdiom relies on
834 getNameConstantOperand for INSTANCEOF</li> 889 getNameConstantOperand for INSTANCEOF</l i>
835 <li>[ 19 11620 ] False +: DLS predecrement before return</li> 890 <li>[ 1911620 ] False +: DLS predecrement be fore return</li>
836 <li>[ 18 71376 ] False negative: non-serializable Map field</li> 891 <li>[ 1871376 ] False negative: non-serializ able Map field</li>
837 <li>[ 18 71051 ] non standard clone() method</li> 892 <li>[ 1871051 ] non standard clone() method< /li>
838 <li>[ 19 08854 ] Error in TestASM</li> 893 <li>[ 1908854 ] Error in TestASM</li>
839 <li>[ 19 07539 ] 22 minor errors in bug checker 894 <li>[ 1907539 ] 22 minor errors in bug check er
840 documentation</li> 895 documentation</li>
841 <li>[ 18 97323 ] EJB implementation class false positives</li> 896 <li>[ 1897323 ] EJB implementation class fal se positives</li>
842 <li>[ 18 99648 ] Crash on startup on Vista with Java 897 <li>[ 1899648 ] Crash on startup on Vista wi th Java
843 1.6.0_04</li> 898 1.6.0_04</li>
844 </ul> 899 </ul>
845 </li> 900 </li>
846 </ul> 901 </ul>
847 </li> 902 </li>
848 <li>FindBugs Eclipse plugin (change log by Andrey Loskutov) 903 <li>FindBugs Eclipse plugin (change log by Andrey Loskutov)
849 <ul> 904 <ul>
850 <li>new feature: export basic FindBugs numbers for projects 905 <li>new feature: export basic FindBugs numbers for p rojects
851 via File-&gt;Exp ort-&gt;Java-&gt;BugCounts (Andrey Loskutov)</li> 906 via File-&gt;Export-&gt;Java-&gt;BugCounts (Andr ey Loskutov)</li>
852 <li>new feature: jobs fo r different projects will be run in 907 <li>new feature: jobs for different projects will be run in
853 parallel per def ault if running on a multi-core PC 908 parallel per default if running on a multi-core PC
854 ("fb.allowParall elBuild" system property not used anymore) 909 ("fb.allowParallelBuild" system property not use d anymore)
855 (Andrey Loskutov )</li> 910 (Andrey Loskutov)</li>
856 <li>fixed performance sl owdown in the multi-threaded build, 911 <li>fixed performance slowdown in the multi-threaded build,
857 caused by worksp ace operation locks during assigning marker 912 caused by workspace operation locks during assig ning marker
858 attributes (Andr ey Loskutov)</li> 913 attributes (Andrey Loskutov)</li>
859 </ul> 914 </ul>
860 </li> 915 </li>
861 </ul> 916 </ul>
862 917
863 <p>Changes since version 1.3.1</p> 918 <p>Changes since version 1.3.1</p>
864 919
865 <ul> 920 <ul>
866 <li>FindBugs base 921 <li>FindBugs base
867 <ul> 922 <ul>
868 <li>New Bug Category: 923 <li>New Bug Category:
869 <ul> 924 <ul>
870 <li>SECU RITY (Abbrev: S), A use of untrusted input in a 925 <li>SECURITY (Abbrev: S), A use of untrusted input in a
871 way that could create a remotely exploitable security 926 way that could create a remotely exploit able security
872 vulnerability</li> 927 vulnerability</li>
873 </ul> 928 </ul>
874 </li> 929 </li>
875 <li>New Detectors: 930 <li>New Detectors:
876 <ul> 931 <ul>
877 <li>Cros sSiteScripting: This detector looks for 932 <li>CrossSiteScripting: This detector looks for
878 obvious/blatant cases of cross site scripting vulnerabilities</li> 933 obvious/blatant cases of cross site scri pting vulnerabilities</li>
879 </ul> 934 </ul>
880 </li> 935 </li>
881 <li>New BugCode: 936 <li>New BugCode:
882 <ul> 937 <ul>
883 <li>XSS: Cross site scripting</li> 938 <li>XSS: Cross site scripting</li>
884 </ul> 939 </ul>
885 </li> 940 </li>
886 <li>New Reports: 941 <li>New Reports:
887 <ul> 942 <ul>
888 <li>XSS_ REQUEST_PARAMETER_TO_SERVLET_WRITER: HTTP 943 <li>XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER: HTTP
889 parameter directly written to Servlet output, giving XSS 944 parameter directly written to Servlet ou tput, giving XSS
890 vulnerability</li> 945 vulnerability</li>
891 <li>XSS_ REQUEST_PARAMETER_TO_JSP_WRITER: HTTP parameter 946 <li>XSS_REQUEST_PARAMETER_TO_JSP_WRITER: HTT P parameter
892 directly written to JSP output, giving XSS vulnerability</li> 947 directly written to JSP output, giving X SS vulnerability</li>
893 <li>EQ_O THER_USE_OBJECT: equals() method defined that 948 <li>EQ_OTHER_USE_OBJECT: equals() method def ined that
894 doesn't override Object.equals(Object)</li> 949 doesn't override Object.equals(Object)</ li>
895 <li>EQ_O THER_NO_OBJECT: equals() method inherits rather 950 <li>EQ_OTHER_NO_OBJECT: equals() method inhe rits rather
896 than overrides equals(Object)</li> 951 than overrides equals(Object)</li>
897 <li>NP_N ULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE: Possible 952 <li>NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE : Possible
898 null pointer dereference on path that might be infeasible</li> 953 null pointer dereference on path that mi ght be infeasible</li>
899 </ul> 954 </ul>
900 </li> 955 </li>
901 <li>Other: 956 <li>Other:
902 <ul> 957 <ul>
903 <li>Adde d -noClassOk command-line parameter to 958 <li>Added -noClassOk command-line parameter to
904 command-line and ant interfaces; when -noClassOk is specified 959 command-line and ant interfaces; when -n oClassOk is specified
905 and no classfiles are given, FindBugs will print a warning 960 and no classfiles are given, FindBugs wi ll print a warning
906 message and output a well- formed file with no warnings</li> 961 message and output a well- formed file w ith no warnings</li>
907 <li>Fewe r false positives for null pointer bugs</li> 962 <li>Fewer false positives for null pointer b ugs</li>
908 <li>Supp ress dead-local-store false positives in .jsp code</li> 963 <li>Suppress dead-local-store false positive s in .jsp code</li>
909 <li>Type fixes in warning messages</li> 964 <li>Type fixes in warning messages</li>
910 <li>Bett er warning message for NP_NULL_ON_SOME_PATH</li> 965 <li>Better warning message for NP_NULL_ON_SO ME_PATH</li>
911 <li>"WMI " bug code description renamed from "Wrong Map 966 <li>"WMI" bug code description renamed from "Wrong Map
912 Iterator" to "Inefficient Map Iterator"</li> 967 Iterator" to "Inefficient Map Iterator"< /li>
913 </ul> 968 </ul>
914 </li> 969 </li>
915 <li>Fixes: 970 <li>Fixes:
916 <ul> 971 <ul>
917 <li>[ 18 93048 ] FindBugs confused by a findbugs.xml file</li> 972 <li>[ 1893048 ] FindBugs confused by a findb ugs.xml file</li>
918 <li>[ 18 78528 ] XSL xforms don't support history features</li> 973 <li>[ 1878528 ] XSL xforms don't support his tory features</li>
919 <li>[ 18 76584 ] two default.xsl flaws</li> 974 <li>[ 1876584 ] two default.xsl flaws</li>
920 <li>[ 18 74856 ] Format string bug detector doesn't handle 975 <li>[ 1874856 ] Format string bug detector d oesn't handle
921 special operators</li> 976 special operators</li>
922 <li>[ 18 72645 ] computeBugHistory - 977 <li>[ 1872645 ] computeBugHistory -
923 java.lang.IllegalArgumentException</li> 978 java.lang.IllegalArgumentException</li>
924 <li>[ 18 72237 ] Ant task fails when no .class files</li> 979 <li>[ 1872237 ] Ant task fails when no .clas s files</li>
925 <li>[ 18 68670 ] Filters: include AND exclude don't allowed</li> 980 <li>[ 1868670 ] Filters: include AND exclude don't allowed</li>
926 <li>[ 18 68666 ] check-for-oddness reported, but array 981 <li>[ 1868666 ] check-for-oddness reported, but array
927 length can never be negative</li> 982 length can never be negative</li>
928 <li>[ 18 66108 ] SetBugDatabaseInfoTask strips dir from 983 <li>[ 1866108 ] SetBugDatabaseInfoTask strip s dir from
929 output filename</li> 984 output filename</li>
930 <li>[ 18 66021 ] MineBugHistoryTask strips dir of output 985 <li>[ 1866021 ] MineBugHistoryTask strips di r of output
931 filename</li> 986 filename</li>
932 <li>[ 18 65265 ] code doesn't handle 987 <li>[ 1865265 ] code doesn't handle
933 StringBuffer.append([CII) right</li> 988 StringBuffer.append([CII) right</li>
934 <li>[ 18 64793 ] Warning when casting a null reference 989 <li>[ 1864793 ] Warning when casting a null reference
935 compared to a String</li> 990 compared to a String</li>
936 <li>[ 18 63376 ] Typo in manual chap 8: Filter Files</li> 991 <li>[ 1863376 ] Typo in manual chap 8: Filte r Files</li>
937 <li>[ 18 62705 ] Transient fields that default to null</li> 992 <li>[ 1862705 ] Transient fields that defaul t to null</li>
938 <li>[ 18 42545 ] DLS on catch variable (with priority 993 <li>[ 1842545 ] DLS on catch variable (with priority
939 tweaking)</li> 994 tweaking)</li>
940 <li>[ 18 16258 ] false positive BC_IMPOSSIBLE_CAST</li> 995 <li>[ 1816258 ] false positive BC_IMPOSSIBLE _CAST</li>
941 <li>[ 15 51732 ] Get erroneous DLS with while loop</li> 996 <li>[ 1551732 ] Get erroneous DLS with while loop</li>
942 </ul> 997 </ul>
943 </li> 998 </li>
944 </ul> 999 </ul>
945 </li> 1000 </li>
946 <li>FindBugs Eclipse plugin (change log by Andrey Loskutov) 1001 <li>FindBugs Eclipse plugin (change log by Andrey Loskutov)
947 <ul> 1002 <ul>
948 <li>new feature: added B ug explorer view (replacing Bug tree 1003 <li>new feature: added Bug explorer view (replacing Bug tree
949 view), based on Common Navigator framework (Andrey Loskutov)</li> 1004 view), based on Common Navigator framework (Andr ey Loskutov)</li>
950 <li>bug 1873860 fixed: e mpty projects are no longer shown in 1005 <li>bug 1873860 fixed: empty projects are no longer shown in
951 Bug tree view (A ndrey Loskutov)</li> 1006 Bug tree view (Andrey Loskutov)</li>
952 <li>new feature: bug cou nts decorators for projects, folders 1007 <li>new feature: bug counts decorators for projects, folders
953 and files (has t o be activated via Preferences -&gt; general 1008 and files (has to be activated via Preferences - &gt; general
954 -&gt; appearance -&gt; label decorations)(Andrey Loskutov)</li> 1009 -&gt; appearance -&gt; label decorations)(Andrey Loskutov)</li>
955 <li>patch 1746499: bette r icons (Alessandro Nistico)</li> 1010 <li>patch 1746499: better icons (Alessandro Nistico) </li>
956 <li>patch 1893685: Find bug actions on change sets bug 1011 <li>patch 1893685: Find bug actions on change sets b ug
957 (Alessandro Nist ico)</li> 1012 (Alessandro Nistico)</li>
958 <li>fixed bug 1855384: B ug configuration is broken in 1013 <li>fixed bug 1855384: Bug configuration is broken i n
959 Eclipse (Andrey Loskutov)</li> 1014 Eclipse (Andrey Loskutov)</li>
960 <li>refactored FindBugs properties page (Andrey Loskutov)</li> 1015 <li>refactored FindBugs properties page (Andrey Losk utov)</li>
961 <li>refactored FindBugs worker/builder/run action (Andrey 1016 <li>refactored FindBugs worker/builder/run action (A ndrey
962 Loskutov)</li> 1017 Loskutov)</li>
963 <li>FB detects now only bugs from classes on project's 1018 <li>FB detects now only bugs from classes on project 's
964 classpath (no do uble work on duplicated class files) (Andrey 1019 classpath (no double work on duplicated class fi les) (Andrey
965 Loskutov)</li> 1020 Loskutov)</li>
966 <li>fixed bug introduced by the bad patch for 1867951: FB 1021 <li>fixed bug introduced by the bad patch for 186795 1: FB
967 cannot be execut ed incrementally on a folder of file (Andrey 1022 cannot be executed incrementally on a folder of file (Andrey
968 Loskutov)</li> 1023 Loskutov)</li>
969 <li>fixed job rule: now jobs for different projects may run 1024 <li>fixed job rule: now jobs for different projects may run
970 in parallel if r unning on a multi-core PC and 1025 in parallel if running on a multi-core PC and
971 "fb.allowParalle lBuild" system property is set to true (Andrey 1026 "fb.allowParallelBuild" system property is set t o true (Andrey
972 Loskutov)</li> 1027 Loskutov)</li>
973 <li>fixed FB auto-build not started if .fbprefs or 1028 <li>fixed FB auto-build not started if .fbprefs or
974 .classpath was c hanged (Andrey Loskutov)</li> 1029 .classpath was changed (Andrey Loskutov)</li>
975 <li>fixed not reporting bugs on secondary types (classes 1030 <li>fixed not reporting bugs on secondary types (cla sses
976 defined in java files with different name) (Andrey Loskutov)</li> 1031 defined in java files with different name) (Andr ey Loskutov)</li>
977 </ul> 1032 </ul>
978 </li> 1033 </li>
979 </ul> 1034 </ul>
980 1035
981 <p>Changes since version 1.3.0</p> 1036 <p>Changes since version 1.3.0</p>
982 <ul> 1037 <ul>
983 <li>New Reports 1038 <li>New Reports
984 <ul> 1039 <ul>
985 <li>VA_FORMAT_STRING_ARG _MISMATCH: A format-string method 1040 <li>VA_FORMAT_STRING_ARG_MISMATCH: A format-string m ethod
986 with a variable number of arguments is called, but the number of 1041 with a variable number of arguments is called, b ut the number of
987 arguments passed does not match with the number of % 1042 arguments passed does not match with the number of %
988 placeholders in the format string. This is probably not what the 1043 placeholders in the format string. This is proba bly not what the
989 author intended. 1044 author intended.
990 <li>IO_APPENDING_TO_OBJE CT_OUTPUT_STREAM: This code opens a 1045 <li>IO_APPENDING_TO_OBJECT_OUTPUT_STREAM: This code opens a
991 file in append m ode and that wraps the result in an object 1046 file in append mode and that wraps the result in an object
992 output stream. T his won't allow you to append to an existing 1047 output stream. This won't allow you to append to an existing
993 object output st ream stored in a file. If you want to be able to 1048 object output stream stored in a file. If you wa nt to be able to
994 append to an obj ect output stream, you need to keep the object 1049 append to an object output stream, you need to k eep the object
995 output stream op en. The only situation in which opening a file 1050 output stream open. The only situation in which opening a file
996 in append mode a nd the writing an object output stream could 1051 in append mode and the writing an object output stream could
997 work is if on re ading the file you plan to open it in random 1052 work is if on reading the file you plan to open it in random
998 access mode and seek to the byte offset where the append 1053 access mode and seek to the byte offset where th e append
999 started. 1054 started.
1000 <li>NP_BOOLEAN_RETURN_NU LL: A method that returns either 1055 <li>NP_BOOLEAN_RETURN_NULL: A method that returns ei ther
1001 Boolean.TRUE, Bo olean.FALSE or null is an accident waiting to 1056 Boolean.TRUE, Boolean.FALSE or null is an accide nt waiting to
1002 happen. This met hod can be invoked as though it returned a value 1057 happen. This method can be invoked as though it returned a value
1003 of type boolean, and the compiler will insert automatic unboxing 1058 of type boolean, and the compiler will insert au tomatic unboxing
1004 of the Boolean v alue. If a null value is returned, this will 1059 of the Boolean value. If a null value is returne d, this will
1005 result in a Null PointerException. 1060 result in a NullPointerException.
1006 </ul> 1061 </ul>
1007 </li> 1062 </li>
1008 <li>Changes to Existing Reports 1063 <li>Changes to Existing Reports
1009 <ul> 1064 <ul>
1010 <li>RV_DONT_JUST_NULL_CH ECK_READLINE: CORRECTNESS -&gt; 1065 <li>RV_DONT_JUST_NULL_CHECK_READLINE: CORRECTNESS -& gt;
1011 STYLE</li> 1066 STYLE</li>
1012 <li>DMI_INVOKING_TOSTRIN G_ON_ARRAY: Long description 1067 <li>DMI_INVOKING_TOSTRING_ON_ARRAY: Long description
1013 mentions array n ame whenever possible</li> 1068 mentions array name whenever possible</li>
1014 </ul> 1069 </ul>
1015 </li> 1070 </li>
1016 <li>Fixes: 1071 <li>Fixes:
1017 <ul> 1072 <ul>
1018 <li>Updated manual to me ntion that Java 1.5 is now a 1073 <li>Updated manual to mention that Java 1.5 is now a
1019 requirement for running FindBugs 1074 requirement for running FindBugs
1020 <li>Applied patch 184020 6 fixing issue "Ant task does not 1075 <li>Applied patch 1840206 fixing issue "Ant task doe s not
1021 work when preset def is used" - thanks to phejl 1076 work when presetdef is used" - thanks to phejl
1022 <li>Applied patch 177869 0 fixing issue "Ant task: tolerate 1077 <li>Applied patch 1778690 fixing issue "Ant task: to lerate
1023 but complain abo ut invalid auxClasspath" - thanks to David 1078 but complain about invalid auxClasspath" - thank s to David
1024 Schmidt 1079 Schmidt
1025 <li>Applied patch 185212 5 adding a Chinese-language GUI 1080 <li>Applied patch 1852125 adding a Chinese-language GUI
1026 bundle props fil e - thanks to fifi 1081 bundle props file - thanks to fifi
1027 <li>Applied patch 184590 3 adding ability to load XML results 1082 <li>Applied patch 1845903 adding ability to load XML results
1028 with the Eclipse plugin - thanks to Alex Mont 1083 with the Eclipse plugin - thanks to Alex Mont
1029 <li>Fixed issue 1844671 - "FP for "reversed" null check in 1084 <li>Fixed issue 1844671 - "FP for "reversed" null ch eck in
1030 catch for stream close" 1085 catch for stream close"
1031 <li>Fixed issue 1836050 - "-onlyAnalyze broken" 1086 <li>Fixed issue 1836050 - "-onlyAnalyze broken"
1032 <li>Fixed issue 1853011 - "Typo: Field names should start 1087 <li>Fixed issue 1853011 - "Typo: Field names should start
1033 with aN lower ca se letter" 1088 with aN lower case letter"
1034 <li>Fixed issue 1844181 - "JNLP file does not contain all 1089 <li>Fixed issue 1844181 - "JNLP file does not contai n all
1035 necessary JARs" 1090 necessary JARs"
1036 <li>Fixed issue 1840245 - "xxxException class does not 1091 <li>Fixed issue 1840245 - "xxxException class does n ot
1037 derive from Exce ption" 1092 derive from Exception"
1038 <li>Fixed issue 1840277 - "[M D EC] Typo in bug 1093 <li>Fixed issue 1840277 - "[M D EC] Typo in bug
1039 documentation" 1094 documentation"
1040 <li>Fixed issue 1782447 - "OutOfMemoryError if i activate 1095 <li>Fixed issue 1782447 - "OutOfMemoryError if i act ivate
1041 Findbugs on my p roject" 1096 Findbugs on my project"
1042 <li>Fixed issue 1830576 - "[regression] keySet/entrySet 1097 <li>Fixed issue 1830576 - "[regression] keySet/entry Set
1043 false positive" 1098 false positive"
1044 </ul> 1099 </ul>
1045 </li> 1100 </li>
1046 <li>Other: 1101 <li>Other:
1047 <ul> 1102 <ul>
1048 <li>New bug code: "IO" ( for 1103 <li>New bug code: "IO" (for
1049 IO_APPENDING_TO_ OBJECT_OUTPUT_STREAM)</li> 1104 IO_APPENDING_TO_OBJECT_OUTPUT_STREAM)</li>
1050 <li>Added "-onlyMostRece nt" option for computeBugHistory 1105 <li>Added "-onlyMostRecent" option for computeBugHis tory
1051 script/ant task 1106 script/ant task
1052 <li>More explicit langua ge in 1107 <li>More explicit language in
1053 RV_RETURN_VALUE_ IGNORED_BAD_PRACTICE messages 1108 RV_RETURN_VALUE_IGNORED_BAD_PRACTICE messages
1054 <li>Modified ResourceVal ueAnalysis to correctly identify 1109 <li>Modified ResourceValueAnalysis to correctly iden tify
1055 null == X or nul l != X as a null check (for issue 1844671) 1110 null == X or null != X as a null check (for issu e 1844671)
1056 <li>Modified DMI_HARDCOD ED_ABSOLUTE_FILENAME logic in 1111 <li>Modified DMI_HARDCODED_ABSOLUTE_FILENAME logic i n
1057 DumbMethodInvoca tions to ignore files from /etc or /dev and 1112 DumbMethodInvocations to ignore files from /etc or /dev and
1058 increase priorit y of files from /home 1113 increase priority of files from /home
1059 <li>Better bug details f or infinite loop warnings 1114 <li>Better bug details for infinite loop warnings
1060 <li>Modified unread-fiel ds detector to reduce false 1115 <li>Modified unread-fields detector to reduce false
1061 positives from r eflective fields 1116 positives from reflective fields
1062 <li>build.xml "classes" target now builds all sources in one 1117 <li>build.xml "classes" target now builds all source s in one
1063 step 1118 step
1064 </ul> 1119 </ul>
1065 </li> 1120 </li>
1066 </ul> 1121 </ul>
1067 1122
1068 <p>Changes since version 1.2.1</p> 1123 <p>Changes since version 1.2.1</p>
1069 <ul> 1124 <ul>
1070 <li>New Detectors and Reports 1125 <li>New Detectors and Reports
1071 <ul> 1126 <ul>
1072 <li>SynchronizationOnSha redBuiltinConstant 1127 <li>SynchronizationOnSharedBuiltinConstant
1073 <ul> 1128 <ul>
1074 <li>DL_S YNCHRONIZATION_ON_SHARED_CONSTANT: The code 1129 <li>DL_SYNCHRONIZATION_ON_SHARED_CONSTANT: T he code
1075 synchronizes on a shared primitive constant, such as an 1130 synchronizes on a shared primitive const ant, such as an
1076 interned String. Such constants are interned and shared across 1131 interned String. Such constants are inte rned and shared across
1077 all other classes loaded by the JVM. Thus, this could be 1132 all other classes loaded by the JVM. Thu s, this could be
1078 locking on something that other code might also be locking. 1133 locking on something that other code mig ht also be locking.
1079 This could result in very strange and hard to diagnose 1134 This could result in very strange and ha rd to diagnose
1080 blocking and deadlock behavior. See <a 1135 blocking and deadlock behavior. See <a
1081 href="http://www.javalobby.org/java/forums/t96352.html">http://www.javalobby.org /java/forums/t96352.html</a> 1136 href="http://www.javalobby.org/java/foru ms/t96352.html">http://www.javalobby.org/java/forums/t96352.html</a>
1082 and <a href="http://jira.codehaus.org/browse/JETTY-352">http://jira.codehaus.org /browse/JETTY-352</a>. 1137 and <a href="http://jira.codehaus.org/br owse/JETTY-352">http://jira.codehaus.org/browse/JETTY-352</a>.
1083 1138
1084 </ul> 1139 </ul>
1085 </li> 1140 </li>
1086 <li>OverridingEqualsNotS ymmetrical 1141 <li>OverridingEqualsNotSymmetrical
1087 <ul> 1142 <ul>
1088 <li>EQ_O VERRIDING_EQUALS_NOT_SYMMETRIC: Looks for equals 1143 <li>EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC: Look s for equals
1089 methods that override equals methods in a superclass where the 1144 methods that override equals methods in a superclass where the
1090 equivalence relationship might not be symmetrical. 1145 equivalence relationship might not be sy mmetrical.
1091 </ul> 1146 </ul>
1092 </li> 1147 </li>
1093 <li>CheckTypeQualifiers 1148 <li>CheckTypeQualifiers
1094 <ul> 1149 <ul>
1095 <li>TQ_A LWAYS_VALUE_USED_WHERE_NEVER_REQUIRED: A value 1150 <li>TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRE D: A value
1096 specified as carrying a type qualifier annotation is consumed 1151 specified as carrying a type qualifier a nnotation is consumed
1097 in a location or locations requiring that the value not carry 1152 in a location or locations requiring tha t the value not carry
1098 that annotation. More precisely, a value annotated with a type 1153 that annotation. More precisely, a value annotated with a type
1099 qualifier specifying when=ALWAYS is guaranteed to reach a use 1154 qualifier specifying when=ALWAYS is guar anteed to reach a use
1100 or uses where the same type qualifier specifies when=NEVER.</li> 1155 or uses where the same type qualifier sp ecifies when=NEVER.</li>
1101 <li>TQ_N EVER_VALUE_USED_WHERE_ALWAYS_REQUIRED: A value 1156 <li>TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRE D: A value
1102 specified as not carrying a type qualifier annotation is 1157 specified as not carrying a type qualifi er annotation is
1103 guaranteed to be consumed in a location or locations requiring 1158 guaranteed to be consumed in a location or locations requiring
1104 that the value does carry that annotation. More precisely, a 1159 that the value does carry that annotatio n. More precisely, a
1105 value annotated with a type qualifier specifying when=NEVER is 1160 value annotated with a type qualifier sp ecifying when=NEVER is
1106 guaranteed to reach a use or uses where the same type 1161 guaranteed to reach a use or uses where the same type
1107 qualifier specifies when=ALWAYS.</li> 1162 qualifier specifies when=ALWAYS.</li>
1108 <li>TQ_M AYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK: A value 1163 <li>TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SIN K: A value
1109 that might not carry a type qualifier annotation reaches a use 1164 that might not carry a type qualifier an notation reaches a use
1110 which requires that annotation.</li> 1165 which requires that annotation.</li>
1111 <li>TQ_M AYBE_SOURCE_VALUE_REACHES_NEVER_SINK: A value 1166 <li>TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK : A value
1112 which might carry a type qualifier annotation reaches a use 1167 which might carry a type qualifier annot ation reaches a use
1113 which forbids values carrying that annotation.</li> 1168 which forbids values carrying that annot ation.</li>
1114 </ul> 1169 </ul>
1115 </li> 1170 </li>
1116 </ul> 1171 </ul>
1117 </li> 1172 </li>
1118 <li>New Reports (existing detectors) 1173 <li>New Reports (existing detectors)
1119 <ul> 1174 <ul>
1120 <li>FindHEmismatch 1175 <li>FindHEmismatch
1121 <ul> 1176 <ul>
1122 <li>EQ_D OESNT_OVERRIDE_EQUALS: This class extends a class 1177 <li>EQ_DOESNT_OVERRIDE_EQUALS: This class ex tends a class
1123 that defines an equals method and adds fields, but doesn't 1178 that defines an equals method and adds f ields, but doesn't
1124 define an equals method itself. Thus, equality on instances of 1179 define an equals method itself. Thus, eq uality on instances of
1125 this class will ignore the identity of the subclass and the 1180 this class will ignore the identity of t he subclass and the
1126 added fields. Be sure this is what is intended, and that you 1181 added fields. Be sure this is what is in tended, and that you
1127 don't need to override the equals method. Even if you don't 1182 don't need to override the equals method . Even if you don't
1128 need to override the equals method, consider overriding it 1183 need to override the equals method, cons ider overriding it
1129 anyway to document the fact that the equals method for the 1184 anyway to document the fact that the equ als method for the
1130 subclass just return the result of invoking super.equals(o).</li> 1185 subclass just return the result of invok ing super.equals(o).</li>
1131 </ul> 1186 </ul>
1132 </li> 1187 </li>
1133 <li>Naming 1188 <li>Naming
1134 <ul> 1189 <ul>
1135 <li>NM_W RONG_PACKAGE, NM_WRONG_PACKAGE_INTENTIONAL: The 1190 <li>NM_WRONG_PACKAGE, NM_WRONG_PACKAGE_INTEN TIONAL: The
1136 method in the subclass doesn't override a similar method in a 1191 method in the subclass doesn't override a similar method in a
1137 superclass because the type of a parameter doesn't exactly 1192 superclass because the type of a paramet er doesn't exactly
1138 match the type of the corresponding parameter in the 1193 match the type of the corresponding para meter in the
1139 superclass.</li> 1194 superclass.</li>
1140 <li>NM_S AME_SIMPLE_NAME_AS_SUPERCLASS: This class has a 1195 <li>NM_SAME_SIMPLE_NAME_AS_SUPERCLASS: This class has a
1141 simple name that is identical to that of its superclass, 1196 simple name that is identical to that of its superclass,
1142 except that its superclass is in a different package (e.g., <code>alpha.Foo</cod e> 1197 except that its superclass is in a diffe rent package (e.g., <code>alpha.Foo</code>
1143 extends <code>beta.Foo</code>). This can be exceptionally 1198 extends <code>beta.Foo</code>). This can be exceptionally
1144 confusing, create lots of situations in which you have to look 1199 confusing, create lots of situations in which you have to look
1145 at import statements to resolve references and creates many 1200 at import statements to resolve referenc es and creates many
1146 opportunities to accidently define methods that do not 1201 opportunities to accidently define metho ds that do not
1147 override methods in their superclasses. 1202 override methods in their superclasses.
1148 </li> 1203 </li>
1149 <li>NM_S AME_SIMPLE_NAME_AS_INTERFACE: This class/interface 1204 <li>NM_SAME_SIMPLE_NAME_AS_INTERFACE: This c lass/interface
1150 has a simple name that is identical to that of an 1205 has a simple name that is identical to t hat of an
1151 implemented/extended interface, except that the interface is 1206 implemented/extended interface, except t hat the interface is
1152 in a different package (e.g., <code>alpha.Foo</code> extends <code>beta.Foo</cod e>). 1207 in a different package (e.g., <code>alph a.Foo</code> extends <code>beta.Foo</code>).
1153 This can be exceptionally confusing, create lots of situations 1208 This can be exceptionally confusing, cre ate lots of situations
1154 in which you have to look at import statements to resolve 1209 in which you have to look at import stat ements to resolve
1155 references and creates many opportunities to accidently define 1210 references and creates many opportunitie s to accidently define
1156 methods that do not override methods in their superclasses. 1211 methods that do not override methods in their superclasses.
1157 </li> 1212 </li>
1158 </ul> 1213 </ul>
1159 <li>FindRefComparison 1214 <li>FindRefComparison
1160 <ul> 1215 <ul>
1161 <li>EC_U NRELATED_TYPES_USING_POINTER_EQUALITY: This method 1216 <li>EC_UNRELATED_TYPES_USING_POINTER_EQUALIT Y: This method
1162 uses using pointer equality to compare two references that 1217 uses using pointer equality to compare t wo references that
1163 seem to be of different types. The result of this comparison 1218 seem to be of different types. The resul t of this comparison
1164 will always be false at runtime.</li> 1219 will always be false at runtime.</li>
1165 </ul> 1220 </ul>
1166 </li> 1221 </li>
1167 <li>IncompatMask 1222 <li>IncompatMask
1168 <ul> 1223 <ul>
1169 <li>BIT_ SIGNED_CHECK, BIT_SIGNED_CHECK_HIGH_BIT: This 1224 <li>BIT_SIGNED_CHECK, BIT_SIGNED_CHECK_HIGH_ BIT: This
1170 method compares an expression such as <tt>((event.detail 1225 method compares an expression such as <t t>((event.detail
1171 &amp; SWT.SELECTED) &gt; 0)</tt>. Using bit arithmetic and then 1226 &amp; SWT.SELECTED) &gt; 0)</tt>. Us ing bit arithmetic and then
1172 comparing with the greater than operator can lead to 1227 comparing with the greater than operator can lead to
1173 unexpected results (of course depending on the value of 1228 unexpected results (of course depending on the value of
1174 SWT.SELECTED). If SWT.SELECTED is a negative number, this is a 1229 SWT.SELECTED). If SWT.SELECTED is a nega tive number, this is a
1175 candidate for a bug. Even when SWT.SELECTED is not negative, 1230 candidate for a bug. Even when SWT.SELEC TED is not negative,
1176 it seems good practice to use '!= 0' instead of '&gt; 0'. 1231 it seems good practice to use '!= 0' ins tead of '&gt; 0'.
1177 </li> 1232 </li>
1178 </ul> 1233 </ul>
1179 </li> 1234 </li>
1180 <li>LazyInit 1235 <li>LazyInit
1181 <ul> 1236 <ul>
1182 <li>LI_L AZY_INIT_UPDATE_STATIC: This method contains an 1237 <li>LI_LAZY_INIT_UPDATE_STATIC: This method contains an
1183 unsynchronized lazy initialization of a static field. After 1238 unsynchronized lazy initialization of a static field. After
1184 the field is set, the object stored into that location is 1239 the field is set, the object stored into that location is
1185 further accessed. The setting of the field is visible to other 1240 further accessed. The setting of the fie ld is visible to other
1186 threads as soon as it is set. If the further accesses in the 1241 threads as soon as it is set. If the fur ther accesses in the
1187 method that set the field serve to initialize the object, then 1242 method that set the field serve to initi alize the object, then
1188 you have a <em>very serious</em> multithreading bug, unless 1243 you have a <em>very serious</em> multith reading bug, unless
1189 something else prevents any other thread from accessing the 1244 something else prevents any other thread from accessing the
1190 stored object until it is fully initialized. 1245 stored object until it is fully initiali zed.
1191 </li> 1246 </li>
1192 </ul> 1247 </ul>
1193 </li> 1248 </li>
1194 <li>FindDeadLocalStores 1249 <li>FindDeadLocalStores
1195 <ul> 1250 <ul>
1196 <li>DLS_ DEAD_STORE_OF_CLASS_LITERAL: This instruction 1251 <li>DLS_DEAD_STORE_OF_CLASS_LITERAL: This in struction
1197 assigns a class literal to a variable and then never uses it. 1252 assigns a class literal to a variable an d then never uses it.
1198 <a href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">The 1253 <a href="//java.sun.com/j2se/1.5.0/compa tibility.html#literal">The
1199 behavior of this differs in Java 1.4 and in Java 5.</a> In Java 1254 behavior of this differs in Java 1.4 and in Java 5.</a> In Java
1200 1.4 and earlier, a reference to <code>Foo.class</code> would 1255 1.4 and earlier, a reference to <code>Fo o.class</code> would
1201 force the static initializer for <code>Foo</code> to be 1256 force the static initializer for <code>F oo</code> to be
1202 executed, if it has not been executed already. In Java 5 and 1257 executed, if it has not been executed al ready. In Java 5 and
1203 later, it does not. See Sun's <a 1258 later, it does not. See Sun's <a
1204 href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">article 1259 href="//java.sun.com/j2se/1.5.0/compatib ility.html#literal">article
1205 on Java SE compatibility</a> for more details and examples, and 1260 on Java SE compatibility</a> for mor e details and examples, and
1206 suggestions on how to force class initialization in Java 5. 1261 suggestions on how to force class initia lization in Java 5.
1207 </li> 1262 </li>
1208 </ul> 1263 </ul>
1209 </li> 1264 </li>
1210 <li>MethodReturnCheck 1265 <li>MethodReturnCheck
1211 <ul> 1266 <ul>
1212 <li>RV_R ETURN_VALUE_IGNORED_BAD_PRACTICE: This method 1267 <li>RV_RETURN_VALUE_IGNORED_BAD_PRACTICE: Th is method
1213 returns a value that is not checked. The return value should 1268 returns a value that is not checked. The return value should
1214 be checked since it can indication an unusual or unexpected 1269 be checked since it can indication an un usual or unexpected
1215 function execution. For example, the <code>File.delete()</code> 1270 function execution. For example, the <co de>File.delete()</code>
1216 method returns false if the file could not be successfully 1271 method returns false if the file could n ot be successfully
1217 deleted (rather than throwing an Exception). If you don't 1272 deleted (rather than throwing an Excepti on). If you don't
1218 check the result, you won't notice if the method invocation 1273 check the result, you won't notice if th e method invocation
1219 signals unexpected behavior by returning an atypical return 1274 signals unexpected behavior by returning an atypical return
1220 value. 1275 value.
1221 </li> 1276 </li>
1222 <li>RV_E XCEPTION_NOT_THROWN: This code creates an 1277 <li>RV_EXCEPTION_NOT_THROWN: This code creat es an
1223 exception (or error) object, but doesn't do anything with it. 1278 exception (or error) object, but doesn't do anything with it.
1224 </li> 1279 </li>
1225 </ul> 1280 </ul>
1226 </li> 1281 </li>
1227 </ul> 1282 </ul>
1228 </li> 1283 </li>
1229 <li>Changes to Existing Reports 1284 <li>Changes to Existing Reports
1230 <ul> 1285 <ul>
1231 <li>NS_NON_SHORT_CIRCUIT : BAD_PRACTICE -&gt; STYLE</li> 1286 <li>NS_NON_SHORT_CIRCUIT: BAD_PRACTICE -&gt; STYLE</ li>
1232 <li>NS_DANGEROUS_NON_SHO RT_CIRCUIT: CORRECTNESS -&gt; STYLE</li> 1287 <li>NS_DANGEROUS_NON_SHORT_CIRCUIT: CORRECTNESS -&gt ; STYLE</li>
1233 <li>RC_REF_COMPARISON: C ORRECTNESS -&gt; BAD_PRACTICE</li> 1288 <li>RC_REF_COMPARISON: CORRECTNESS -&gt; BAD_PRACTIC E</li>
1234 </ul> 1289 </ul>
1235 </li> 1290 </li>
1236 <li>GUI Changes 1291 <li>GUI Changes
1237 <ul> 1292 <ul>
1238 <li>Added importing and exporting of bug filters</li> 1293 <li>Added importing and exporting of bug filters</li >
1239 <li>Better handling of f ailed analysis runs</li> 1294 <li>Better handling of failed analysis runs</li>
1240 <li>Added "-look" parame ter for selecting look-and-feel</li> 1295 <li>Added "-look" parameter for selecting look-and-f eel</li>
1241 <li>Fixed incorrect pack age filtering</li> 1296 <li>Fixed incorrect package filtering</li>
1242 <li>Fixed issue where "s ynchronized" was not 1297 <li>Fixed issue where "synchronized" was not
1243 syntax-highlight ed</li> 1298 syntax-highlighted</li>
1244 </ul> 1299 </ul>
1245 </li> 1300 </li>
1246 <li>Ant-task Changes 1301 <li>Ant-task Changes
1247 <ul> 1302 <ul>
1248 <li>Refactored common an t-task code to AbstractFindBugsTask</li> 1303 <li>Refactored common ant-task code to AbstractFindB ugsTask</li>
1249 <li>Added tasks for comp uteBugHistory, convertXmlToText, 1304 <li>Added tasks for computeBugHistory, convertXmlToT ext,
1250 filterBugs, mine BugHistory, setBugDatabaseInfo</li> 1305 filterBugs, mineBugHistory, setBugDatabaseInfo</ li>
1251 </ul> 1306 </ul>
1252 </li> 1307 </li>
1253 <li>Manual 1308 <li>Manual
1254 <ul> 1309 <ul>
1255 <li>Updates to GUI secti on, including new screenshots</li> 1310 <li>Updates to GUI section, including new screenshot s</li>
1256 <li>Added description of rejarForAnalysis</li> 1311 <li>Added description of rejarForAnalysis</li>
1257 <li>Revamp of data-minin g section</li> 1312 <li>Revamp of data-mining section</li>
1258 </ul> 1313 </ul>
1259 </li> 1314 </li>
1260 <li>Other Major 1315 <li>Other Major
1261 <ul> 1316 <ul>
1262 <li>Internal restructuri ng for lower memory overhead</li> 1317 <li>Internal restructuring for lower memory overhead </li>
1263 </ul> 1318 </ul>
1264 </li> 1319 </li>
1265 <li>Other Minor 1320 <li>Other Minor
1266 <ul> 1321 <ul>
1267 <li>Fixed typo: was STCA L_STATIC_SIMPLE_DATA_FORMAT_INSTANCE 1322 <li>Fixed typo: was STCAL_STATIC_SIMPLE_DATA_FORMAT_ INSTANCE
1268 now STCAL_STATIC _SIMPLE_DATE_FORMAT_INSTANCE</li> 1323 now STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE</li >
1269 <li>-outputFile paramete r became -output</li> 1324 <li>-outputFile parameter became -output</li>
1270 <li>More sensitivity and specificity inLazyInit detector</li> 1325 <li>More sensitivity and specificity inLazyInit dete ctor</li>
1271 <li>More sensitivity and specificity in Naming detector</li> 1326 <li>More sensitivity and specificity in Naming detec tor</li>
1272 <li>More sensitivity and specificity in UnreadFields 1327 <li>More sensitivity and specificity in UnreadFields
1273 detector</li> 1328 detector</li>
1274 <li>More sensitivity in FindNullDeref detector</li> 1329 <li>More sensitivity in FindNullDeref detector</li>
1275 <li>More sensitivity in FindBadCast2 detector</li> 1330 <li>More sensitivity in FindBadCast2 detector</li>
1276 <li>More specificity in FindReturnRef detector</li> 1331 <li>More specificity in FindReturnRef detector</li>
1277 <li>Many other tweaks an d bug fixes</li> 1332 <li>Many other tweaks and bug fixes</li>
1278 </ul> 1333 </ul>
1279 </li> 1334 </li>
1280 </ul> 1335 </ul>
1281 1336
1282 <p>Changes since version 1.2.0</p> 1337 <p>Changes since version 1.2.0</p>
1283 <ul> 1338 <ul>
1284 <li>Bug fixes: 1339 <li>Bug fixes:
1285 <ul> 1340 <ul>
1286 <li><a 1341 <li><a
1287 href="http://fis heye2.cenqua.com/changelog/findbugs/?cs=8219">Fix</a> 1342 href="http://fisheye2.cenqua.com/changelog/findb ugs/?cs=8219">Fix</a>
1288 <a 1343 <a
1289 href="http://sou rceforge.net/tracker/index.php?func=detail&aid=1726946&group_id=96405&atid=61469 3">bug</a> 1344 href="http://sourceforge.net/tracker/index.php?f unc=detail&aid=1726946&group_id=96405&atid=614693">bug</a>
1290 with detectors t hat were requested to be disabled but were 1345 with detectors that were requested to be disable d but were
1291 enabled due to r equirements of other detectors.</li> 1346 enabled due to requirements of other detectors.< /li>
1292 <li>Fix bugs in incremen tal analysis within Eclipse plugin</li> 1347 <li>Fix bugs in incremental analysis within Eclipse plugin</li>
1293 <li>Fix some analysis er rors</li> 1348 <li>Fix some analysis errors</li>
1294 <li>Fix some threading b ugs in GUI2</li> 1349 <li>Fix some threading bugs in GUI2</li>
1295 <li>Report version as ve rsion when it was compiled, not when 1350 <li>Report version as version when it was compiled, not when
1296 it was run</li> 1351 it was run</li>
1297 <li>Copy analysis time s tamp when filtering or transforming 1352 <li>Copy analysis time stamp when filtering or trans forming
1298 analysis files.< /li> 1353 analysis files.</li>
1299 </ul> 1354 </ul>
1300 <li>Enabled StaticCalendarDetector</li> 1355 <li>Enabled StaticCalendarDetector</li>
1301 <li>Reworked GUI2 to use standard FindBu gs filters 1356 <li>Reworked GUI2 to use standard FindBugs filters
1302 <ul> 1357 <ul>
1303 <li>Allow a suppression filter to be stored in a project and 1358 <li>Allow a suppression filter to be stored in a pro ject and
1304 persisted to the XML representation of a project.</li> 1359 persisted to the XML representation of a project .</li>
1305 </ul> 1360 </ul>
1306 </li> 1361 </li>
1307 1362
1308 <li>Move away from old GUI2 save format (a directory 1363 <li>Move away from old GUI2 save format (a directory
1309 containing an xml file and anoth er file containing serialized 1364 containing an xml file and another file containing seria lized
1310 filters).</li> 1365 filters).</li>
1311 <li>Support/recommend use of two new fil e extensions/formats: 1366 <li>Support/recommend use of two new file extensions/formats :
1312 <dl> 1367 <dl>
1313 <dt>.fba - FindBugs Anal ysis File</dt> 1368 <dt>.fba - FindBugs Analysis File</dt>
1314 <dd>Exactly the same as an existing bug collection file 1369 <dd>Exactly the same as an existing bug collection f ile
1315 stored in XML fo rmat, but using a distinct file extension to 1370 stored in XML format, but using a distinct file extension to
1316 make it easier t o figure out which xml files contain FindBugs 1371 make it easier to figure out which xml files con tain FindBugs
1317 results.</dd> 1372 results.</dd>
1318 <dt>.fbp - FindBugs Proj ect File</dt> 1373 <dt>.fbp - FindBugs Project File</dt>
1319 <dd>Contains just the in formation needed to run FindBugs and 1374 <dd>Contains just the information needed to run Find Bugs and
1320 display the resu lts (e.g., the files to be analyzed, the 1375 display the results (e.g., the files to be analy zed, the
1321 auxiliary class path and the location of source files) 1376 auxiliary class path and the location of source files)
1322 </dl> 1377 </dl>
1323 </li> 1378 </li>
1324 </ul> 1379 </ul>
1325 <p>Changes since version 1.1.3</p> 1380 <p>Changes since version 1.1.3</p>
1326 <ul> 1381 <ul>
1327 <li>Added -xml:withAbridgedMessages opti on to generate xml 1382 <li>Added -xml:withAbridgedMessages option to generate xml
1328 containing shorter messages. The messages will be shorted by doing 1383 containing shorter messages. The messages will be shorte d by doing
1329 things like eliding package name s, and leaving off the source line 1384 things like eliding package names, and leaving off the s ource line
1330 from the LongMessage. These mess ages are appropriate if being used 1385 from the LongMessage. These messages are appropriate if being used
1331 in a context where the non-messa ge components of the bug 1386 in a context where the non-message components of the bug
1332 annotations will be used to prov ide more information (e.g., 1387 annotations will be used to provide more information (e. g.,
1333 clicking on the message for a Me thodAnnotation will display the 1388 clicking on the message for a MethodAnnotation will disp lay the
1334 source for the method). 1389 source for the method).
1335 <ul> 1390 <ul>
1336 <li>FindBugsDisplayFeatu res.setAbridgedMessages(true) can be 1391 <li>FindBugsDisplayFeatures.setAbridgedMessages(true ) can be
1337 used to generate abridged messages when FindBugs is being 1392 used to generate abridged messages when FindBugs is being
1338 accessed directl y (not via generated XML) from a GUI or IDE.</li> 1393 accessed directly (not via generated XML) from a GUI or IDE.</li>
1339 </ul> 1394 </ul>
1340 <li>In null pointer analysis, try to be better about always 1395 <li>In null pointer analysis, try to be better about always
1341 showing two locations: where it is known null and where it is 1396 showing two locations: where it is known null and where it is
1342 dereferenced. 1397 dereferenced.
1343 <li>Interprocedural analysis of which me thods return nonnull 1398 <li>Interprocedural analysis of which methods return nonnull
1344 values 1399 values
1345 <li>Use method calls to select order in which classes are 1400 <li>Use method calls to select order in which classes are
1346 analyzed, and order in which met hods are analyzed, to improve 1401 analyzed, and order in which methods are analyzed, to im prove
1347 interprocedural analysis results . 1402 interprocedural analysis results.
1348 <li>Significant improvements in memory f ootprint, memory 1403 <li>Significant improvements in memory footprint, memory
1349 allocation and CPU utilization ( 20-30% reduction in all three) 1404 allocation and CPU utilization (20-30% reduction in all three)
1350 <li>Added a project name, to provide bet ter descriptions in 1405 <li>Added a project name, to provide better descriptions in
1351 the HTML output. 1406 the HTML output.
1352 <li>Added new bug pattern: Casting to ch ar, or bit masking 1407 <li>Added new bug pattern: Casting to char, or bit masking
1353 with nonnegative value, and then checking to see if the result is 1408 with nonnegative value, and then checking to see if the result is
1354 negative. 1409 negative.
1355 <li>Stopped reporting transient fields o f classes not marked 1410 <li>Stopped reporting transient fields of classes not marked
1356 as serializable. Transient is us ed by other persistence 1411 as serializable. Transient is used by other persistence
1357 frameworks. 1412 frameworks.
1358 <li>Improvements to detector for SQL inj ection (Thanks to <a 1413 <li>Improvements to detector for SQL injection (Thanks to <a
1359 href="http://www.clock.org/~matt ">Matt Hargett</a> for his 1414 href="http://www.clock.org/~matt">Matt Hargett</a> for h is
1360 contributions 1415 contributions
1361 <li>Changed open/save options in GUI2 to not distinguish 1416 <li>Changed open/save options in GUI2 to not distinguish
1362 between FindBugs projects and sa ved FindBugs analysis results. 1417 between FindBugs projects and saved FindBugs analysis re sults.
1363 <li>Improvements to detection of serious non-short-circuit 1418 <li>Improvements to detection of serious non-short-circuit
1364 evaluation. 1419 evaluation.
1365 <li>Updated Japanese localization (thank s to Ruimo Uno) 1420 <li>Updated Japanese localization (thanks to Ruimo Uno)
1366 <li>Eclipse plugin changes: 1421 <li>Eclipse plugin changes:
1367 <ul> 1422 <ul>
1368 <li>Created Bug User Ann otations and Bug Tree Views 1423 <li>Created Bug User Annotations and Bug Tree Views
1369 <li>Use different icons for different bug priorities 1424 <li>Use different icons for different bug priorities
1370 <li>Provide more informa tion in Bug Details view 1425 <li>Provide more information in Bug Details view
1371 </ul> 1426 </ul>
1372 </ul> 1427 </ul>
1373 1428
1374 <p>Changes since version 1.1.2:</p> 1429 <p>Changes since version 1.1.2:</p>
1375 <ul> 1430 <ul>
1376 <li>Fixed broken Ant task 1431 <li>Fixed broken Ant task
1377 <li>Added running ant task to smoke test 1432 <li>Added running ant task to smoke test
1378 <li>Added validating xml and html output to smoke test 1433 <li>Added validating xml and html output to smoke test
1379 <li>Fixed some (but not all) issues with html output 1434 <li>Fixed some (but not all) issues with html output
1380 validation 1435 validation
1381 <li>Added check for x.equals(x) and x.co mpareTo(x) 1436 <li>Added check for x.equals(x) and x.compareTo(x)
1382 <li>Various bug fixes 1437 <li>Various bug fixes
1383 </ul> 1438 </ul>
1384 <p>Changes since version 1.1.1:</p> 1439 <p>Changes since version 1.1.1:</p>
1385 <ul> 1440 <ul>
1386 <li>Added check for infinite iterative l oops</li> 1441 <li>Added check for infinite iterative loops</li>
1387 <li>Added check for use of incompatible types in a collection 1442 <li>Added check for use of incompatible types in a collectio n
1388 (e.g., checking to see if a Set& lt;String&gt; contains a 1443 (e.g., checking to see if a Set&lt;String&gt; contains a
1389 StringBuffer).</li> 1444 StringBuffer).</li>
1390 <li>Added check for invocations of equal s or hashCode on a 1445 <li>Added check for invocations of equals or hashCode on a
1391 URL, which, <a 1446 URL, which, <a
1392 href="http://michaelscharf.blogs pot.com/2006/11/javaneturlequals-and-hashcode-make.html">surprising 1447 href="http://michaelscharf.blogspot.com/2006/11/javanetu rlequals-and-hashcode-make.html">surprising
1393 many people</a>, require s DNS resolution. 1448 many people</a>, requires DNS resolution.
1394 </li> 1449 </li>
1395 <li>Added check for classes that define compareTo but not 1450 <li>Added check for classes that define compareTo but not
1396 equals; such classes can exhibit some anomalous behavior (e.g., 1451 equals; such classes can exhibit some anomalous behavior (e.g.,
1397 they are treated differently by PriorityQueues in Java 5 and Java 1452 they are treated differently by PriorityQueues in Java 5 and Java
1398 6).</li> 1453 6).</li>
1399 <li>Added a check for useless self opera tions (e.g., x &lt; x 1454 <li>Added a check for useless self operations (e.g., x &lt; x
1400 or x ^ x).</li> 1455 or x ^ x).</li>
1401 <li>Fixed a data race that could cause t he GUI to fail on 1456 <li>Fixed a data race that could cause the GUI to fail on
1402 startup</li> 1457 startup</li>
1403 <li>Partial internationalization of the new GUI</li> 1458 <li>Partial internationalization of the new GUI</li>
1404 <li>Fix bug in "Redo analysis" option of new GUI</li> 1459 <li>Fix bug in "Redo analysis" option of new GUI</li>
1405 <li>Tuning to reduce false positives</li > 1460 <li>Tuning to reduce false positives</li>
1406 <li>Fixed a bug in null pointer analysis that was generating 1461 <li>Fixed a bug in null pointer analysis that was generating
1407 false positive null pointer warn ings on exception paths. Fixing 1462 false positive null pointer warnings on exception paths. Fixing
1408 this bug eliminates about 1/4 of the warnings on null pointer 1463 this bug eliminates about 1/4 of the warnings on null po inter
1409 exceptions on exception paths.</ li> 1464 exceptions on exception paths.</li>
1410 <li>Fixed a bug in the processing of phi nodes for fields in 1465 <li>Fixed a bug in the processing of phi nodes for fields in
1411 the null pointer analysis</li> 1466 the null pointer analysis</li>
1412 <li>Applied contributed patch that provi des more quick fixes 1467 <li>Applied contributed patch that provides more quick fixes
1413 in Eclipse plugin.</li> 1468 in Eclipse plugin.</li>
1414 <li>Fixed a number of bugs in the Eclips e auto update sites, 1469 <li>Fixed a number of bugs in the Eclipse auto update sites,
1415 and in the way date qualifiers w ere being used in the Eclipse 1470 and in the way date qualifiers were being used in the Ec lipse
1416 plugin. You may need to manually disable your existing version of 1471 plugin. You may need to manually disable your existing v ersion of
1417 the plugin and download the 1.1. 2 from the update site to get the 1472 the plugin and download the 1.1.2 from the update site t o get the
1418 automatic update function workin g correctly. The Eclipse update 1473 automatic update function working correctly. The Eclipse update
1419 sites are described at <a 1474 sites are described at <a
1420 href="http://findbugs.cs.umd.edu /eclipse/">http://findbugs.cs.umd.edu/eclipse/</a>. 1475 href="http://findbugs.cs.umd.edu/eclipse/">http://findbu gs.cs.umd.edu/eclipse/</a>.
1421 1476
1422 </li> 1477 </li>
1423 <li>Fixed progress bar in Eclipse plugin </li> 1478 <li>Fixed progress bar in Eclipse plugin</li>
1424 <li>A number of other bug fixes.</li> 1479 <li>A number of other bug fixes.</li>
1425 </ul> 1480 </ul>
1426 1481
1427 <p>Changes since version 1.1.0:</p> 1482 <p>Changes since version 1.1.0:</p>
1428 <ul> 1483 <ul>
1429 <li>less scanning of classes not on the analysis path (This 1484 <li>less scanning of classes not on the analysis path (This
1430 was causing some performance pro blems.)</li> 1485 was causing some performance problems.)</li>
1431 <li>no unread field warnings for fields annotated with 1486 <li>no unread field warnings for fields annotated with
1432 javax.persistent or javax.ejb3</ li> 1487 javax.persistent or javax.ejb3</li>
1433 <li>Eclipse plugin 1488 <li>Eclipse plugin
1434 <ul> 1489 <ul>
1435 <li>bug annotation info displayed in Bug Details tab</li> 1490 <li>bug annotation info displayed in Bug Details tab </li>
1436 <li>.fbwarnings data fil e now stored in .metadata (not in 1491 <li>.fbwarnings data file now stored in .metadata (n ot in
1437 the project itse lf)</li> 1492 the project itself)</li>
1438 </ul> 1493 </ul>
1439 </li> 1494 </li>
1440 <li>new SE_BAD_FIELD_INNER_CLASS pattern </li> 1495 <li>new SE_BAD_FIELD_INNER_CLASS pattern</li>
1441 <li>updates to Japanese translation (rui mo)</li> 1496 <li>updates to Japanese translation (ruimo)</li>
1442 <li>fix some internal slashed/dotted pat h confusion</li> 1497 <li>fix some internal slashed/dotted path confusion</li>
1443 <li>other minor improvements</li> 1498 <li>other minor improvements</li>
1444 </ul> 1499 </ul>
1445 1500
1446 <p>Changes since version 1.0.0:</p> 1501 <p>Changes since version 1.0.0:</p>
1447 1502
1448 <ul> 1503 <ul>
1449 <li>Overall, the change from FindBugs 1. 0.0 to FindBugs 1.1.0 1504 <li>Overall, the change from FindBugs 1.0.0 to FindBugs 1.1. 0
1450 has been a big change. We've don e a lot of work in a lot of areas, 1505 has been a big change. We've done a lot of work in a lot of areas,
1451 and aren't even going to try to enumerate all the changes.</li> 1506 and aren't even going to try to enumerate all the change s.</li>
1452 <li>We spent a lot of time reviewing the results generated by 1507 <li>We spent a lot of time reviewing the results generated b y
1453 FindBugs for open source and com mercial code bases, and made a 1508 FindBugs for open source and commercial code bases, and made a
1454 number of changes, small and lar ge, to minimize the number of 1509 number of changes, small and large, to minimize the numb er of
1455 false positives. Our primary foc us for this was warnings reported 1510 false positives. Our primary focus for this was warnings reported
1456 as high and medium priority corr ectness warnings. Our internal 1511 as high and medium priority correctness warnings. Our in ternal
1457 evaluation is that we produce ve ry few high/medium priority 1512 evaluation is that we produce very few high/medium prior ity
1458 correctness warnings where the a nalysis is actually wrong, and 1513 correctness warnings where the analysis is actually wron g, and
1459 that more than 75% of the high/m edium priority correctness 1514 that more than 75% of the high/medium priority correctne ss
1460 warnings correspond to real codi ng defects that need addressing in 1515 warnings correspond to real coding defects that need add ressing in
1461 the source code. The remaining 2 5% are largely cases such as a 1516 the source code. The remaining 25% are largely cases suc h as a
1462 branch or statement that if take n would lead to an error, but in 1517 branch or statement that if taken would lead to an error , but in
1463 fact is a dead branch or stateme nt that can never be taken. Such 1518 fact is a dead branch or statement that can never be tak en. Such
1464 coding is confusing and hard to maintain, so it should arguably be 1519 coding is confusing and hard to maintain, so it should a rguably be
1465 fixed, but it is unlikely to act ually result in an error during 1520 fixed, but it is unlikely to actually result in an error during
1466 execution. Thus, some might clas sify those warnings as false 1521 execution. Thus, some might classify those warnings as f alse
1467 positives.</li> 1522 positives.</li>
1468 <li>We've substantially improved the ana lysis for errors that 1523 <li>We've substantially improved the analysis for errors tha t
1469 could result in null pointer der eferences. Overall, our experience 1524 could result in null pointer dereferences. Overall, our experience
1470 has been that these changes have roughly doubled the number of 1525 has been that these changes have roughly doubled the num ber of
1471 null pointer errors we detect, w ithout increasing the number of 1526 null pointer errors we detect, without increasing the nu mber of
1472 false positives (in fact, our fa lse positive rate has gone down). 1527 false positives (in fact, our false positive rate has go ne down).
1473 The improvements are due to four factors: 1528 The improvements are due to four factors:
1474 <ul> 1529 <ul>
1475 <li>By default, we now d o some interprocedural analysis to 1530 <li>By default, we now do some interprocedural analy sis to
1476 determine method s that unconditionally dereference their 1531 determine methods that unconditionally dereferen ce their
1477 parameters.</li> 1532 parameters.</li>
1478 <li>FindBugs also comes with a model of which JDK methods 1533 <li>FindBugs also comes with a model of which JDK me thods
1479 unconditionally dereference their parameters.</li> 1534 unconditionally dereference their parameters.</l i>
1480 <li>We do limited tracki ng of fields, so that we can detect 1535 <li>We do limited tracking of fields, so that we can detect
1481 null values stor ed in fields that lead to exceptions.</li> 1536 null values stored in fields that lead to except ions.</li>
1482 <li>We implemented a new analysis technique to find 1537 <li>We implemented a new analysis technique to find
1483 guaranteed deref erences. Consider the following example: <pre>public int f(Object x, boolean b) { 1538 guaranteed dereferences. Consider the following example: <pre>public int f(Object x, boolean b) {
1484 int result = 0; 1539 int result = 0;
1485 if (x == null) result++; 1540 if (x == null) result++;
1486 else result--; 1541 else result--;
1487 // at this point, we know x is null on a simple path 1542 // at this point, we know x is null on a simple path
1488 if (b) { 1543 if (b) {
1489 // at this point, x is only null on a complex path 1544 // at this point, x is only null on a complex path
1490 // we don't know if the path in which x is null and b is true is feasible 1545 // we don't know if the path in which x is null and b is true is feasible
1491 return result + x.hashCode(); 1546 return result + x.hashCode();
1492 } 1547 }
1493 else { 1548 else {
1494 // at this point, x is only null on a complex path 1549 // at this point, x is only null on a complex path
1495 // we don't know if the path in which x is null and b is false is feasible 1550 // we don't know if the path in which x is null and b is false is feasible
1496 return result - x.hashCode(); 1551 return result - x.hashCode();
1497 } 1552 }
1498 </pre> 1553 </pre>
1499 1554
1500 <p> 1555 <p>
1501 FindBugs 1.0 used forward dataflow analysis to determine 1556 FindBugs 1.0 used forward dataflow analysis to determine
1502 whether each value is definitely null, null on a simple path, 1557 whether each value is definitely null, null on a simple path,
1503 possible null on a complex path, or definitely nonnull. Thus, 1558 possible null on a complex path, or definite ly nonnull. Thus,
1504 at the s tatement where 1559 at the statement where
1505 <code> r esult </code> 1560 <code> result </code>
1506 is decre mented, we know that 1561 is decremented, we know that
1507 <code> x </code> 1562 <code> x </code>
1508 is defin itely null, and at the point before 1563 is definitely null, and at the point before
1509 <code> i f (b) </code> 1564 <code> if (b) </code>
1510 , we kno w that 1565 , we know that
1511 <code> x </code> 1566 <code> x </code>
1512 is null on a simple path. If 1567 is null on a simple path. If
1513 <code> x </code> 1568 <code> x </code>
1514 were to be dereferenced here, we would generate a warning, 1569 were to be dereferenced here, we would gener ate a warning,
1515 because if the else branch of the 1570 because if the else branch of the
1516 <code> i f (x == null) </code> 1571 <code> if (x == null) </code>
1517 were eve r taken, a null pointer exception would result. 1572 were ever taken, a null pointer exception wo uld result.
1518 </p> 1573 </p>
1519 1574
1520 <p> 1575 <p>
1521 However, in both the then and else branches of the 1576 However, in both the then and else branches of the
1522 <code> i f (b) </code> 1577 <code> if (b) </code>
1523 statemen t, 1578 statement,
1524 <code> x </code> 1579 <code> x </code>
1525 is only null on a complex path that may be infeasible. It might 1580 is only null on a complex path that may be i nfeasible. It might
1526 be that the program logic is such that if 1581 be that the program logic is such that if
1527 <code> x </code> 1582 <code> x </code>
1528 is null, then 1583 is null, then
1529 <code> b </code> 1584 <code> b </code>
1530 is never true, so generating a warning about the dereference in 1585 is never true, so generating a warning about the dereference in
1531 the then clause might be a false positive. We could try to 1586 the then clause might be a false positive. W e could try to
1532 analyze the program to determine whether it is possible for 1587 analyze the program to determine whether it is possible for
1533 <code> x </code> 1588 <code> x </code>
1534 to be nu ll and 1589 to be null and
1535 <code> b </code> 1590 <code> b </code>
1536 to be tr ue, but that can be a hard analysis problem. 1591 to be true, but that can be a hard analysis problem.
1537 </p> 1592 </p>
1538 1593
1539 <p> 1594 <p>
1540 However, 1595 However,
1541 <code> x </code> 1596 <code> x </code>
1542 is deref erenced in both the then <em>and</em> else branches of 1597 is dereferenced in both the then <em>and</em > else branches of
1543 the 1598 the
1544 <code> i f (b) </code> 1599 <code> if (b) </code>
1545 statemen t. So at the point immediately before 1600 statement. So at the point immediately befor e
1546 <code> i f (b) </code> 1601 <code> if (b) </code>
1547 , we kno w that 1602 , we know that
1548 <code> x </code> 1603 <code> x </code>
1549 is null on a simple path <em>and</em> that 1604 is null on a simple path <em>and</em> that
1550 <code> x </code> 1605 <code> x </code>
1551 is guara nteed to be dereferenced on all paths from this point 1606 is guaranteed to be dereferenced on all path s from this point
1552 forward. FindBugs 1.1 performs a backwards data flow analysis 1607 forward. FindBugs 1.1 performs a backwards d ata flow analysis
1553 to deter mine the values that are guaranteed to be dereferenced, 1608 to determine the values that are guaranteed to be dereferenced,
1554 and will generate a warning in this case. 1609 and will generate a warning in this case.
1555 </p> 1610 </p>
1556 </li> 1611 </li>
1557 </ul> 1612 </ul>
1558 <p> 1613 <p>
1559 The following screen sho t of our new GUI shows an example of this 1614 The following screen shot of our new GUI shows an ex ample of this
1560 analysis, as well as sho wing off our new GUI and points out a 1615 analysis, as well as showing off our new GUI and poi nts out a
1561 limitation of our curren t plugins for Eclipse and NetBeans. The 1616 limitation of our current plugins for Eclipse and Ne tBeans. The
1562 screen shot shows a null pointer bug in HelpDisplay.java. The 1617 screen shot shows a null pointer bug in HelpDisplay. java. The
1563 test for 1618 test for
1564 <code> href!=null </code > 1619 <code> href!=null </code>
1565 on line 78 suggests that 1620 on line 78 suggests that
1566 <code> href </code> 1621 <code> href </code>
1567 could be null. If it is, then 1622 could be null. If it is, then
1568 <code> href </code> 1623 <code> href </code>
1569 will be dereferenced on either line 87 or on line 90, generating 1624 will be dereferenced on either line 87 or on line 90 , generating
1570 a NPE. Note that our ana lysis here also understands that passing 1625 a NPE. Note that our analysis here also understands that passing
1571 <code> href </code> 1626 <code> href </code>
1572 to 1627 to
1573 <code> URLEncoder.encode </code> 1628 <code> URLEncoder.encode </code>
1574 will deference it, and t hus treats line 87 as a dereference, even 1629 will deference it, and thus treats line 87 as a dere ference, even
1575 though 1630 though
1576 <code> href </code> 1631 <code> href </code>
1577 is not actually derefere nced at that line. Within our new GUI, 1632 is not actually dereferenced at that line. Within ou r new GUI,
1578 all of these locations a re highlighted and listed in the summary 1633 all of these locations are highlighted and listed in the summary
1579 panel. In the original G UI (and in HTML output) we list all of 1634 panel. In the original GUI (and in HTML output) we l ist all of
1580 the locations, but only the primary location is highlighted by 1635 the locations, but only the primary location is high lighted by
1581 the original GUI. In the Eclipse and NetBeans plugins, only the 1636 the original GUI. In the Eclipse and NetBeans plugin s, only the
1582 primary location is disp layed; fixing this is on our todo list 1637 primary location is displayed; fixing this is on our todo list
1583 (contributions welcome). 1638 (contributions welcome).
1584 </p> 1639 </p>
1585 <p> 1640 <p>
1586 <img src="guaranteedDere ference.png" alt=""> 1641 <img src="guaranteedDereference.png" alt="">
1587 1642
1588 1643
1589 </p> 1644 </p>
1590 1645
1591 </li> 1646 </li>
1592 <li>Preliminary support for detectors us ing the frameworks 1647 <li>Preliminary support for detectors using the frameworks
1593 other than BCEL, such as the <a href="http://asm.objectweb.org/">ASM</a> 1648 other than BCEL, such as the <a href="http://asm.objectw eb.org/">ASM</a>
1594 bytecode framework. You may expe riment with writing ASM-based 1649 bytecode framework. You may experiment with writing ASM- based
1595 detectors, but beware the API ma y still change (which could 1650 detectors, but beware the API may still change (which co uld
1596 possibly also affect BCEL-based detectors). In general, we've 1651 possibly also affect BCEL-based detectors). In general, we've
1597 started trying to move away from a deep dependence on BCEL, but 1652 started trying to move away from a deep dependence on BC EL, but
1598 that change is only partially co mplete. Probably best to just 1653 that change is only partially complete. Probably best to just
1599 avoid this until we complete mor e work on this. This change is 1654 avoid this until we complete more work on this. This cha nge is
1600 only visible to FindBugs plugin developers, and shouldn't be 1655 only visible to FindBugs plugin developers, and shouldn' t be
1601 visible to FindBugs users. 1656 visible to FindBugs users.
1602 </li> 1657 </li>
1603 <li> 1658 <li>
1604 <p>Bug categories (CORRECTNESS, MT_CORRECTNESS, etc.) are no 1659 <p>Bug categories (CORRECTNESS, MT_CORRECTNESS, etc.) ar e no
1605 longer hard-coded, but r ather defined in xml files associated 1660 longer hard-coded, but rather defined in xml files a ssociated
1606 with plugins, including the core plugin which defines the 1661 with plugins, including the core plugin which define s the
1607 standard categories. Thi rd-party plugins can define their own 1662 standard categories. Third-party plugins can define their own
1608 categories.</p> 1663 categories.</p>
1609 </li> 1664 </li>
1610 <li> 1665 <li>
1611 <p>Several bug patterns have bee n moved from CORRECTNESS and 1666 <p>Several bug patterns have been moved from CORRECTNESS and
1612 STYLE into a new categor y, BAD_PRACTICE. The English localization 1667 STYLE into a new category, BAD_PRACTICE. The English localization
1613 of STYLE has changed fro m "Style" to "Dodgy."</p> 1668 of STYLE has changed from "Style" to "Dodgy."</p>
1614 <p>In general, we've worked very hard to limit CORRECTNESS 1669 <p>In general, we've worked very hard to limit CORRECTNE SS
1615 bugs to be real programm ing errors and sins of commission. We 1670 bugs to be real programming errors and sins of commi ssion. We
1616 have reclassified as BAD _PRACTICE a number of bad design 1671 have reclassified as BAD_PRACTICE a number of bad de sign
1617 practices that result in overly fragile code, such as defining an 1672 practices that result in overly fragile code, such a s defining an
1618 equals method that doesn 't accept null or defining class with a 1673 equals method that doesn't accept null or defining c lass with a
1619 equals method that inher its hashCode from class Object.</p> 1674 equals method that inherits hashCode from class Obje ct.</p>
1620 <p>In general, our guidelines fo r deciding whether a bug 1675 <p>In general, our guidelines for deciding whether a bug
1621 should be classified as CORRECTNESS, BAD_PRACTICE or STYLE are:</p> 1676 should be classified as CORRECTNESS, BAD_PRACTICE or STYLE are:</p>
1622 <dl> 1677 <dl>
1623 <dt>CORRECTNESS</dt> 1678 <dt>CORRECTNESS</dt>
1624 <dd>A problem that we ca n recognize with high confidence and 1679 <dd>A problem that we can recognize with high confid ence and
1625 is an issue that we believe almost all developers would want to 1680 is an issue that we believe almost all developer s would want to
1626 examine and addr ess. We recommend that software teams review all 1681 examine and address. We recommend that software teams review all
1627 high and medium priority warnings in their entire code base.</dd> 1682 high and medium priority warnings in their entir e code base.</dd>
1628 <dt>BAD_PRACTICE</dt> 1683 <dt>BAD_PRACTICE</dt>
1629 <dd>A problem that we ca n recognize with high confidence and 1684 <dd>A problem that we can recognize with high confid ence and
1630 represents a cle ar violation of recommended and standard coding 1685 represents a clear violation of recommended and standard coding
1631 practice. We bel ieve each software team should decide which bad 1686 practice. We believe each software team should d ecide which bad
1632 practices identi fied by FindBugs it wants to prohibit in the 1687 practices identified by FindBugs it wants to pro hibit in the
1633 team's coding st andard, and take action to remedy violations of 1688 team's coding standard, and take action to remed y violations of
1634 those coding sta ndards.</dd> 1689 those coding standards.</dd>
1635 <dt>STYLE</dt> 1690 <dt>STYLE</dt>
1636 <dd>These are places whe re something strange or dodgy is 1691 <dd>These are places where something strange or dodg y is
1637 going on, such a s a dead store to a local variable. Typically, 1692 going on, such as a dead store to a local variab le. Typically,
1638 less than half o f these represent actionable programming 1693 less than half of these represent actionable pro gramming
1639 defects. Reviewi ng these warnings in any code under active 1694 defects. Reviewing these warnings in any code un der active
1640 development is p robably a good idea, but reviewing all such 1695 development is probably a good idea, but reviewi ng all such
1641 warnings in your entire code base might be appropriate only in 1696 warnings in your entire code base might be appro priate only in
1642 some situations. Individual or team programming styles can 1697 some situations. Individual or team programming styles can
1643 substantially in fluence the effectiveness of each of these 1698 substantially influence the effectiveness of eac h of these
1644 warnings (e.g., you might have a coding practice or style in 1699 warnings (e.g., you might have a coding practice or style in
1645 your group that confuses one of the detectors into generating a 1700 your group that confuses one of the detectors in to generating a
1646 lot of STYLE war nings); you will likely want to selectively 1701 lot of STYLE warnings); you will likely want to selectively
1647 suppress or repo rt the STYLE warnings that are effective for 1702 suppress or report the STYLE warnings that are e ffective for
1648 your group.</dd> 1703 your group.</dd>
1649 </dl> 1704 </dl>
1650 </li> 1705 </li>
1651 <li>Released a preliminary version of a new GUI (known 1706 <li>Released a preliminary version of a new GUI (known
1652 internally as GUI2 -- not very c reative, huh?)</li> 1707 internally as GUI2 -- not very creative, huh?)</li>
1653 <li>Provided standard ways to mark user designations of bug 1708 <li>Provided standard ways to mark user designations of bug
1654 warnings (e.g., as NOT_A_BUG or SHOULD_FIX). The internal logic 1709 warnings (e.g., as NOT_A_BUG or SHOULD_FIX). The interna l logic
1655 now records this, it is represen ted in the XML file, and GUI2 1710 now records this, it is represented in the XML file, and GUI2
1656 allows the designations to be ap plied (along with free-form user 1711 allows the designations to be applied (along with free-f orm user
1657 annotations about each warning). The user designations and 1712 annotations about each warning). The user designations a nd
1658 annotations are not yet supporte d by the Eclipse plugin, but we 1713 annotations are not yet supported by the Eclipse plugin, but we
1659 clearly want to support it in Ec lipse shortly.</li> 1714 clearly want to support it in Eclipse shortly.</li>
1660 <li>Added a check for a bad comparison w ith a signed byte with 1715 <li>Added a check for a bad comparison with a signed byte wi th
1661 a value not in the range -128..1 27. For example: <pre>boolean find200(byte b[]) { 1716 a value not in the range -128..127. For example: <pre>bo olean find200(byte b[]) {
1662 for(int i = 0; i &lt; b.length; i++) if (b[i] == 200) return i; 1717 for(int i = 0; i &lt; b.length; i++) if (b[i] == 200) return i;
1663 return -1; 1718 return -1;
1664 } 1719 }
1665 </pre> 1720 </pre>
1666 » » » » » </li> 1721 </li>
1667 » » » » » <li>Added a checking for testing if a va lue is equal to 1722 <li>Added a checking for testing if a value is equal to
1668 » » » » » » Double.NaN (no value is equal to NaN, not even NaN).</li> 1723 Double.NaN (no value is equal to NaN, not even NaN).</li >
1669 » » » » » <li>Added a check for using a class with an equals method but 1724 <li>Added a check for using a class with an equals method bu t
1670 » » » » » » no hashCode method in a hashed d ata structure.</li> 1725 no hashCode method in a hashed data structure.</li>
1671 » » » » » <li>Added check for uncallable method of an anonymous inner 1726 <li>Added check for uncallable method of an anonymous inner
1672 » » » » » » class. For example, in the follo wing code, it is impossible to 1727 class. For example, in the following code, it is impossi ble to
1673 » » » » » » invoke the initalValue method (b ecause the name is misspelled and 1728 invoke the initalValue method (because the name is missp elled and
1674 » » » » » » as a result is doesn't override a method in ThreadLocal). <pre>private static ThreadLocal serialNum = new Thread Local() { 1729 as a result is doesn't override a method in ThreadLocal) . <pre>private static ThreadLocal serialNum = new ThreadLocal() {
1675 protected synchronized Object initalValue() { 1730 protected synchronized Object initalValue() {
1676 return new Integer(nextSerialNum++); 1731 return new Integer(nextSerialNum++);
1677 } 1732 }
1678 }; 1733 };
1679 </pre> 1734 </pre>
1680 </li> 1735 </li>
1681 <li>Added check for a dead local store c aused by a switch 1736 <li>Added check for a dead local store caused by a switch
1682 statement fall through</li> 1737 statement fall through</li>
1683 <li>Added check for computing the absolu te value of a random 1738 <li>Added check for computing the absolute value of a random
1684 32 bit integer or of a hashcode. This is broken because <code> 1739 32 bit integer or of a hashcode. This is broken because <code>
1685 Math.abs(Integer.MIN_VAL UE) == Integer.MIN_VALUE </code> , and thus 1740 Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE </c ode> , and thus
1686 result of calling Math.abs, whic h is expected to be nonnegative, 1741 result of calling Math.abs, which is expected to be nonn egative,
1687 will in fact be negative one tim e out of 2 <sup> 32 </sup> , which 1742 will in fact be negative one time out of 2 <sup> 32 </su p> , which
1688 will invariably be the time your boss is demoing the software to 1743 will invariably be the time your boss is demoing the sof tware to
1689 your customers. 1744 your customers.
1690 1745
1691 </li> 1746 </li>
1692 <li>More careful resolution of inherited methods and fields. 1747 <li>More careful resolution of inherited methods and fields.
1693 Some of the shortcuts we were ta king in FindBugs 1.0.0 were 1748 Some of the shortcuts we were taking in FindBugs 1.0.0 w ere
1694 leading to inaccurate results, a nd it was fairly easy to address 1749 leading to inaccurate results, and it was fairly easy to address
1695 this by making the analysis more accurate.</li> 1750 this by making the analysis more accurate.</li>
1696 <li>Overall, analysis times are about 1. 6 times longer in 1751 <li>Overall, analysis times are about 1.6 times longer in
1697 FindBugs 1.1.0 than in FindBugs 1.0.0. This is because we have 1752 FindBugs 1.1.0 than in FindBugs 1.0.0. This is because w e have
1698 enabled substantial additional a nalysis at the default effort 1753 enabled substantial additional analysis at the default e ffort
1699 level (the actual analysis engin e is significantly faster than in 1754 level (the actual analysis engine is significantly faste r than in
1700 FindBugs 1.0). On a recent AMD A thlon processor, analyzing 1755 FindBugs 1.0). On a recent AMD Athlon processor, analyzi ng
1701 JDK1.6.0 (about 1 million lines of code) requires about 15 minutes 1756 JDK1.6.0 (about 1 million lines of code) requires about 15 minutes
1702 of wall clock time.</li> 1757 of wall clock time.</li>
1703 <li>Provided class and script (printClas s) to print classfile 1758 <li>Provided class and script (printClass) to print classfil e
1704 in the human readable format pro duced by BCEL</li> 1759 in the human readable format produced by BCEL</li>
1705 <li>Provided -findSource option to setBu gDatabaseInfo</li> 1760 <li>Provided -findSource option to setBugDatabaseInfo</li>
1706 </ul> 1761 </ul>
1707 1762
1708 1763
1709 <p>Changes since version 0.9.7:</p> 1764 <p>Changes since version 0.9.7:</p>
1710 1765
1711 <ul> 1766 <ul>
1712 <li>fix ObjectTypeFactory bug that was s uppressing some bugs</li> 1767 <li>fix ObjectTypeFactory bug that was suppressing some bugs </li>
1713 <li>opcode stack may determine definite zeros on some paths</li> 1768 <li>opcode stack may determine definite zeros on some paths< /li>
1714 <li>opcode stack can track some constant string concatenations 1769 <li>opcode stack can track some constant string concatenatio ns
1715 (dbrosius)</li> 1770 (dbrosius)</li>
1716 <li>default effort performs iterative op code analysis (but min 1771 <li>default effort performs iterative opcode analysis (but m in
1717 effort does not)</li> 1772 effort does not)</li>
1718 <li>default heap size upped to 384m</li> 1773 <li>default heap size upped to 384m</li>
1719 <li>schema for XML output available: bug collection.xsd</li> 1774 <li>schema for XML output available: bugcollection.xsd</li>
1720 <li>fixed some internal confusion betwee n dotted and slashed 1775 <li>fixed some internal confusion between dotted and slashed
1721 class names</li> 1776 class names</li>
1722 <li>New detectors 1777 <li>New detectors
1723 <ul> 1778 <ul>
1724 <li>CheckImmutableAnnota tion.java: checks JCIP annotations</li> 1779 <li>CheckImmutableAnnotation.java: checks JCIP annot ations</li>
1725 </ul> 1780 </ul>
1726 </li> 1781 </li>
1727 <li>Updated detectors 1782 <li>Updated detectors
1728 <ul> 1783 <ul>
1729 <li>BadRegEx.java: under stands Pattern.LITERAL, warns about 1784 <li>BadRegEx.java: understands Pattern.LITERAL, warn s about
1730 "."</li> 1785 "."</li>
1731 <li>FindUnreleasedLock.j ava: fewer false positives</li> 1786 <li>FindUnreleasedLock.java: fewer false positives</ li>
1732 <li>DumbMethods.java: ch eck for vacuous comparisons to 1787 <li>DumbMethods.java: check for vacuous comparisons to
1733 MAX_INTEGER or M IN_INTEGER, fix bugs detecting 1788 MAX_INTEGER or MIN_INTEGER, fix bugs detecting
1734 DM_NEXTINT_VIA_N EXTDOUBLE</li> 1789 DM_NEXTINT_VIA_NEXTDOUBLE</li>
1735 <li>FindPuzzlers.java: d etect <tt>n%2==1</tt>, detect 1790 <li>FindPuzzlers.java: detect <tt>n%2==1</tt>, detec t
1736 toString() on ar ray types 1791 toString() on array types
1737 </li> 1792 </li>
1738 <li>FindInconsistentSync 2.java: detects IS_FIELD_NOT_GUARDED 1793 <li>FindInconsistentSync2.java: detects IS_FIELD_NOT _GUARDED
1739 </li> 1794 </li>
1740 <li>MethodReturnCheck.ja va: add check for discarded newly 1795 <li>MethodReturnCheck.java: add check for discarded newly
1741 constructed valu es, increase priority of some ignored 1796 constructed values, increase priority of some ig nored
1742 constructed exce ptions, better handling of bytecode compiled by 1797 constructed exceptions, better handling of bytec ode compiled by
1743 Eclipse</li> 1798 Eclipse</li>
1744 <li>FindEmptySynchronize dBlock.java: better handling of 1799 <li>FindEmptySynchronizedBlock.java: better handling of
1745 bytecode compile d by Eclipse</li> 1800 bytecode compiled by Eclipse</li>
1746 <li>DoInsideDoPrivileged .java: warn if call to setAccessible 1801 <li>DoInsideDoPrivileged.java: warn if call to setAc cessible
1747 isn't in doPrivi ledged, don't report private methods</li> 1802 isn't in doPriviledged, don't report private met hods</li>
1748 <li>LoadOfKnownNullValue .java: fix bug that was reporting 1803 <li>LoadOfKnownNullValue.java: fix bug that was repo rting
1749 false positives on <code> finally </code> blocks 1804 false positives on <code> finally </code> blocks
1750 </li> 1805 </li>
1751 <li>CheckReturnAnnotatio nDatabase.java: better checks for 1806 <li>CheckReturnAnnotationDatabase.java: better check s for
1752 unstarted thread s</li> 1807 unstarted threads</li>
1753 <li>ConfusionBetweenInhe ritedAndOuterMethod.java: fewer 1808 <li>ConfusionBetweenInheritedAndOuterMethod.java: fe wer
1754 false positives, fixed a package-handling bug</li> 1809 false positives, fixed a package-handling bug</l i>
1755 <li>BadResultSetAccess.j ava: separate bug pattern for 1810 <li>BadResultSetAccess.java: separate bug pattern fo r
1756 PreparedStatemen ts, <code> BRZA </code> category folded into <code> 1811 PreparedStatements, <code> BRZA </code> category folded into <code>
1757 SQL </co de> category 1812 SQL </code> category
1758 </li> 1813 </li>
1759 <li>FindDeadLocalStores. java, FindBadCast2.java, 1814 <li>FindDeadLocalStores.java, FindBadCast2.java,
1760 DumbMethods.java , RuntimeExceptionCapture.java: coalesce similar 1815 DumbMethods.java, RuntimeExceptionCapture.java: coalesce similar
1761 bugs within a me thod into a single bug instance with multiple 1816 bugs within a method into a single bug instance with multiple
1762 source lines</li > 1817 source lines</li>
1763 </ul> 1818 </ul>
1764 </li> 1819 </li>
1765 <li>Eclipse plugin 1820 <li>Eclipse plugin
1766 <ul> 1821 <ul>
1767 <li>plugin ID changed fr om <tt>de.tobject.findbugs</tt> to <tt>edu.umd.cs.findbugs.plugin.eclipse</tt> 1822 <li>plugin ID changed from <tt>de.tobject.findbugs</ tt> to <tt>edu.umd.cs.findbugs.plugin.eclipse</tt>
1768 </li> 1823 </li>
1769 <li>support for findbugs eclipse auto-update site</li> 1824 <li>support for findbugs eclipse auto-update site</l i>
1770 </ul> 1825 </ul>
1771 </li> 1826 </li>
1772 <li>Updated test case files 1827 <li>Updated test case files
1773 <ul> 1828 <ul>
1774 <li>BadRegEx.java</li> 1829 <li>BadRegEx.java</li>
1775 <li>JSR166.java</li> 1830 <li>JSR166.java</li>
1776 <li>ConcurrentModificati onBug.java</li> 1831 <li>ConcurrentModificationBug.java</li>
1777 <li>DeadStore.java</li> 1832 <li>DeadStore.java</li>
1778 <li>InstanceOf.java</li> 1833 <li>InstanceOf.java</li>
1779 <li>LoadKnownNull.java</ li> 1834 <li>LoadKnownNull.java</li>
1780 <li>NeedsToCheckReturnVa lue.java</li> 1835 <li>NeedsToCheckReturnValue.java</li>
1781 <li>BadResultSetAccessTe st.java</li> 1836 <li>BadResultSetAccessTest.java</li>
1782 <li>DeadStore.java</li> 1837 <li>DeadStore.java</li>
1783 <li>TestNonNull2.java</l i> 1838 <li>TestNonNull2.java</li>
1784 <li>TestImmutable.java</ li> 1839 <li>TestImmutable.java</li>
1785 <li>TestGuardedBy.java</ li> 1840 <li>TestGuardedBy.java</li>
1786 <li>BadRandomInt.java</l i> 1841 <li>BadRandomInt.java</li>
1787 <li>six test cases added to new <code> TigerTraps </code> 1842 <li>six test cases added to new <code> TigerTraps </ code>
1788 directory 1843 directory
1789 </li> 1844 </li>
1790 </ul> 1845 </ul>
1791 </li> 1846 </li>
1792 <li>fix bug that was generating duplicat e uids</li> 1847 <li>fix bug that was generating duplicate uids</li>
1793 <li>fix bug with <code> -onlyAnalyze som e.package.* </code> on 1848 <li>fix bug with <code> -onlyAnalyze some.package.* </code> on
1794 jdk1.4 1849 jdk1.4
1795 </li> 1850 </li>
1796 <li>fix regression bug in 1851 <li>fix regression bug in
1797 DismantleByteCode.getRefConstant Operand()</li> 1852 DismantleByteCode.getRefConstantOperand()</li>
1798 <li>fix some minor bugs with the Swing G UI</li> 1853 <li>fix some minor bugs with the Swing GUI</li>
1799 <li>reordered some bugInstances so that source line 1854 <li>reordered some bugInstances so that source line
1800 annotations come last</li> 1855 annotations come last</li>
1801 <li>removed references to unused java sy stem properties</li> 1856 <li>removed references to unused java system properties</li>
1802 <li>French translation updates (David Co tton)</li> 1857 <li>French translation updates (David Cotton)</li>
1803 <li>Japanese translation updates (Hanai Shisei)</li> 1858 <li>Japanese translation updates (Hanai Shisei)</li>
1804 <li>content cleanup for findbugs.xml and messages.xml</li> 1859 <li>content cleanup for findbugs.xml and messages.xml</li>
1805 <li>references to cvs hostname updated t o 1860 <li>references to cvs hostname updated to
1806 findbugs.cvs.sourceforge.net</li > 1861 findbugs.cvs.sourceforge.net</li>
1807 <li>documented xdoc output options, new 1862 <li>documented xdoc output options, new
1808 mineBugHistory/computeBugHistory options</li> 1863 mineBugHistory/computeBugHistory options</li>
1809 </ul> 1864 </ul>
1810 1865
1811 <p>Changes since version 0.9.6:</p> 1866 <p>Changes since version 0.9.6:</p>
1812 1867
1813 <ul> 1868 <ul>
1814 <li>performance improvements</li> 1869 <li>performance improvements</li>
1815 <li>ObjectType instances are cached to r educe memory footprint 1870 <li>ObjectType instances are cached to reduce memory footpri nt
1816 </li> 1871 </li>
1817 <li>for performance and memory reasons s tateless detectors are 1872 <li>for performance and memory reasons stateless detectors a re
1818 no longer cloned, must clear the ir own state between .class files 1873 no longer cloned, must clear their own state between .cl ass files
1819 </li> 1874 </li>
1820 <li>fixed bug in bytecode-set lookup for methods (was causing 1875 <li>fixed bug in bytecode-set lookup for methods (was causin g
1821 bad results for IS2, perhaps oth ers)</li> 1876 bad results for IS2, perhaps others)</li>
1822 <li>fix some OpcodeStack bugs with integ er and long 1877 <li>fix some OpcodeStack bugs with integer and long
1823 operations, perform iterative an alysis when effort is <tt>max</tt> 1878 operations, perform iterative analysis when effort is <t t>max</tt>
1824 </li> 1879 </li>
1825 <li>HTML output includes LongMessage tex t again (regression in 1880 <li>HTML output includes LongMessage text again (regression in
1826 0.95 - 0.96)</li> 1881 0.95 - 0.96)</li>
1827 <li>New detectors 1882 <li>New detectors
1828 <ul> 1883 <ul>
1829 <li>CalledMethods.java: builds a list of invoked methods for 1884 <li>CalledMethods.java: builds a list of invoked met hods for
1830 other detectors to consult (non-reporting)</li> 1885 other detectors to consult (non-reporting)</li>
1831 <li>UncallableMethodOfAn onymousClass.java: detect anonymous 1886 <li>UncallableMethodOfAnonymousClass.java: detect an onymous
1832 inner classes th at define methods that are probably intended to 1887 inner classes that define methods that are proba bly intended to
1833 but do not overr ide methods in a superclass.</li> 1888 but do not override methods in a superclass.</li >
1834 </ul> 1889 </ul>
1835 </li> 1890 </li>
1836 <li>Updated detectors 1891 <li>Updated detectors
1837 <ul> 1892 <ul>
1838 <li>FindFieldSelfAssignm ent.java: recognize separate fields 1893 <li>FindFieldSelfAssignment.java: recognize separate fields
1839 with the same na me (one from superclass)</li> 1894 with the same name (one from superclass)</li>
1840 <li>FindLocalSelfAssignm ent2.java: handles backward branches 1895 <li>FindLocalSelfAssignment2.java: handles backward branches
1841 better (Dave Bro sius)</li> 1896 better (Dave Brosius)</li>
1842 <li>FindBadCast2.java: B C_NULL_INSTANCEOF changed to 1897 <li>FindBadCast2.java: BC_NULL_INSTANCEOF changed to
1843 NP_NULL_INSTANCE OF</li> 1898 NP_NULL_INSTANCEOF</li>
1844 <li>FindPuzzlers.java: e liminate false positive on setDate() 1899 <li>FindPuzzlers.java: eliminate false positive on s etDate()
1845 (Dave Brosius)</ li> 1900 (Dave Brosius)</li>
1846 </ul> 1901 </ul>
1847 </li> 1902 </li>
1848 <li>Eclipse plugin 1903 <li>Eclipse plugin
1849 <ul> 1904 <ul>
1850 <li>fix serious threadin g bug</li> 1905 <li>fix serious threading bug</li>
1851 <li>preferences for Filt ers and effort (Peter Hendriks)</li> 1906 <li>preferences for Filters and effort (Peter Hendri ks)</li>
1852 <li>French localization (David Cotton)</li> 1907 <li>French localization (David Cotton)</li>
1853 <li>fix bug when reporti ng inner classes (Peter Friese)</li> 1908 <li>fix bug when reporting inner classes (Peter Frie se)</li>
1854 </ul> 1909 </ul>
1855 </li> 1910 </li>
1856 <li>Updated test case files 1911 <li>Updated test case files
1857 <ul> 1912 <ul>
1858 <li>Mwn.java (Carl Burke /Dave Brosius)</li> 1913 <li>Mwn.java (Carl Burke/Dave Brosius)</li>
1859 <li>DumbMethodInvocation s.java (Anto paul/Dave Brosius)</li> 1914 <li>DumbMethodInvocations.java (Anto paul/Dave Brosi us)</li>
1860 <!--sic--> 1915 <!--sic-->
1861 </ul> 1916 </ul>
1862 </li> 1917 </li>
1863 <li>XML output includes garbage collecti on duration</li> 1918 <li>XML output includes garbage collection duration</li>
1864 <li>French messages updated (David Cotto n)</li> 1919 <li>French messages updated (David Cotton)</li>
1865 <li>Swing GUI shows file name after Load Bugs command</li> 1920 <li>Swing GUI shows file name after Load Bugs command</li>
1866 <li>Ant task to launch the findbugs fram e (Mark McKay)</li> 1921 <li>Ant task to launch the findbugs frame (Mark McKay)</li>
1867 <li>miscellaneous code cleanup</li> 1922 <li>miscellaneous code cleanup</li>
1868 </ul> 1923 </ul>
1869 1924
1870 <p>Changes since version 0.9.5:</p> 1925 <p>Changes since version 0.9.5:</p>
1871 1926
1872 <ul> 1927 <ul>
1873 <li>Updated detectors 1928 <li>Updated detectors
1874 <ul> 1929 <ul>
1875 <li>FindNullDeref.java: respect NonNull and CheckForNull 1930 <li>FindNullDeref.java: respect NonNull and CheckFor Null
1876 field annotation s</li> 1931 field annotations</li>
1877 <li>SerializableIdiom.ja va: detect non-private readObject 1932 <li>SerializableIdiom.java: detect non-private readO bject
1878 and writeObject methods</li> 1933 and writeObject methods</li>
1879 <li>FindRefComparison.ja va: smarter array comparison 1934 <li>FindRefComparison.java: smarter array comparison
1880 detection</li> 1935 detection</li>
1881 <li>IsNullValueAnalysis. java: detect <tt>null 1936 <li>IsNullValueAnalysis.java: detect <tt>null
1882 instance of</tt> 1937 instanceof</tt>
1883 </li> 1938 </li>
1884 <li>FindLocalSelfAssignm ent2.java: suppress some false 1939 <li>FindLocalSelfAssignment2.java: suppress some fal se
1885 positives (Dave Brosius)</li> 1940 positives (Dave Brosius)</li>
1886 <li>FindUnreleasedLock.j ava: don't waste time processing 1941 <li>FindUnreleasedLock.java: don't waste time proces sing
1887 classes that don 't refer to java.util.concurrent.locks</li> 1942 classes that don't refer to java.util.concurrent .locks</li>
1888 <li>MutableStaticFields. java: report the source line (Dave 1943 <li>MutableStaticFields.java: report the source line (Dave
1889 Brosius)</li> 1944 Brosius)</li>
1890 <li>SwitchFallthrough.ja va: better handling of System.exit() 1945 <li>SwitchFallthrough.java: better handling of Syste m.exit()
1891 (Dave Brosius)</ li> 1946 (Dave Brosius)</li>
1892 <li>MultithreadedInstanc eAccess.java: better handling of 1947 <li>MultithreadedInstanceAccess.java: better handlin g of
1893 Servlet.init() ( Dave Brosius)</li> 1948 Servlet.init() (Dave Brosius)</li>
1894 <li>ConfusionBetweenInhe ritedAndOuterMethod.java: now 1949 <li>ConfusionBetweenInheritedAndOuterMethod.java: no w
1895 enabled</li> 1950 enabled</li>
1896 </ul> 1951 </ul>
1897 </li> 1952 </li>
1898 <li>Eclipse plugin 1953 <li>Eclipse plugin
1899 <ul> 1954 <ul>
1900 <li>background processin g (Peter Friese)</li> 1955 <li>background processing (Peter Friese)</li>
1901 <li>internationalization , Japanese localization (Takashi 1956 <li>internationalization, Japanese localization (Tak ashi
1902 Okamoto)</li> 1957 Okamoto)</li>
1903 </ul> 1958 </ul>
1904 </li> 1959 </li>
1905 <li>findbugs <tt>-onlyAnalyze</tt> optio n now works on windows 1960 <li>findbugs <tt>-onlyAnalyze</tt> option now works on windo ws
1906 platforms 1961 platforms
1907 </li> 1962 </li>
1908 <li>mineBugHistory <tt>-noTabs</tt> opti on for better 1963 <li>mineBugHistory <tt>-noTabs</tt> option for better
1909 alignment of output columns 1964 alignment of output columns
1910 </li> 1965 </li>
1911 <li>filterBugs <tt>-fixed</tt> option (a lso: will now 1966 <li>filterBugs <tt>-fixed</tt> option (also: will now
1912 recognize the most recent versio n string) 1967 recognize the most recent version string)
1913 </li> 1968 </li>
1914 <li>XML output includes running time and memory usage data</li> 1969 <li>XML output includes running time and memory usage data</ li>
1915 <li>miscellaneous minor corrections to t he manual</li> 1970 <li>miscellaneous minor corrections to the manual</li>
1916 <li>better bytecode analysis of the <tt> iinc</tt> instruction 1971 <li>better bytecode analysis of the <tt>iinc</tt> instructio n
1917 </li> 1972 </li>
1918 <li>fix bug in null pointer analysis</li > 1973 <li>fix bug in null pointer analysis</li>
1919 <li>improved catch block heuristics</li> 1974 <li>improved catch block heuristics</li>
1920 <li>some type analysis tweaks</li> 1975 <li>some type analysis tweaks</li>
1921 <li>Bug priority changes 1976 <li>Bug priority changes
1922 <ul> 1977 <ul>
1923 <li>DumbMethodInvocation s.java: decrease priority of 1978 <li>DumbMethodInvocations.java: decrease priority of
1924 hard-coded <tt>/ tmp</tt> filenames 1979 hard-coded <tt>/tmp</tt> filenames
1925 </li> 1980 </li>
1926 <li>ComparatorIdiom.java : decrease priority of 1981 <li>ComparatorIdiom.java: decrease priority of
1927 non-serializable anonymous comparators</li> 1982 non-serializable anonymous comparators</li>
1928 <li>FindSqlInjection.jav a: decrease priority of appending a 1983 <li>FindSqlInjection.java: decrease priority of appe nding a
1929 constant or a st atic</li> 1984 constant or a static</li>
1930 </ul> 1985 </ul>
1931 </li> 1986 </li>
1932 <li>Updated bug explanations 1987 <li>Updated bug explanations
1933 <ul> 1988 <ul>
1934 <li>NM_VERY_CONFUSING (D ave Brosius)</li> 1989 <li>NM_VERY_CONFUSING (Dave Brosius)</li>
1935 </ul> 1990 </ul>
1936 </li> 1991 </li>
1937 <li>Updated test case files 1992 <li>Updated test case files
1938 <ul> 1993 <ul>
1939 <li>BadStoreOfNonSeriali zableObject.java</li> 1994 <li>BadStoreOfNonSerializableObject.java</li>
1940 <li>BadRandomInt.java</l i> 1995 <li>BadRandomInt.java</li>
1941 <li>TestFieldAnnotations .java</li> 1996 <li>TestFieldAnnotations.java</li>
1942 <li>UseInitCause.java</l i> 1997 <li>UseInitCause.java</li>
1943 <li>SqlInjection.java</l i> 1998 <li>SqlInjection.java</li>
1944 <li>ArrayEquality.java</ li> 1999 <li>ArrayEquality.java</li>
1945 <li>BadIntegerOperations .java</li> 2000 <li>BadIntegerOperations.java</li>
1946 <li>Pilhuhn.java</li> 2001 <li>Pilhuhn.java</li>
1947 <li>InstanceOf.java</li> 2002 <li>InstanceOf.java</li>
1948 <li>SwitchFallthrough.ja va (Dave Brosius)</li> 2003 <li>SwitchFallthrough.java (Dave Brosius)</li>
1949 </ul> 2004 </ul>
1950 </li> 2005 </li>
1951 <li>fix URL decoding bug when running un der Java Web Start 2006 <li>fix URL decoding bug when running under Java Web Start
1952 (Dave Brosius)</li> 2007 (Dave Brosius)</li>
1953 <li>distribution includes <tt>project.xm l</tt> file for 2008 <li>distribution includes <tt>project.xml</tt> file for
1954 NetBeans 2009 NetBeans
1955 </li> 2010 </li>
1956 </ul> 2011 </ul>
1957 2012
1958 <p>Changes since version 0.9.4:</p> 2013 <p>Changes since version 0.9.4:</p>
1959 <ul> 2014 <ul>
1960 <li>New detectors 2015 <li>New detectors
1961 <ul> 2016 <ul>
1962 <li>VarArgsProblems.java </li> 2017 <li>VarArgsProblems.java</li>
1963 <li>FindSqlInjection.jav a: now enabled</li> 2018 <li>FindSqlInjection.java: now enabled</li>
1964 <li>ComparatorIdiom.java : comparators usually implement 2019 <li>ComparatorIdiom.java: comparators usually implem ent
1965 serializable</li > 2020 serializable</li>
1966 <li>Naming.java: detect methods not overridden due to 2021 <li>Naming.java: detect methods not overridden due t o
1967 eponymously type d args from different packages</li> 2022 eponymously typed args from different packages</ li>
1968 </ul> 2023 </ul>
1969 </li> 2024 </li>
1970 <li>Updated detectors 2025 <li>Updated detectors
1971 <ul> 2026 <ul>
1972 <li>SwitchFallthrough.ja va: surpress some false positives</li> 2027 <li>SwitchFallthrough.java: surpress some false posi tives</li>
1973 <li>DuplicateBranches.ja va: surpress some false positives</li> 2028 <li>DuplicateBranches.java: surpress some false posi tives</li>
1974 <li>IteratorIdioms.java: surpress some false positives</li> 2029 <li>IteratorIdioms.java: surpress some false positiv es</li>
1975 <li>FindHEmismatch.java: surpress some false positives</li> 2030 <li>FindHEmismatch.java: surpress some false positiv es</li>
1976 <li>QuestionableBooleanA ssignment.java: finds more cases of 2031 <li>QuestionableBooleanAssignment.java: finds more c ases of
1977 <tt>if (b=true)< /tt> ilk 2032 <tt>if (b=true)</tt> ilk
1978 </li> 2033 </li>
1979 <li>DumbMethods.java: de tect int remainder by 1, delayed gc 2034 <li>DumbMethods.java: detect int remainder by 1, del ayed gc
1980 errors</li> 2035 errors</li>
1981 <li>SerializableIdiom.ja va: detect store of nonserializable 2036 <li>SerializableIdiom.java: detect store of nonseria lizable
1982 object into fiel d of serializable class</li> 2037 object into field of serializable class</li>
1983 <li>FindNullDeref.java: fix potential exception</li> 2038 <li>FindNullDeref.java: fix potential exception</li>
1984 <li>IsNullValue.java: fi x potential exception</li> 2039 <li>IsNullValue.java: fix potential exception</li>
1985 <li>MultithreadedInstanc eAccess.java: fix potential 2040 <li>MultithreadedInstanceAccess.java: fix potential
1986 exception</li> 2041 exception</li>
1987 <li>PreferZeroLengthArra ys.java: flag the method, not the 2042 <li>PreferZeroLengthArrays.java: flag the method, no t the
1988 line</li> 2043 line</li>
1989 </ul> 2044 </ul>
1990 </li> 2045 </li>
1991 <li>Remove some inadvertent dependencies on JDK 1.5</li> 2046 <li>Remove some inadvertent dependencies on JDK 1.5</li>
1992 <li>Sort order should be more consistent </li> 2047 <li>Sort order should be more consistent</li>
1993 <li>XML output changes 2048 <li>XML output changes
1994 <ul> 2049 <ul>
1995 <li>Option to sort XML b ug output</li> 2050 <li>Option to sort XML bug output</li>
1996 <li>Now contains instanc e IDs</li> 2051 <li>Now contains instance IDs</li>
1997 <li>uid no longer missin g (was causing problems with fancy 2052 <li>uid no longer missing (was causing problems with fancy
1998 HTML output)</li > 2053 HTML output)</li>
1999 <li>Typo fixed</li> 2054 <li>Typo fixed</li>
2000 </ul> 2055 </ul>
2001 </li> 2056 </li>
2002 <li>Internal changes to track source fil es, <tt>-sourceInfo</tt> 2057 <li>Internal changes to track source files, <tt>-sourceInfo< /tt>
2003 option 2058 option
2004 </li> 2059 </li>
2005 <li>Bug matching: first try exact bug pa ttern matching, option 2060 <li>Bug matching: first try exact bug pattern matching, opti on
2006 to compare priorities, option to disable package moves</li> 2061 to compare priorities, option to disable package moves</ li>
2007 <li>Architecture documentation in <tt>de sign/architecture</tt> 2062 <li>Architecture documentation in <tt>design/architecture</t t>
2008 </li> 2063 </li>
2009 <li>Test cases move into their own CVS p roject</li> 2064 <li>Test cases move into their own CVS project</li>
2010 <li>Don't report warnings that occur out side the analyzed 2065 <li>Don't report warnings that occur outside the analyzed
2011 classes</li> 2066 classes</li>
2012 <li>Fixes to the build.xml files</li> 2067 <li>Fixes to the build.xml files</li>
2013 <li>Better handling of @CheckReturnValue and @CheckForNull 2068 <li>Better handling of @CheckReturnValue and @CheckForNull
2014 annotations (also, some addition al methods searched for check 2069 annotations (also, some additional methods searched for check
2015 return value and check for null) </li> 2070 return value and check for null)</li>
2016 <li>Fixed some stream-closing bugs (one by <tt>z-fb-user</tt>/Dave 2071 <li>Fixed some stream-closing bugs (one by <tt>z-fb-user</tt >/Dave
2017 Brosius) 2072 Brosius)
2018 </li> 2073 </li>
2019 <li>Bug priority changes 2074 <li>Bug priority changes
2020 <ul> 2075 <ul>
2021 <li>increase priority of ignoring return value of 2076 <li>increase priority of ignoring return value of
2022 java.sql.Connect ion methods</li> 2077 java.sql.Connection methods</li>
2023 <li>increase priority of comparing classes like Integer 2078 <li>increase priority of comparing classes like Inte ger
2024 using <tt>==</tt > 2079 using <tt>==</tt>
2025 </li> 2080 </li>
2026 <li>decrease priority of IT_NO_SUCH_ELEMENT if we see any 2081 <li>decrease priority of IT_NO_SUCH_ELEMENT if we se e any
2027 call to <tt>next ()</tt> 2082 call to <tt>next()</tt>
2028 </li> 2083 </li>
2029 <li>tweak priority of NM _METHOD_CONSTRUCTOR_CONFUSION</li> 2084 <li>tweak priority of NM_METHOD_CONSTRUCTOR_CONFUSIO N</li>
2030 <li>decrease priority of RV_RETURN_VALUE_IGNORED for an 2085 <li>decrease priority of RV_RETURN_VALUE_IGNORED for an
2031 inherited annota tion that doesn't return same type as class</li> 2086 inherited annotation that doesn't return same ty pe as class</li>
2032 </ul> 2087 </ul>
2033 </li> 2088 </li>
2034 <li>Updated bug explanations 2089 <li>Updated bug explanations
2035 <ul> 2090 <ul>
2036 <li>RCN_REDUNDANT_NULLCH ECK_WOULD_HAVE_BEEN_A_NPE</li> 2091 <li>RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE</l i>
2037 <li>DP_CREATE_CLASSLOADE R_INSIDE_DO_PRIVILEGED</li> 2092 <li>DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED</li>
2038 <li>IMA_INEFFICIENT_MEMB ER_ACCESS (Dave Brosius)</li> 2093 <li>IMA_INEFFICIENT_MEMBER_ACCESS (Dave Brosius)</li >
2039 <li>some Japanese improv ements to messages_ja.xml ( <tt>ruimo</tt>) 2094 <li>some Japanese improvements to messages_ja.xml ( <tt>ruimo</tt>)
2040 </li> 2095 </li>
2041 <li>some German improvem ents to findbugs_de.properties (Dave 2096 <li>some German improvements to findbugs_de.properti es (Dave
2042 Brosius, <tt>dvh olten</tt>) 2097 Brosius, <tt>dvholten</tt>)
2043 </li> 2098 </li>
2044 </ul> 2099 </ul>
2045 </li> 2100 </li>
2046 <li>Updated test case files 2101 <li>Updated test case files
2047 <ul> 2102 <ul>
2048 <li>BadIntegerOperations .java</li> 2103 <li>BadIntegerOperations.java</li>
2049 <li>SecondKaboom.java</l i> 2104 <li>SecondKaboom.java</li>
2050 <li>OpenDatabase.java (D ave Brosius)</li> 2105 <li>OpenDatabase.java (Dave Brosius)</li>
2051 <li>FindOpenStream.java (Dave Brosius)</li> 2106 <li>FindOpenStream.java (Dave Brosius)</li>
2052 <li>BadRandomInt.java</l i> 2107 <li>BadRandomInt.java</li>
2053 </ul> 2108 </ul>
2054 </li> 2109 </li>
2055 <li>Source-lines info maintained for met hods (handy for 2110 <li>Source-lines info maintained for methods (handy for
2056 abstract and native methods)</li > 2111 abstract and native methods)</li>
2057 <li>Remove surrounding opcodes from sour ce line annotations</li> 2112 <li>Remove surrounding opcodes from source line annotations< /li>
2058 <li>Better error when can't read file</l i> 2113 <li>Better error when can't read file</li>
2059 <li>Swing GUI: removed console pane from FindBugsFrame, fix 2114 <li>Swing GUI: removed console pane from FindBugsFrame, fix
2060 missing classes bug</li> 2115 missing classes bug</li>
2061 <li>Fixes to OpcodeStack.java</li> 2116 <li>Fixes to OpcodeStack.java</li>
2062 <li>Detectors may attach a custom value to an OpcodeStack.Item 2117 <li>Detectors may attach a custom value to an OpcodeStack.It em
2063 (Dave Brosius)</li> 2118 (Dave Brosius)</li>
2064 <li>Filter.java: ability to add text mes sages to XML output, 2119 <li>Filter.java: ability to add text messages to XML output,
2065 fix bug with <tt>-withMessages</ tt> 2120 fix bug with <tt>-withMessages</tt>
2066 </li> 2121 </li>
2067 <li>SourceInfoMap supports ranges of sou rce lines</li> 2122 <li>SourceInfoMap supports ranges of source lines</li>
2068 <li>Ant task supports the <tt>timestampN ow</tt> attribute 2123 <li>Ant task supports the <tt>timestampNow</tt> attribute
2069 </li> 2124 </li>
2070 </ul> 2125 </ul>
2071 2126
2072 <p>Changes since version 0.9.3:</p> 2127 <p>Changes since version 0.9.3:</p>
2073 <ul> 2128 <ul>
2074 <li>Substantial rework of datamining cod e</li> 2129 <li>Substantial rework of datamining code</li>
2075 <li>Removed bogus warnings about await o n things other than 2130 <li>Removed bogus warnings about await on things other than
2076 Condition not being in a loop</l i> 2131 Condition not being in a loop</li>
2077 <li>Fixed bug in OpcodeStack handling of dup2 of long/double 2132 <li>Fixed bug in OpcodeStack handling of dup2 of long/double
2078 values</li> 2133 values</li>
2079 <li>Don't report array types as missing classes</li> 2134 <li>Don't report array types as missing classes</li>
2080 <li>Adjustment of some warnings on ignor ed return values</li> 2135 <li>Adjustment of some warnings on ignored return values</li >
2081 <li>Added thread safety annotations from Java Concurrency in 2136 <li>Added thread safety annotations from Java Concurrency in
2082 Practice (no detectors written f or these yet)</li> 2137 Practice (no detectors written for these yet)</li>
2083 <li>Added annotation for methods that, i f overridden, should 2138 <li>Added annotation for methods that, if overridden, should
2084 be invoked by overriding methods via a call to super</li> 2139 be invoked by overriding methods via a call to super</li >
2085 <li>Updated -html:fancy.xsl (Etienne Gir audy)</li> 2140 <li>Updated -html:fancy.xsl (Etienne Giraudy)</li>
2086 </ul> 2141 </ul>
2087 2142
2088 <p>Note: there was no version 0.9.2</p> 2143 <p>Note: there was no version 0.9.2</p>
2089 2144
2090 <p>Changes since version 0.9.1:</p> 2145 <p>Changes since version 0.9.1:</p>
2091 <ul> 2146 <ul>
2092 <!-- New detectors --> 2147 <!-- New detectors -->
2093 <li>Embellish USM to find abstract metho ds that implement an 2148 <li>Embellish USM to find abstract methods that implement an
2094 interface method (Dave Brosius)< /li> 2149 interface method (Dave Brosius)</li>
2095 <li>New detector to find stores of liter al booleans inside if 2150 <li>New detector to find stores of literal booleans inside i f
2096 or while expressions (Dave Brosi us)</li> 2151 or while expressions (Dave Brosius)</li>
2097 <li>New style detector to find final cla sses that declare 2152 <li>New style detector to find final classes that declare
2098 protected fields (Dave Brosius)< /li> 2153 protected fields (Dave Brosius)</li>
2099 <li>New detector to find subclass method s that simply forward, 2154 <li>New detector to find subclass methods that simply forwar d,
2100 verbatim, to the super class (Da ve Brosius)</li> 2155 verbatim, to the super class (Dave Brosius)</li>
2101 <li>Detector to find instances where cod e is attempting to 2156 <li>Detector to find instances where code is attempting to
2102 write an object out via an imple mentation of DataOutput, but the 2157 write an object out via an implementation of DataOutput, but the
2103 object is not guaranteed to be S erializable (Jon Christiansen, 2158 object is not guaranteed to be Serializable (Jon Christi ansen,
2104 Bill Pugh)</li> 2159 Bill Pugh)</li>
2105 2160
2106 <!-- Feature enhancements --> 2161 <!-- Feature enhancements -->
2107 <li>Large (35%) analysis speedup (Bill P ugh)</li> 2162 <li>Large (35%) analysis speedup (Bill Pugh)</li>
2108 <li>Add line numbers to Swing GUI code p anel (Dave Brosius)</li> 2163 <li>Add line numbers to Swing GUI code panel (Dave Brosius)< /li>
2109 <li>Added effort options to Swing GUI (D ave Brosius)</li> 2164 <li>Added effort options to Swing GUI (Dave Brosius)</li>
2110 <li>Add ability to specify bugs file to open from command line 2165 <li>Add ability to specify bugs file to open from command li ne
2111 for GUI version, through -loadbu gs (Phillip Martin)</li> 2166 for GUI version, through -loadbugs (Phillip Martin)</li>
2112 <li>New stylesheet for generating HTML: use option <tt>-html:plain.xsl</tt> 2167 <li>New stylesheet for generating HTML: use option <tt>-html :plain.xsl</tt>
2113 (Chris Nappin) 2168 (Chris Nappin)
2114 </li> 2169 </li>
2115 <li>New stylesheet for generating HTML: use option <tt>-html:fancy.xsl</tt> 2170 <li>New stylesheet for generating HTML: use option <tt>-html :fancy.xsl</tt>
2116 (Etienne Giraudy) 2171 (Etienne Giraudy)
2117 </li> 2172 </li>
2118 <li>Updated Japanese bug message transla tions (Shisei Hanai)</li> 2173 <li>Updated Japanese bug message translations (Shisei Hanai) </li>
2119 2174
2120 <!-- Bug fixes --> 2175 <!-- Bug fixes -->
2121 <li>XHTML compliance fixes for bug detai ls (Etienne Giraudy)</li> 2176 <li>XHTML compliance fixes for bug details (Etienne Giraudy) </li>
2122 <li>Various detector fixes (Shisei Hanai )</li> 2177 <li>Various detector fixes (Shisei Hanai)</li>
2123 <li>Fixed bugs in the project preference s dialog int the 2178 <li>Fixed bugs in the project preferences dialog int the
2124 Eclipse plugin (Takashi Okamoto, Thomas Einwaller)</li> 2179 Eclipse plugin (Takashi Okamoto, Thomas Einwaller)</li>
2125 <li>Lowered priority of analysis thread in Swing GUI (David 2180 <li>Lowered priority of analysis thread in Swing GUI (David
2126 Hovemeyer, suggested by Shisei H anai and Jeffrey W. Badorek)</li> 2181 Hovemeyer, suggested by Shisei Hanai and Jeffrey W. Bado rek)</li>
2127 <li>Fixed EclipsePlugin to correctly pic k up auxclasspath 2182 <li>Fixed EclipsePlugin to correctly pick up auxclasspath
2128 entries (Jon Christiansen)</li> 2183 entries (Jon Christiansen)</li>
2129 </ul> 2184 </ul>
2130 2185
2131 <p>Changes since version 0.9.0:</p> 2186 <p>Changes since version 0.9.0:</p>
2132 <ul> 2187 <ul>
2133 <li>Fixed dependence on JRE 1.5: all fea tures should work on 2188 <li>Fixed dependence on JRE 1.5: all features should work on
2134 JRE 1.4 again</li> 2189 JRE 1.4 again</li>
2135 <li>Fixed -effort command line option ha ndling for Swing GUI</li> 2190 <li>Fixed -effort command line option handling for Swing GUI </li>
2136 <li>Fixed conserveSpace and workHard att ributes int Ant task</li> 2191 <li>Fixed conserveSpace and workHard attributes int Ant task </li>
2137 <li>Added support for effort attribute i n Ant task</li> 2192 <li>Added support for effort attribute in Ant task</li>
2138 </ul> 2193 </ul>
2139 2194
2140 <p>Changes since version 0.8.8:</p> 2195 <p>Changes since version 0.8.8:</p>
2141 <ul> 2196 <ul>
2142 <!-- New detectors and bug patterns --> 2197 <!-- New detectors and bug patterns -->
2143 <li>XMLFactoryBypass detector to find di rect allocation of xml 2198 <li>XMLFactoryBypass detector to find direct allocation of x ml
2144 class implementations (Dave Bros ius)</li> 2199 class implementations (Dave Brosius)</li>
2145 <li>InefficientMemberAccess detector to find accesses to 2200 <li>InefficientMemberAccess detector to find accesses to
2146 owning class private members (Da ve Brosius)</li> 2201 owning class private members (Dave Brosius)</li>
2147 <li>DuplicateBranches detector checks sw itch statements too 2202 <li>DuplicateBranches detector checks switch statements too
2148 (Dave Brosius)</li> 2203 (Dave Brosius)</li>
2149 2204
2150 <!-- Feature enhancements --> 2205 <!-- Feature enhancements -->
2151 <li>FindBugs available from findbugs.sou rceforge.net as Java 2206 <li>FindBugs available from findbugs.sourceforge.net as Java
2152 Web Start application (Dave Bros ius)</li> 2207 Web Start application (Dave Brosius)</li>
2153 <li>Updated Japanese bug message transla tions (Shisei Hanai)</li> 2208 <li>Updated Japanese bug message translations (Shisei Hanai) </li>
2154 <li>Improved bug detail message for cova riant equals() (Shisei 2209 <li>Improved bug detail message for covariant equals() (Shis ei
2155 Hanai)</li> 2210 Hanai)</li>
2156 <li>Modeling of instanceof checks is now enabled by default, 2211 <li>Modeling of instanceof checks is now enabled by default,
2157 making the bad cast detector muc h more useful (Bill Pugh, David 2212 making the bad cast detector much more useful (Bill Pugh , David
2158 Hovemeyer)</li> 2213 Hovemeyer)</li>
2159 <li>Support for detector ordering constr aints in plugin 2214 <li>Support for detector ordering constraints in plugin
2160 descriptor (David Hovemeyer)</li > 2215 descriptor (David Hovemeyer)</li>
2161 <li>Simpler option to control analysis e ffort: -effort: <i>value</i>, 2216 <li>Simpler option to control analysis effort: -effort: <i>v alue</i>,
2162 where <i>value</i> is one of <co de> min </code> , <code> 2217 where <i>value</i> is one of <code> min </code> , <code>
2163 default </code> , or <co de> max </code> (David Hovemeyer) 2218 default </code> , or <code> max </code> (David Hovem eyer)
2164 </li> 2219 </li>
2165 <li>Using -effort:max, FindNullDeref che cks for null arguments 2220 <li>Using -effort:max, FindNullDeref checks for null argumen ts
2166 passed to methods which derefere nce them unconditionally (David 2221 passed to methods which dereference them unconditionally (David
2167 Hovemeyer)</li> 2222 Hovemeyer)</li>
2168 <li>FindNullDeref checks @Null and @NonN ull annotations for 2223 <li>FindNullDeref checks @Null and @NonNull annotations for
2169 parameters and return values (Da vid Hovemeyer)</li> 2224 parameters and return values (David Hovemeyer)</li>
2170 2225
2171 <!-- Bug fixes --> 2226 <!-- Bug fixes -->
2172 </ul> 2227 </ul>
2173 2228
2174 <p>Changes since version 0.8.7:</p> 2229 <p>Changes since version 0.8.7:</p>
2175 2230
2176 <ul> 2231 <ul>
2177 <!-- New detectors and bug patterns --> 2232 <!-- New detectors and bug patterns -->
2178 <li>New detector to find duplicate code in if/else statements 2233 <li>New detector to find duplicate code in if/else statement s
2179 (Dave Brosius)</li> 2234 (Dave Brosius)</li>
2180 <li>Look for calls to wait() on Conditio n objects (David 2235 <li>Look for calls to wait() on Condition objects (David
2181 Hovemeyer)</li> 2236 Hovemeyer)</li>
2182 <li>Look for java.util.concurrent.Lock o bjects not released on 2237 <li>Look for java.util.concurrent.Lock objects not released on
2183 every path out of method (David Hovemeyer)</li> 2238 every path out of method (David Hovemeyer)</li>
2184 <li>Look for calls to Thread.sleep() wit h a lock held (David 2239 <li>Look for calls to Thread.sleep() with a lock held (David
2185 Hovemeyer)</li> 2240 Hovemeyer)</li>
2186 <li>More accurate detection of impossibl e casts (Bill Pugh, 2241 <li>More accurate detection of impossible casts (Bill Pugh,
2187 David Hovemeyer)</li> 2242 David Hovemeyer)</li>
2188 2243
2189 <!-- Feature enhancements --> 2244 <!-- Feature enhancements -->
2190 <li>Saved XML now contains project stati stics (Jay Dunning)</li> 2245 <li>Saved XML now contains project statistics (Jay Dunning)< /li>
2191 <li>Filter files can select by bug patte rn type and warning 2246 <li>Filter files can select by bug pattern type and warning
2192 priority (David Hovemeyer)</li> 2247 priority (David Hovemeyer)</li>
2193 2248
2194 <!-- Bug fixes --> 2249 <!-- Bug fixes -->
2195 <li>Restored some files inadvertently om itted from previous 2250 <li>Restored some files inadvertently omitted from previous
2196 release (Rohan Lloyd, David Hove meyer)</li> 2251 release (Rohan Lloyd, David Hovemeyer)</li>
2197 <li>Make sure detectors requiring JDK 1. 5 runtime classes are 2252 <li>Make sure detectors requiring JDK 1.5 runtime classes ar e
2198 only executed if those classes a re available (David Hovemeyer)</li> 2253 only executed if those classes are available (David Hove meyer)</li>
2199 <li>Don't display analysis error dialog unless there is really 2254 <li>Don't display analysis error dialog unless there is real ly
2200 an error (David Hovemeyer)</li> 2255 an error (David Hovemeyer)</li>
2201 <li>Updated and expanded French translat ions of bug patterns 2256 <li>Updated and expanded French translations of bug patterns
2202 and Swing GUI (Olivier Parent)</ li> 2257 and Swing GUI (Olivier Parent)</li>
2203 <li>Fixed invalid character encoding in German Swing GUI 2258 <li>Fixed invalid character encoding in German Swing GUI
2204 translation (Olivier Parent)</li > 2259 translation (Olivier Parent)</li>
2205 <li>Fix locale used for date format in p roject stats (K. 2260 <li>Fix locale used for date format in project stats (K.
2206 Hashimoto)</li> 2261 Hashimoto)</li>
2207 <li>Fixed LongDescription elements in xm l:withMessages output 2262 <li>Fixed LongDescription elements in xml:withMessages outpu t
2208 format (K. Hashimoto)</li> 2263 format (K. Hashimoto)</li>
2209 </ul> 2264 </ul>
2210 2265
2211 <p>Changes since version 0.8.6:</p> 2266 <p>Changes since version 0.8.6:</p>
2212 2267
2213 <ul> 2268 <ul>
2214 <!-- new detectors --> 2269 <!-- new detectors -->
2215 <li>Extend Naming detector to look for c lasses that are named 2270 <li>Extend Naming detector to look for classes that are name d
2216 XXXException but that are not Ex ceptions (Dave Brosius)</li> 2271 XXXException but that are not Exceptions (Dave Brosius)< /li>
2217 <li>New detector to find classes that ex pose semaphores in the 2272 <li>New detector to find classes that expose semaphores in t he
2218 public implementation through th e 'this' reference. (Dave Brosius) 2273 public implementation through the 'this' reference. (Dav e Brosius)
2219 </li> 2274 </li>
2220 <li>New Style detector to find Struts Ac tion/Servlet derived 2275 <li>New Style detector to find Struts Action/Servlet derived
2221 classes that reference instance member variable not in 2276 classes that reference instance member variable not in
2222 synchronized blocks. (Dave Brosi us)</li> 2277 synchronized blocks. (Dave Brosius)</li>
2223 <li>New Style detector to find classes t hat declare 2278 <li>New Style detector to find classes that declare
2224 implementation of interfaces tha t are already implemented by super 2279 implementation of interfaces that are already implemente d by super
2225 classes (Dave Brosius)</li> 2280 classes (Dave Brosius)</li>
2226 <li>New Style detector to find circular dependencies between 2281 <li>New Style detector to find circular dependencies between
2227 classes (Dave Brosius)</li> 2282 classes (Dave Brosius)</li>
2228 <li>New Style detector to find unnecessa ry math on constants 2283 <li>New Style detector to find unnecessary math on constants
2229 (Dave Brosius)</li> 2284 (Dave Brosius)</li>
2230 <li>New detector to find equality compar isons using floating 2285 <li>New detector to find equality comparisons using floating
2231 point math (Jay Dunning)</li> 2286 point math (Jay Dunning)</li>
2232 <li>New faster detector to find local se lf assignments (Bill 2287 <li>New faster detector to find local self assignments (Bill
2233 Pugh)</li> 2288 Pugh)</li>
2234 <li>New detector to find infinite recurs ive loops (Bill Pugh) 2289 <li>New detector to find infinite recursive loops (Bill Pugh )
2235 </li> 2290 </li>
2236 <li>New detector to find for loops with an incorrect increment 2291 <li>New detector to find for loops with an incorrect increme nt
2237 (Bill Pugh)</li> 2292 (Bill Pugh)</li>
2238 <li>New detector to find suspicious uses of 2293 <li>New detector to find suspicious uses of
2239 BufferedReader.readLine() and St ring.indexOf() (Bill Pugh)</li> 2294 BufferedReader.readLine() and String.indexOf() (Bill Pug h)</li>
2240 <li>New detector to find suspicious inte ger to double casts 2295 <li>New detector to find suspicious integer to double casts
2241 (David Hovemeyer, Bill Pugh)</li > 2296 (David Hovemeyer, Bill Pugh)</li>
2242 <li>New detector to find invalid regular expression patterns 2297 <li>New detector to find invalid regular expression patterns
2243 (Bill Pugh)</li> 2298 (Bill Pugh)</li>
2244 <li>New detector to find Bloch/Gafter Ja va puzzlers (Bill 2299 <li>New detector to find Bloch/Gafter Java puzzlers (Bill
2245 Pugh)</li> 2300 Pugh)</li>
2246 2301
2247 <!-- feature enhancements --> 2302 <!-- feature enhancements -->
2248 <li>New system property to suppress repo rting of DLS based on 2303 <li>New system property to suppress reporting of DLS based o n
2249 local variable name (Glenn Boysk o)</li> 2304 local variable name (Glenn Boysko)</li>
2250 <li>Enhancements to configuration dialog in Eclipse plugin, 2305 <li>Enhancements to configuration dialog in Eclipse plugin,
2251 allow for saving enabled detecto rs in Eclipse projects (Phil 2306 allow for saving enabled detectors in Eclipse projects ( Phil
2252 Crosby)</li> 2307 Crosby)</li>
2253 <li>Sortable columns in detector dialog (Dave Brosius)</li> 2308 <li>Sortable columns in detector dialog (Dave Brosius)</li>
2254 <li>New tab in gui for showing bugs grou ped by category (Dave 2309 <li>New tab in gui for showing bugs grouped by category (Dav e
2255 Brosius)</li> 2310 Brosius)</li>
2256 <li>Improved German translation of Swing GUI (Thomas Kuehne)</li> 2311 <li>Improved German translation of Swing GUI (Thomas Kuehne) </li>
2257 <li>Improved source file reporting in Em acs output format (Len 2312 <li>Improved source file reporting in Emacs output format (L en
2258 Trigg)</li> 2313 Trigg)</li>
2259 <li>Improvements to redundant null compa rison detector (Bill 2314 <li>Improvements to redundant null comparison detector (Bill
2260 Pugh)</li> 2315 Pugh)</li>
2261 <li>Localization of run analysis and ana lysis error dialogs in 2316 <li>Localization of run analysis and analysis error dialogs in
2262 Swing GUI (K. Hashimoto)</li> 2317 Swing GUI (K. Hashimoto)</li>
2263 2318
2264 <!-- Bug fixes --> 2319 <!-- Bug fixes -->
2265 <li>Don't scan equals methods in FindHEM ismatch if code is 2320 <li>Don't scan equals methods in FindHEMismatch if code is
2266 native (Greg Bentz)</li> 2321 native (Greg Bentz)</li>
2267 <li>French translation fixes (David Cott on)</li> 2322 <li>French translation fixes (David Cotton)</li>
2268 <li>Internationalization report fixes (K . Hashimoto)</li> 2323 <li>Internationalization report fixes (K. Hashimoto)</li>
2269 <li>Japanese translations updates (SHISE I Hanai)</li> 2324 <li>Japanese translations updates (SHISEI Hanai)</li>
2270 </ul> 2325 </ul>
2271 2326
2272 <p>Changes since version 0.8.5:</p> 2327 <p>Changes since version 0.8.5:</p>
2273 <ul> 2328 <ul>
2274 <!-- new detectors --> 2329 <!-- new detectors -->
2275 <li>New detector to find catch blocks th at may inadvertently 2330 <li>New detector to find catch blocks that may inadvertently
2276 catch runtime exceptions (Brian Goetz)</li> 2331 catch runtime exceptions (Brian Goetz)</li>
2277 <li>New detector to find objects that ar e instantiated based 2332 <li>New detector to find objects that are instantiated based
2278 on classes that only have static methods and fields, using the 2333 on classes that only have static methods and fields, usi ng the
2279 synthesized constructor (Dave Br osius)</li> 2334 synthesized constructor (Dave Brosius)</li>
2280 <li>New detector to find calls to Thread .interrupted() in a 2335 <li>New detector to find calls to Thread.interrupted() in a
2281 non static context, and especial ly with non currentThread() 2336 non static context, and especially with non currentThrea d()
2282 threads (Dave Brosius)</li> 2337 threads (Dave Brosius)</li>
2283 <li>New detector to find calls to equals () methods that use 2338 <li>New detector to find calls to equals() methods that use
2284 Object's version. (Dave Brosius) </li> 2339 Object's version. (Dave Brosius)</li>
2285 <li>New detector to find Applets that ca ll methods in the 2340 <li>New detector to find Applets that call methods in the
2286 constructor refering to the Appl etStub (Dave Brosius)</li> 2341 constructor refering to the AppletStub (Dave Brosius)</l i>
2287 <li>New detector to find some cases of i nfinite recursion 2342 <li>New detector to find some cases of infinite recursion
2288 (Bill Pugh)</li> 2343 (Bill Pugh)</li>
2289 <li>New detector to find dead stores to local variables (David 2344 <li>New detector to find dead stores to local variables (Dav id
2290 Hovemeyer, Bill Pugh)</li> 2345 Hovemeyer, Bill Pugh)</li>
2291 <li>Extend Dumb Method detector for toUp perCase(), 2346 <li>Extend Dumb Method detector for toUpperCase(),
2292 toLowerCase() without a locale, new Integer(1).toString(), new 2347 toLowerCase() without a locale, new Integer(1).toString( ), new
2293 XXX().getClass(), and new Thread () without a run implementation 2348 XXX().getClass(), and new Thread() without a run impleme ntation
2294 (Dave Brosius) <!-- feature enha ncements --> 2349 (Dave Brosius) <!-- feature enhancements -->
2295 </li> 2350 </li>
2296 <li>Ant task supports "errorProperty" at tribute, which sets an 2351 <li>Ant task supports "errorProperty" attribute, which sets an
2297 Ant property to "true" if an err or occurs running FindBugs 2352 Ant property to "true" if an error occurs running FindBu gs
2298 (Michael Tamm)</li> 2353 (Michael Tamm)</li>
2299 <li>Eclipse plugin allows filtering of w arnings by bug 2354 <li>Eclipse plugin allows filtering of warnings by bug
2300 category, priority (David Hoveme yer)</li> 2355 category, priority (David Hovemeyer)</li>
2301 <li>Swing GUI allows filtering of warnin gs by bug category 2356 <li>Swing GUI allows filtering of warnings by bug category
2302 (David Hovemeyer)</li> 2357 (David Hovemeyer)</li>
2303 <li>Ability to annotate methods using Ja va 1.5 annotations 2358 <li>Ability to annotate methods using Java 1.5 annotations
2304 that suppress FindBugs warnings (Bill Pugh)</li> 2359 that suppress FindBugs warnings (Bill Pugh)</li>
2305 <li>New -adjustExperimental for lowering priority of 2360 <li>New -adjustExperimental for lowering priority of
2306 BugPatterns that are experimenta l (Dave Brosius)</li> 2361 BugPatterns that are experimental (Dave Brosius)</li>
2307 <li>Allow for command line options 'file s' using the @ symbol 2362 <li>Allow for command line options 'files' using the @ symbo l
2308 (David Hovemeyer)</li> 2363 (David Hovemeyer)</li>
2309 <li>New -adjustPriority command line opt ion to for adjusting 2364 <li>New -adjustPriority command line option to for adjusting
2310 bug priorites (David Hovemeyer)< /li> 2365 bug priorites (David Hovemeyer)</li>
2311 <li>Added an Edit menu (cut/copy/paste) to Swing GUI (Dave 2366 <li>Added an Edit menu (cut/copy/paste) to Swing GUI (Dave
2312 Brosius)</li> 2367 Brosius)</li>
2313 <li>French translation supplied (David C otton) <!-- Bug fixes --> 2368 <li>French translation supplied (David Cotton) <!-- Bug fixe s -->
2314 </li> 2369 </li>
2315 </ul> 2370 </ul>
2316 2371
2317 <p>Changes since version 0.8.4:</p> 2372 <p>Changes since version 0.8.4:</p>
2318 <ul> 2373 <ul>
2319 <!-- new detectors --> 2374 <!-- new detectors -->
2320 <li>New detector for volatile references to arrays (Bill Pugh) 2375 <li>New detector for volatile references to arrays (Bill Pug h)
2321 </li> 2376 </li>
2322 <li>New detector to find instanceof usag e where inheritance 2377 <li>New detector to find instanceof usage where inheritance
2323 can be determined statically (Da ve Brosius)</li> 2378 can be determined statically (Dave Brosius)</li>
2324 <li>New detector to find ResultSet.getXX X updateXXX calls 2379 <li>New detector to find ResultSet.getXXX updateXXX calls
2325 using index 0 (Dave Brosius)</li > 2380 using index 0 (Dave Brosius)</li>
2326 <li>New detector to find empty zip or ja r entries (Bill Pugh) 2381 <li>New detector to find empty zip or jar entries (Bill Pugh )
2327 2382
2328 <!-- feature enhancements --> 2383 <!-- feature enhancements -->
2329 </li> 2384 </li>
2330 <li>HTML output generation using built-i n XSLT stylesheet or 2385 <li>HTML output generation using built-in XSLT stylesheet or
2331 user-defined stylesheet (David H ovemeyer)</li> 2386 user-defined stylesheet (David Hovemeyer)</li>
2332 <li>Allow URLs to be specified to analyz e zip/jar files, local 2387 <li>Allow URLs to be specified to analyze zip/jar files, loc al
2333 directories, and single classfil es (David Hovemeyer)</li> 2388 directories, and single classfiles (David Hovemeyer)</li >
2334 <li>New command line option -onlyAnalyze restricts analysis to 2389 <li>New command line option -onlyAnalyze restricts analysis to
2335 selected classes and packages wi thout reducing accuracy (David 2390 selected classes and packages without reducing accuracy (David
2336 Hovemeyer)</li> 2391 Hovemeyer)</li>
2337 <li>Allow Swing GUI to show source code in jar files on 2392 <li>Allow Swing GUI to show source code in jar files on
2338 Windows systems (Dave Brosius) < !-- Bug fixes --> 2393 Windows systems (Dave Brosius) <!-- Bug fixes -->
2339 </li> 2394 </li>
2340 <li>Fix the Switch Fall Thru detector (D ave Brosius, David 2395 <li>Fix the Switch Fall Thru detector (Dave Brosius, David
2341 Hovemeyer, Bill Pugh)</li> 2396 Hovemeyer, Bill Pugh)</li>
2342 <li>MacOS GUI fixes (Rohan Lloyd)</li> 2397 <li>MacOS GUI fixes (Rohan Lloyd)</li>
2343 <li>Fix false positive in BOA in case wh ere method is 2398 <li>Fix false positive in BOA in case where method is
2344 correctly and 'incorrectly' over ridden (Dave Brosius)</li> 2399 correctly and 'incorrectly' overridden (Dave Brosius)</l i>
2345 <li>Fixed memory blowup when analyzing m ethods which access a 2400 <li>Fixed memory blowup when analyzing methods which access a
2346 large number of fields (David Ho vemeyer)</li> 2401 large number of fields (David Hovemeyer)</li>
2347 </ul> 2402 </ul>
2348 2403
2349 <p>Changes since version 0.8.3:</p> 2404 <p>Changes since version 0.8.3:</p>
2350 <ul> 2405 <ul>
2351 <li>Initial and preliminary localization of the Swing 2406 <li>Initial and preliminary localization of the Swing
2352 GUI.&nbsp; Translations by: 2407 GUI.&nbsp; Translations by:
2353 <ul> 2408 <ul>
2354 <li>German - Peter D. St out, Holger Stenzhorn</li> 2409 <li>German - Peter D. Stout, Holger Stenzhorn</li>
2355 <li>Finnish - Juha Knuut ila</li> 2410 <li>Finnish - Juha Knuutila</li>
2356 <li>Estonian - Tanel Leb edev</li> 2411 <li>Estonian - Tanel Lebedev</li>
2357 <li>Japanese - Hanai Shi sei</li> 2412 <li>Japanese - Hanai Shisei</li>
2358 </ul> 2413 </ul>
2359 </li> 2414 </li>
2360 <li>Eliminated debug print statements in advertently left 2415 <li>Eliminated debug print statements inadvertently left
2361 enabled</li> 2416 enabled</li>
2362 <li>Reverted some changes in the open st ream detector: this 2417 <li>Reverted some changes in the open stream detector: this
2363 should fix some false positives that were introduced in the 2418 should fix some false positives that were introduced in the
2364 previous release</li> 2419 previous release</li>
2365 <li>Fixed a couple missing class reports </li> 2420 <li>Fixed a couple missing class reports</li>
2366 </ul> 2421 </ul>
2367 2422
2368 <p>Changes since version 0.8.2:</p> 2423 <p>Changes since version 0.8.2:</p>
2369 <ul> 2424 <ul>
2370 2425
2371 <!-- New detectors --> 2426 <!-- New detectors -->
2372 <li>New detector to find improperly over ridden GUI Adapter 2427 <li>New detector to find improperly overridden GUI Adapter
2373 classes (Dave Brosius)</li> 2428 classes (Dave Brosius)</li>
2374 <li>New detector to find improperly setu p JUnit TestCases 2429 <li>New detector to find improperly setup JUnit TestCases
2375 (Dave Brosius)</li> 2430 (Dave Brosius)</li>
2376 <li>New detector to find variables that mask class level 2431 <li>New detector to find variables that mask class level
2377 fields (Dave Brosius)</li> 2432 fields (Dave Brosius)</li>
2378 <li>New detector to find comparisons of values computed with 2433 <li>New detector to find comparisons of values computed with
2379 bitwise operators that always yi eld the same result (Tom Truscott) 2434 bitwise operators that always yield the same result (Tom Truscott)
2380 </li> 2435 </li>
2381 <li>New detector to find unsafe getClass ().getResource() calls 2436 <li>New detector to find unsafe getClass().getResource() cal ls
2382 (Bill Pugh)</li> 2437 (Bill Pugh)</li>
2383 <li>New detector to find GUI changes not in GUI thread but in 2438 <li>New detector to find GUI changes not in GUI thread but i n
2384 static main (Bill Pugh)</li> 2439 static main (Bill Pugh)</li>
2385 <li>New detector to find calls to Collec tion.toArray() with 2440 <li>New detector to find calls to Collection.toArray() with
2386 zero-length array argument; it i s more efficient to pass an array 2441 zero-length array argument; it is more efficient to pass an array
2387 the size of the collection, whic h can be populated and returned as 2442 the size of the collection, which can be populated and r eturned as
2388 the result (Dave Brosius) <!-- A nalysis improvements --> 2443 the result (Dave Brosius) <!-- Analysis improvements -->
2389 </li> 2444 </li>
2390 <li>Better suppression of false warnings in various detectors 2445 <li>Better suppression of false warnings in various detector s
2391 (Bill Pugh, David Hovemeyer)</li > 2446 (Bill Pugh, David Hovemeyer)</li>
2392 <li>Enhancement to ReadReturnShouldBeChe cked detector for 2447 <li>Enhancement to ReadReturnShouldBeChecked detector for
2393 skip() (Dave Brosius)</li> 2448 skip() (Dave Brosius)</li>
2394 <li>Enhancement to DumbMethods detector (Dave Brosius)</li> 2449 <li>Enhancement to DumbMethods detector (Dave Brosius)</li>
2395 <li>Open stream detector does not report wrappers of streams 2450 <li>Open stream detector does not report wrappers of streams
2396 passed as method parameters (Dav id Hovemeyer) <!-- Feature enhancements --> 2451 passed as method parameters (David Hovemeyer) <!-- Featu re enhancements -->
2397 </li> 2452 </li>
2398 <li>Cancel confirmation dialog in Swing GUI (Pete Angstadt)</li> 2453 <li>Cancel confirmation dialog in Swing GUI (Pete Angstadt)< /li>
2399 <li>Better relative path saving in Proje ct file (Dave Brosius) 2454 <li>Better relative path saving in Project file (Dave Brosiu s)
2400 </li> 2455 </li>
2401 <li>Detector Priority in GUI is now save d in prefs file (Dave 2456 <li>Detector Priority in GUI is now saved in prefs file (Dav e
2402 Brosius)</li> 2457 Brosius)</li>
2403 <li>Controls in GUI to reorder source an d classpath entries, 2458 <li>Controls in GUI to reorder source and classpath entries,
2404 and ability to flip between Proj ect details and bugs pages (Dave 2459 and ability to flip between Project details and bugs pag es (Dave
2405 Brosius)</li> 2460 Brosius)</li>
2406 <li>In Swing GUI, analysis error dialog supports "Select All" 2461 <li>In Swing GUI, analysis error dialog supports "Select All "
2407 and "Copy" operations for easy g eneration of error reports (Dave 2462 and "Copy" operations for easy generation of error repor ts (Dave
2408 Brosius)</li> 2463 Brosius)</li>
2409 <li>Complete translation of bug descript ions and messages into 2464 <li>Complete translation of bug descriptions and messages in to
2410 Japanese (Hanai Shisei) <!-- Bug fixes --> 2465 Japanese (Hanai Shisei) <!-- Bug fixes -->
2411 </li> 2466 </li>
2412 <li>Fixed bug in DroppedException detect or (Dave Brosius) <!-- Development stuff --> 2467 <li>Fixed bug in DroppedException detector (Dave Brosius) <! -- Development stuff -->
2413 </li> 2468 </li>
2414 <li>The source distribution defaults to using JDK 1.5 javac to 2469 <li>The source distribution defaults to using JDK 1.5 javac to
2415 compile, but support for compili ng with JSR-14 prototype is still 2470 compile, but support for compiling with JSR-14 prototype is still
2416 supported</li> 2471 supported</li>
2417 </ul> 2472 </ul>
2418 2473
2419 <p>Changes since version 0.8.1:</p> 2474 <p>Changes since version 0.8.1:</p>
2420 <ul> 2475 <ul>
2421 <li>Fixed a critical ClassCastException bug (triggered if the 2476 <li>Fixed a critical ClassCastException bug (triggered if th e
2422 -workHard option was used, and a n exception type was merged with 2477 -workHard option was used, and an exception type was mer ged with
2423 an array type during type infere nce)</li> 2478 an array type during type inference)</li>
2424 </ul> 2479 </ul>
2425 2480
2426 <p>Changes since version 0.8.0:</p> 2481 <p>Changes since version 0.8.0:</p>
2427 <ul> 2482 <ul>
2428 <li>Disabled SwitchFallthrough detector to work around 2483 <li>Disabled SwitchFallthrough detector to work around
2429 NullPointerExceptions</li> 2484 NullPointerExceptions</li>
2430 <li>Added some additional false positive suppression 2485 <li>Added some additional false positive suppression
2431 heuristics</li> 2486 heuristics</li>
2432 </ul> 2487 </ul>
2433 2488
2434 <p>Also, two contributors to the 0.8.0 release w ere 2489 <p>Also, two contributors to the 0.8.0 release were
2435 inadvertently left out of the credits:</ p> 2490 inadvertently left out of the credits:</p>
2436 <ul> 2491 <ul>
2437 <li>Pete Angstadt fixed several problems in the Swing GUI</li> 2492 <li>Pete Angstadt fixed several problems in the Swing GUI</l i>
2438 <li>Francis Lalonde provided a task reso urce file for the 2493 <li>Francis Lalonde provided a task resource file for the
2439 FindBugs Ant task</li> 2494 FindBugs Ant task</li>
2440 </ul> 2495 </ul>
2441 2496
2442 <p>Changes since version 0.7.4:</p> 2497 <p>Changes since version 0.7.4:</p>
2443 <ul> 2498 <ul>
2444 <li>New detector to look for uses of "+" operator to 2499 <li>New detector to look for uses of "+" operator to
2445 concatenate String objects in a loop (Dave Brosius)</li> 2500 concatenate String objects in a loop (Dave Brosius)</li>
2446 <li>Reference comparison detector looks for places where the 2501 <li>Reference comparison detector looks for places where the
2447 argument passed to the equals(Ob ject) method isn't the same type 2502 argument passed to the equals(Object) method isn't the s ame type
2448 as the receiver object</li> 2503 as the receiver object</li>
2449 <li>Better suppression of false warnings in many detectors</li> 2504 <li>Better suppression of false warnings in many detectors</ li>
2450 <li>Many improvements to Eclipse plugin (Andrey Loskutov, 2505 <li>Many improvements to Eclipse plugin (Andrey Loskutov,
2451 Peter Friese)</li> 2506 Peter Friese)</li>
2452 <li>Fixed problem with building Eclipse plugin on Windows 2507 <li>Fixed problem with building Eclipse plugin on Windows
2453 (Thomas Klaeger)</li> 2508 (Thomas Klaeger)</li>
2454 <li>Open stream detector looks for unclo sed PreparedStatement 2509 <li>Open stream detector looks for unclosed PreparedStatemen t
2455 objects (Thomas Klaeger, Rohan L loyd)</li> 2510 objects (Thomas Klaeger, Rohan Lloyd)</li>
2456 <li>Fix for open stream detector: it was n't detecting close() 2511 <li>Fix for open stream detector: it wasn't detecting close( )
2457 methods called through an invoke interface instruction (Thomas 2512 methods called through an invokeinterface instruction (T homas
2458 Klaeger)</li> 2513 Klaeger)</li>
2459 <li>Refactoring of visitor classes to en force use of accessors 2514 <li>Refactoring of visitor classes to enforce use of accesso rs
2460 for visited class features (Bria n Goetz)</li> 2515 for visited class features (Brian Goetz)</li>
2461 </ul> 2516 </ul>
2462 2517
2463 <p>Changes since version 0.7.3:</p> 2518 <p>Changes since version 0.7.3:</p>
2464 <ul> 2519 <ul>
2465 <li>Experimental modification of open st ream detector to look 2520 <li>Experimental modification of open stream detector to loo k
2466 for non-escaping JDBC resources (connections and statements) that 2521 for non-escaping JDBC resources (connections and stateme nts) that
2467 aren't closed on all paths out o f method</li> 2522 aren't closed on all paths out of method</li>
2468 <li>Eclipse plugin fixed so it compiles and runs on Eclipse 2523 <li>Eclipse plugin fixed so it compiles and runs on Eclipse
2469 2.1.x (Peter Friese)</li> 2524 2.1.x (Peter Friese)</li>
2470 <li>Option to Swing GUI and command line to generate project 2525 <li>Option to Swing GUI and command line to generate project
2471 file using relative paths for ar chives, source directories, and 2526 file using relative paths for archives, source directori es, and
2472 aux classpath entries (Dave Bros ius)</li> 2527 aux classpath entries (Dave Brosius)</li>
2473 <li>Improvements to findbugs.bat script for launching FindBugs 2528 <li>Improvements to findbugs.bat script for launching FindBu gs
2474 on Windows (Dave Brosius)</li> 2529 on Windows (Dave Brosius)</li>
2475 <li>Updated Japanese message translation s (Hiroshi Okugawa)</li> 2530 <li>Updated Japanese message translations (Hiroshi Okugawa)< /li>
2476 <li>Uncalled private methods are now rep orted as low priority, 2531 <li>Uncalled private methods are now reported as low priorit y,
2477 unless they have the same name a s another method in the class 2532 unless they have the same name as another method in the class
2478 (which is more likely to indicat e an actual bug)</li> 2533 (which is more likely to indicate an actual bug)</li>
2479 <li>Added some missing data in the bug m essages XML files</li> 2534 <li>Added some missing data in the bug messages XML files</l i>
2480 <li>Fixed some problems building from so urce on Windows 2535 <li>Fixed some problems building from source on Windows
2481 systems</li> 2536 systems</li>
2482 <li>Various minor bug fixes</li> 2537 <li>Various minor bug fixes</li>
2483 </ul> 2538 </ul>
2484 2539
2485 <p>Changes since version 0.7.2:</p> 2540 <p>Changes since version 0.7.2:</p>
2486 <ul> 2541 <ul>
2487 <li>Enhanced Eclipse plugin, which displ ays the detailed bug 2542 <li>Enhanced Eclipse plugin, which displays the detailed bug
2488 description in a view (Phil Cros by)</li> 2543 description in a view (Phil Crosby)</li>
2489 <li>Various tweaks to existing detectors to reduce false 2544 <li>Various tweaks to existing detectors to reduce false
2490 warnings</li> 2545 warnings</li>
2491 <li>New command line option <code> -work Hard </code> enables 2546 <li>New command line option <code> -workHard </code> enables
2492 pruning of infeasible or unlikel y exception edges, which results 2547 pruning of infeasible or unlikely exception edges, which results
2493 in better accuracy in the open s tream detector, at the expense of 2548 in better accuracy in the open stream detector, at the e xpense of
2494 a 30%-100% slowdown 2549 a 30%-100% slowdown
2495 </li> 2550 </li>
2496 <li>New website and HTML documentation d esign</li> 2551 <li>New website and HTML documentation design</li>
2497 <li>Documentation includes an HTML docum ent with descriptions 2552 <li>Documentation includes an HTML document with description s
2498 of all bug patterns reported by FindBugs</li> 2553 of all bug patterns reported by FindBugs</li>
2499 <li>Web page has a link to a <a 2554 <li>Web page has a link to a <a
2500 href="http://www.simeji.com/find bugs/doc/manual_ja/index.html">Japanese 2555 href="http://www.simeji.com/findbugs/doc/manual_ja/index .html">Japanese
2501 translation</a> of the F indBugs manual, contributed by Hiroshi 2556 translation</a> of the FindBugs manual, contributed by Hiroshi
2502 Okugawa 2557 Okugawa
2503 </li> 2558 </li>
2504 <li>Changed the Inconsistent Synchroniza tion detector so that 2559 <li>Changed the Inconsistent Synchronization detector so tha t
2505 fields synchronized 50% of the t ime (or more) are reported as 2560 fields synchronized 50% of the time (or more) are report ed as
2506 medium priority bugs (previously they were reported as low)</li> 2561 medium priority bugs (previously they were reported as l ow)</li>
2507 <li>New detector to find code that catch es 2562 <li>New detector to find code that catches
2508 IllegalMonitorStateException</li > 2563 IllegalMonitorStateException</li>
2509 <li>New detector to find private methods that are never called 2564 <li>New detector to find private methods that are never call ed
2510 </li> 2565 </li>
2511 <li>New detector to find suspicious uses of 2566 <li>New detector to find suspicious uses of
2512 non-short-circuiting boolean ope rators ( <code> &amp; </code> and 2567 non-short-circuiting boolean operators ( <code> &amp; </ code> and
2513 <code> | </code> , rather than < code> &amp;&amp; </code> and <code> 2568 <code> | </code> , rather than <code> &amp;&amp; </code> and <code>
2514 || </code> ) 2569 || </code> )
2515 </li> 2570 </li>
2516 </ul> 2571 </ul>
2517 2572
2518 <p>Changes since version 0.7.1:</p> 2573 <p>Changes since version 0.7.1:</p>
2519 <ul> 2574 <ul>
2520 <li>Incorporated patched version of BCEL , which allows classes 2575 <li>Incorporated patched version of BCEL, which allows class es
2521 compiled with JDK 1.5.0 beta to be analyzed</li> 2576 compiled with JDK 1.5.0 beta to be analyzed</li>
2522 <li>Fixed some bugs related to lookups o f array classes</li> 2577 <li>Fixed some bugs related to lookups of array classes</li>
2523 <li>Fixed bug that prevented GUI from lo ading XML result files 2578 <li>Fixed bug that prevented GUI from loading XML result fil es
2524 when running under JDK 1.5.0 bet a</li> 2579 when running under JDK 1.5.0 beta</li>
2525 <li>Added new experimental bug detector, LazyInit, which looks 2580 <li>Added new experimental bug detector, LazyInit, which loo ks
2526 for potentially buggy lazy initi alizations of static fields</li> 2581 for potentially buggy lazy initializations of static fie lds</li>
2527 <li>Because of long filenames, switched to distributing the 2582 <li>Because of long filenames, switched to distributing the
2528 source archive as a zip file rat her than a tar file</li> 2583 source archive as a zip file rather than a tar file</li>
2529 <li>The 0.7.1 source tarfile was botched - 0.7.2 has a valid 2584 <li>The 0.7.1 source tarfile was botched - 0.7.2 has a valid
2530 source archive</li> 2585 source archive</li>
2531 <li>Fixed some problems in the Ant build script</li> 2586 <li>Fixed some problems in the Ant build script</li>
2532 <li>Fixed NullPointerException when chec king Class-Path 2587 <li>Fixed NullPointerException when checking Class-Path
2533 attribute for Jar files without manifests</li> 2588 attribute for Jar files without manifests</li>
2534 <li>Generate version numbers for the cor e and UI Eclipse 2589 <li>Generate version numbers for the core and UI Eclipse
2535 plugins using the Version class; all version numbers are now in a 2590 plugins using the Version class; all version numbers are now in a
2536 common location</li> 2591 common location</li>
2537 </ul> 2592 </ul>
2538 2593
2539 <p>Changes since version 0.7.0:</p> 2594 <p>Changes since version 0.7.0:</p>
2540 <ul> 2595 <ul>
2541 <li>Eclipse plugin (contributed by Peter Friese)</li> 2596 <li>Eclipse plugin (contributed by Peter Friese)</li>
2542 <li>Source package structure rearranged: all source (other 2597 <li>Source package structure rearranged: all source (other
2543 than Eclipse plugin UI) is in th e edu.umd.cs.findbugs package, or 2598 than Eclipse plugin UI) is in the edu.umd.cs.findbugs pa ckage, or
2544 a subpackage</li> 2599 a subpackage</li>
2545 <li>Class-Path attributes of manifests o f analyzed jar files 2600 <li>Class-Path attributes of manifests of analyzed jar files
2546 are used to set the aux classpat h automatically (Peter D. Stout)</li> 2601 are used to set the aux classpath automatically (Peter D . Stout)</li>
2547 <li>GUI starts in directory specified by user.home property 2602 <li>GUI starts in directory specified by user.home property
2548 (Peter D. Stout)</li> 2603 (Peter D. Stout)</li>
2549 <li>Added -project option to GUI (Mikko T.)</li> 2604 <li>Added -project option to GUI (Mikko T.)</li>
2550 <li>Added -look:{plastic,gtk,native} opt ion to GUI, for 2605 <li>Added -look:{plastic,gtk,native} option to GUI, for
2551 setting look and feel (Mikko T.) </li> 2606 setting look and feel (Mikko T.)</li>
2552 <li>Fixed DataflowAnalysisException in i nconsistent 2607 <li>Fixed DataflowAnalysisException in inconsistent
2553 synchronization detector</li> 2608 synchronization detector</li>
2554 <li>Ant task supports failOnError parame ter (Rohan Lloyd)</li> 2609 <li>Ant task supports failOnError parameter (Rohan Lloyd)</l i>
2555 <li>Serializable class warnings are down graded to low priority 2610 <li>Serializable class warnings are downgraded to low priori ty
2556 for GUI classes</li> 2611 for GUI classes</li>
2557 <li>MWN detector will only report calls to wait(), notify(), 2612 <li>MWN detector will only report calls to wait(), notify(),
2558 and notifyAll() methods that hav e the correct signature</li> 2613 and notifyAll() methods that have the correct signature< /li>
2559 <li>FindBugs works with latest CVS versi on of BCEL</li> 2614 <li>FindBugs works with latest CVS version of BCEL</li>
2560 <li>Zip and Jar files may be added to th e source path</li> 2615 <li>Zip and Jar files may be added to the source path</li>
2561 <li>The GUI will automatically find sour ce files residing in 2616 <li>The GUI will automatically find source files residing in
2562 analyzed Zip or Jar files</li> 2617 analyzed Zip or Jar files</li>
2563 </ul> 2618 </ul>
2564 2619
2565 <p>Note that the version number jumped from 0.6. 6 to 0.6.9; 2620 <p>Note that the version number jumped from 0.6.6 to 0.6.9;
2566 there were no 0.6.7 or 0.6.8 releases.</ p> 2621 there were no 0.6.7 or 0.6.8 releases.</p>
2567 <p>Changes since version 0.6.9:</p> 2622 <p>Changes since version 0.6.9:</p>
2568 <ul> 2623 <ul>
2569 <li>Added -conserveSpace option to reduc e memory use at the 2624 <li>Added -conserveSpace option to reduce memory use at the
2570 expense of analysis precision</l i> 2625 expense of analysis precision</li>
2571 <li>Bug fixes in findbugs.bat script: JA VA_HOME handling, 2626 <li>Bug fixes in findbugs.bat script: JAVA_HOME handling,
2572 autodetection of FINDBUGS_HOME, missing output with -textui</li> 2627 autodetection of FINDBUGS_HOME, missing output with -tex tui</li>
2573 <li>Fixed NullPointerException when a mi ssing class is 2628 <li>Fixed NullPointerException when a missing class is
2574 encountered</li> 2629 encountered</li>
2575 </ul> 2630 </ul>
2576 2631
2577 <p>Changes since version 0.6.6:</p> 2632 <p>Changes since version 0.6.6:</p>
2578 <ul> 2633 <ul>
2579 <li>The null pointer dereference detecto r is more powerful</li> 2634 <li>The null pointer dereference detector is more powerful</ li>
2580 <li>Significantly improved heuristics an d bug fixes in 2635 <li>Significantly improved heuristics and bug fixes in
2581 inconsistent synchronization det ector</li> 2636 inconsistent synchronization detector</li>
2582 <li>Improved heuristics in open stream a nd dropped exception 2637 <li>Improved heuristics in open stream and dropped exception
2583 detectors; fewer false positives should be reported</li> 2638 detectors; fewer false positives should be reported</li>
2584 <li>Save HTML summary in XML results fil es, rather than 2639 <li>Save HTML summary in XML results files, rather than
2585 recomputing; this makes loading results in GUI much faster</li> 2640 recomputing; this makes loading results in GUI much fast er</li>
2586 <li>Report at most one String comparison using == or != per 2641 <li>Report at most one String comparison using == or != per
2587 method</li> 2642 method</li>
2588 <li>The findbugs.bat script on Windows a utodetects 2643 <li>The findbugs.bat script on Windows autodetects
2589 FINDBUGS_HOME, and doesn't open a DOS window when launching the 2644 FINDBUGS_HOME, and doesn't open a DOS window when launch ing the
2590 GUI (contributed by TJSB)</li> 2645 GUI (contributed by TJSB)</li>
2591 <li>Emacs reporting format (contributed by David Li)</li> 2646 <li>Emacs reporting format (contributed by David Li)</li>
2592 <li>Various bug fixes</li> 2647 <li>Various bug fixes</li>
2593 </ul> 2648 </ul>
2594 2649
2595 <p>Changes since 0.6.5:</p> 2650 <p>Changes since 0.6.5:</p>
2596 <ul> 2651 <ul>
2597 <li>Rewritten inconsistent synchronizati on detector; accuracy 2652 <li>Rewritten inconsistent synchronization detector; accurac y
2598 is significantly improved, and b ug reports are prioritized</li> 2653 is significantly improved, and bug reports are prioritiz ed</li>
2599 <li>New detector to find self assignment (x=x) of local 2654 <li>New detector to find self assignment (x=x) of local
2600 variables (suggested by Jeff Mar tin)</li> 2655 variables (suggested by Jeff Martin)</li>
2601 <li>New detector to find calls to wait() , notify(), and 2656 <li>New detector to find calls to wait(), notify(), and
2602 notifyAll() on an object which i s not obviously locked</li> 2657 notifyAll() on an object which is not obviously locked</ li>
2603 <li>Open stream detector now reports Rea ders and Writers</li> 2658 <li>Open stream detector now reports Readers and Writers</li >
2604 <li>Fixed bug in finalizer idioms detect or which caused 2659 <li>Fixed bug in finalizer idioms detector which caused
2605 spurious warnings about failure to call super.finalize() (reported 2660 spurious warnings about failure to call super.finalize() (reported
2606 by Jim Menard)</li> 2661 by Jim Menard)</li>
2607 <li>Fixed bug where output stream was no t closed using non-XML 2662 <li>Fixed bug where output stream was not closed using non-X ML
2608 output (reported by Sigiswald Ma dou)</li> 2663 output (reported by Sigiswald Madou)</li>
2609 <li>Fixed corrupted HTML bug detail mess age (reported by 2664 <li>Fixed corrupted HTML bug detail message (reported by
2610 Trevor Harmon)</li> 2665 Trevor Harmon)</li>
2611 </ul> 2666 </ul>
2612 2667
2613 <p>Changes since version 0.6.4:</p> 2668 <p>Changes since version 0.6.4:</p>
2614 <ul> 2669 <ul>
2615 <li>For redundant comparison of referenc e values, fixed false 2670 <li>For redundant comparison of reference values, fixed fals e
2616 positives resulting from duplica tion of code in finally blocks</li> 2671 positives resulting from duplication of code in finally blocks</li>
2617 <li>Fixed false positives resulting from wrapped byte array 2672 <li>Fixed false positives resulting from wrapped byte array
2618 streams left open</li> 2673 streams left open</li>
2619 <li>Fixed bug in Ant task preventing out put file from working 2674 <li>Fixed bug in Ant task preventing output file from workin g
2620 properly if a relative path was used</li> 2675 properly if a relative path was used</li>
2621 </ul> 2676 </ul>
2622 2677
2623 <p>Changes since version 0.6.3:</p> 2678 <p>Changes since version 0.6.3:</p>
2624 <ul> 2679 <ul>
2625 <li>Fixed bug in Ant task where output w ould be corrupted, and 2680 <li>Fixed bug in Ant task where output would be corrupted, a nd
2626 added a <code> timeout </code> a ttribute 2681 added a <code> timeout </code> attribute
2627 </li> 2682 </li>
2628 <li>Added -outputFile option to text UI, for explicitly 2683 <li>Added -outputFile option to text UI, for explicitly
2629 specifying an output file</li> 2684 specifying an output file</li>
2630 <li>GUI has a summary window, for statis tics about overall bug 2685 <li>GUI has a summary window, for statistics about overall b ug
2631 densities (contributed by Mike F agan)</li> 2686 densities (contributed by Mike Fagan)</li>
2632 <li>Find redundant comparisons of refere nce values</li> 2687 <li>Find redundant comparisons of reference values</li>
2633 <li>More accurate detection of Strings c ompared with == and != 2688 <li>More accurate detection of Strings compared with == and !=
2634 operators</li> 2689 operators</li>
2635 <li>Detection of other reference types w hich should generally 2690 <li>Detection of other reference types which should generall y
2636 not be compared with == and != o perators; Boolean, Integer, etc.</li> 2691 not be compared with == and != operators; Boolean, Integ er, etc.</li>
2637 <li>Find non-transient non-serializable instance fields in 2692 <li>Find non-transient non-serializable instance fields in
2638 Serializable classes</li> 2693 Serializable classes</li>
2639 <li>Source code may be compiled with lat est early access 2694 <li>Source code may be compiled with latest early access
2640 generics-enabled javac (version 2.2)</li> 2695 generics-enabled javac (version 2.2)</li>
2641 </ul> 2696 </ul>
2642 2697
2643 <p>Changes since version 0.6.2:</p> 2698 <p>Changes since version 0.6.2:</p>
2644 <ul> 2699 <ul>
2645 <li>GUI supports filtering bugs by prior ity</li> 2700 <li>GUI supports filtering bugs by priority</li>
2646 <li>Ant task rewritten; supports all fun ctionality offered by 2701 <li>Ant task rewritten; supports all functionality offered b y
2647 Text UI (contributed by Mike Fag an)</li> 2702 Text UI (contributed by Mike Fagan)</li>
2648 <li>Ant task is fully documented in the manual</li> 2703 <li>Ant task is fully documented in the manual</li>
2649 <li>Classes in nested archives are analy zed; this allows full 2704 <li>Classes in nested archives are analyzed; this allows ful l
2650 support for analyzing .ear and . war files (contributed by Mike 2705 support for analyzing .ear and .war files (contributed b y Mike
2651 Fagan)</li> 2706 Fagan)</li>
2652 <li>DepthFirstSearch changed to use non- recursive 2707 <li>DepthFirstSearch changed to use non-recursive
2653 implementation; this should fix the StackOverflowErrors that 2708 implementation; this should fix the StackOverflowErrors that
2654 several users reported</li> 2709 several users reported</li>
2655 <li>Various minor bugfixes and improveme nts</li> 2710 <li>Various minor bugfixes and improvements</li>
2656 </ul> 2711 </ul>
2657 2712
2658 <p>Changes since version 0.6.1:</p> 2713 <p>Changes since version 0.6.1:</p>
2659 <ul> 2714 <ul>
2660 <li>New detector to look for useless con trol flow (suggested 2715 <li>New detector to look for useless control flow (suggested
2661 by Richard P. King and Mike Faga n)</li> 2716 by Richard P. King and Mike Fagan)</li>
2662 <li>Look for places where return value o f 2717 <li>Look for places where return value of
2663 java.io.File.createNewFile() is ignored (suggested by Richard P. 2718 java.io.File.createNewFile() is ignored (suggested by Ri chard P.
2664 King)</li> 2719 King)</li>
2665 <li>Fixed bug in resolution of source fi les (only the first 2720 <li>Fixed bug in resolution of source files (only the first
2666 source directory was searched)</ li> 2721 source directory was searched)</li>
2667 <li>Fixed a NullPointerException in the bytecode pattern 2722 <li>Fixed a NullPointerException in the bytecode pattern
2668 matching code</li> 2723 matching code</li>
2669 <li>Ant task supports project files (con tributed by Mike 2724 <li>Ant task supports project files (contributed by Mike
2670 Fagan)</li> 2725 Fagan)</li>
2671 <li>Unix findbugs script honors the <cod e> JAVA_HOME </code> 2726 <li>Unix findbugs script honors the <code> JAVA_HOME </code>
2672 environment variable (contribute d by Pedro Morais) 2727 environment variable (contributed by Pedro Morais)
2673 </li> 2728 </li>
2674 <li>Allow .war and .ear files to be anal yzed</li> 2729 <li>Allow .war and .ear files to be analyzed</li>
2675 </ul> 2730 </ul>
2676 2731
2677 <p>Changes since version 0.6.0:</p> 2732 <p>Changes since version 0.6.0:</p>
2678 <ul> 2733 <ul>
2679 <li>New bug pattern detector which looks for places where a 2734 <li>New bug pattern detector which looks for places where a
2680 null pointer might be dereferenc ed</li> 2735 null pointer might be dereferenced</li>
2681 <li>New bug pattern detector which looks for IO streams that 2736 <li>New bug pattern detector which looks for IO streams that
2682 are opened, do not escape the me thod, and are not closed on all 2737 are opened, do not escape the method, and are not closed on all
2683 paths out of the method</li> 2738 paths out of the method</li>
2684 <li>New bug pattern detector to find met hods that can return 2739 <li>New bug pattern detector to find methods that can return
2685 null instead of a zero-length ar ray</li> 2740 null instead of a zero-length array</li>
2686 <li>New bug pattern detector to find pla ces where the == or != 2741 <li>New bug pattern detector to find places where the == or !=
2687 operators are used to compare St ring objects</li> 2742 operators are used to compare String objects</li>
2688 <li>Command line interface can save bugs as XML</li> 2743 <li>Command line interface can save bugs as XML</li>
2689 <li>GUI can save bugs to and load bugs f rom XML</li> 2744 <li>GUI can save bugs to and load bugs from XML</li>
2690 <li>An "Annotations" window in the GUI a llows the user to add 2745 <li>An "Annotations" window in the GUI allows the user to ad d
2691 textual annotations to bug repor ts; these annotations are 2746 textual annotations to bug reports; these annotations ar e
2692 preserved when bugs are saved as XML</li> 2747 preserved when bugs are saved as XML</li>
2693 <li>In this release, the Japanese bug su mmary translations by 2748 <li>In this release, the Japanese bug summary translations b y
2694 Germano Leichsenring are really included (they were inadvertently 2749 Germano Leichsenring are really included (they were inad vertently
2695 omitted in the previous release) </li> 2750 omitted in the previous release)</li>
2696 <li>Completely rewrote the control flow graph builder, 2751 <li>Completely rewrote the control flow graph builder,
2697 hopefully for the last time</li> 2752 hopefully for the last time</li>
2698 <li>Simplified implementation of control flow graphs, which 2753 <li>Simplified implementation of control flow graphs, which
2699 should reduce memory use and pos sibly improve performance</li> 2754 should reduce memory use and possibly improve performanc e</li>
2700 <li>Improvements to command line interfa ce (list bug 2755 <li>Improvements to command line interface (list bug
2701 priorities, filter by priority, specify aux classpath, specify 2756 priorities, filter by priority, specify aux classpath, s pecify
2702 project to analyze)</li> 2757 project to analyze)</li>
2703 <li>Various bug fixes and enhancements</ li> 2758 <li>Various bug fixes and enhancements</li>
2704 </ul> 2759 </ul>
2705 2760
2706 <p>Changes since version 0.5.4</p> 2761 <p>Changes since version 0.5.4</p>
2707 <ul> 2762 <ul>
2708 <li>Added an <a href="http://ant.apache. org/">Ant</a> task for 2763 <li>Added an <a href="http://ant.apache.org/">Ant</a> task f or
2709 FindBugs, contributed by Mike Fa gan. 2764 FindBugs, contributed by Mike Fagan.
2710 </li> 2765 </li>
2711 <li>Added a GUI dialog which allows indi vidual bug pattern 2766 <li>Added a GUI dialog which allows individual bug pattern
2712 detectors to be enabled or disab led.&nbsp; Disabling certain slow 2767 detectors to be enabled or disabled.&nbsp; Disabling cer tain slow
2713 detectors can greatly speed up a nalysis of large programs, at the 2768 detectors can greatly speed up analysis of large program s, at the
2714 expense of reducing the number o f potential bugs found.</li> 2769 expense of reducing the number of potential bugs found.< /li>
2715 <li>Added a new detector for finding imp roperly ignored return 2770 <li>Added a new detector for finding improperly ignored retu rn
2716 values for methods such as <code > String.trim() </code> .&nbsp; 2771 values for methods such as <code> String.trim() </code> .&nbsp;
2717 Suggested by Andreas Mandel. 2772 Suggested by Andreas Mandel.
2718 </li> 2773 </li>
2719 <li>Japanese translations of the bug sum maries, contributed by 2774 <li>Japanese translations of the bug summaries, contributed by
2720 Germano Leichsenring.</li> 2775 Germano Leichsenring.</li>
2721 <li>Filtering of results is supported in command line 2776 <li>Filtering of results is supported in command line
2722 interface. See the <a href="manu al/index.html">FindBugs manual</a> 2777 interface. See the <a href="manual/index.html">FindBugs manual</a>
2723 for details. 2778 for details.
2724 </li> 2779 </li>
2725 <li>Added "byte code patterns", a genera l pattern matching 2780 <li>Added "byte code patterns", a general pattern matching
2726 infrastructure for bytecode inst ructions.&nbsp; This feature 2781 infrastructure for bytecode instructions.&nbsp; This fea ture
2727 significantly reduces the comple xity of implementing new bug 2782 significantly reduces the complexity of implementing new bug
2728 pattern detectors.</li> 2783 pattern detectors.</li>
2729 <li>Enabled a new general dataflow analy sis to track values in 2784 <li>Enabled a new general dataflow analysis to track values in
2730 methods.</li> 2785 methods.</li>
2731 <li>Switched to new control-flow graph b uilder implementation. 2786 <li>Switched to new control-flow graph builder implementatio n.
2732 </li> 2787 </li>
2733 </ul> 2788 </ul>
2734 2789
2735 <p>Changes since version 0.5.3</p> 2790 <p>Changes since version 0.5.3</p>
2736 <ul> 2791 <ul>
2737 <li>Fixed a bug in the script used to la unch FindBugs on 2792 <li>Fixed a bug in the script used to launch FindBugs on
2738 Windows platforms.</li> 2793 Windows platforms.</li>
2739 <li>Fixed crashes when analyzing class f iles without source 2794 <li>Fixed crashes when analyzing class files without source
2740 line information.</li> 2795 line information.</li>
2741 <li>All major errors are reported using an error dialog; file 2796 <li>All major errors are reported using an error dialog; fil e
2742 not found errors are more inform ative.</li> 2797 not found errors are more informative.</li>
2743 <li>Minor GUI improvements.</li> 2798 <li>Minor GUI improvements.</li>
2744 </ul> 2799 </ul>
2745 2800
2746 <p>Changes since version 0.5.2</p> 2801 <p>Changes since version 0.5.2</p>
2747 <ul> 2802 <ul>
2748 <li>All of the source code and related f iles are in a single 2803 <li>All of the source code and related files are in a single
2749 directory tree.</li> 2804 directory tree.</li>
2750 <li>Updated some of the detectors to pro duce source line 2805 <li>Updated some of the detectors to produce source line
2751 information.</li> 2806 information.</li>
2752 <li><a href="http://ant.apache.org/">Ant </a> build script and 2807 <li><a href="http://ant.apache.org/">Ant</a> build script an d
2753 several GUI enhancements and fix es contributed by Mike Fagan.</li> 2808 several GUI enhancements and fixes contributed by Mike F agan.</li>
2754 <li>Converted to use a <a href="AddingDe tectors.txt">plugin 2809 <li>Converted to use a <a href="AddingDetectors.txt">plugin
2755 architecture</a> for loa ding bug detectors. 2810 architecture</a> for loading bug detectors.
2756 </li> 2811 </li>
2757 <li>Eliminated generics-related compiler warnings.</li> 2812 <li>Eliminated generics-related compiler warnings.</li>
2758 <li>More complete documentation has been added.</li> 2813 <li>More complete documentation has been added.</li>
2759 </ul> 2814 </ul>
2760 2815
2761 <p>Changes since version 0.5.1:</p> 2816 <p>Changes since version 0.5.1:</p>
2762 <ul> 2817 <ul>
2763 <li>Fixed a large number of bugs in the BCEL Repository and 2818 <li>Fixed a large number of bugs in the BCEL Repository and
2764 FindBugs's use of the Repository .&nbsp; With these changes, 2819 FindBugs's use of the Repository.&nbsp; With these chang es,
2765 FindBugs should <em>never</em> c rash or otherwise misbehave 2820 FindBugs should <em>never</em> crash or otherwise misbeh ave
2766 because of Repository lookup fai lures.&nbsp; Because of these 2821 because of Repository lookup failures.&nbsp; Because of these
2767 changes, you must use a modified version of <code> bcel.jar 2822 changes, you must use a modified version of <code> bcel. jar
2768 </code> with FindBugs.&nbsp; Thi s jar file is included in the FindBugs 2823 </code> with FindBugs.&nbsp; This jar file is included i n the FindBugs
2769 0.5.2 binary release.&nbsp; A co mplete patch containing the <a 2824 0.5.2 binary release.&nbsp; A complete patch containing the <a
2770 href="http://faculty.ycp.edu/~dh ovemey/bcel-30-April-2003.patch">modifications 2825 href="http://faculty.ycp.edu/~dhovemey/bcel-30-April-200 3.patch">modifications
2771 against the BCEL CVS mai n branch as of April 30, 2003</a> is also 2826 against the BCEL CVS main branch as of April 30, 200 3</a> is also
2772 available. 2827 available.
2773 </li> 2828 </li>
2774 <li>Implemented the "auxiliary classpath entry list".&nbsp; 2829 <li>Implemented the "auxiliary classpath entry list".&nbsp;
2775 Aux classpath entries can be add ed to a project to provide classes 2830 Aux classpath entries can be added to a project to provi de classes
2776 that are referenced by the analy zed application, but should not 2831 that are referenced by the analyzed application, but sho uld not
2777 themselves be analyzed.&nbsp; Ha ving all referenced classes 2832 themselves be analyzed.&nbsp; Having all referenced clas ses
2778 available allows FindBugs to pro duce more accurate results.</li> 2833 available allows FindBugs to produce more accurate resul ts.</li>
2779 </ul> 2834 </ul>
2780 2835
2781 <p>Changes since version 0.5.0:</p> 2836 <p>Changes since version 0.5.0:</p>
2782 <ul> 2837 <ul>
2783 <li>Many user interface bugs have been f ixed.</li> 2838 <li>Many user interface bugs have been fixed.</li>
2784 <li>Upgraded to a recent CVS version of BCEL, with some bug 2839 <li>Upgraded to a recent CVS version of BCEL, with some bug
2785 fixes.&nbsp; This should prevent FindBugs from crashing when there 2840 fixes.&nbsp; This should prevent FindBugs from crashing when there
2786 is a failure to find a class on the classpath.</li> 2841 is a failure to find a class on the classpath.</li>
2787 <li>Added support for Plastic look and f eel from <a 2842 <li>Added support for Plastic look and feel from <a
2788 href="http://www.jgoodies.com/"> jgoodies.com</a>. 2843 href="http://www.jgoodies.com/">jgoodies.com</a>.
2789 </li> 2844 </li>
2790 <li>Major overhaul of infrastructure for doing dataflow 2845 <li>Major overhaul of infrastructure for doing dataflow
2791 analysis.</li> 2846 analysis.</li>
2792 </ul> 2847 </ul>
2793 <hr> <p> 2848 <hr> <p>
2794 <script language="JavaScript" type="text/javascript"> 2849 <script language="JavaScript" type="text/javascript">
2795 <!---//hide script from old browsers 2850 <!---//hide script from old browsers
2796 document.write( "Last updated "+ document.lastModified + "." ); 2851 document.write( "Last updated "+ document.lastModified + "." );
2797 //end hiding contents ---> 2852 //end hiding contents --->
2798 </script> 2853 </script>
2799 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu gs@cs.umd.edu</a> 2854 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu gs@cs.umd.edu</a>
2800 <p> 2855 <p>
2801 <A href="http://sourceforge.net"><IMG src="http://sourceforge.net/sflogo.php?gro up_id=96405&amp;type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></A> 2856 <A href="http://sourceforge.net"><IMG src="http://sourceforge.net/sflogo.php?gro up_id=96405&amp;type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></A>
2802 2857
2803 » » » </td> 2858 </td>
2804 2859
2805 » » </tr> 2860 </tr>
2806 » </table> 2861 </table>
2807 2862
2808 </body> 2863 </body>
2809 2864
2810 </html> 2865 </html>
OLDNEW
« no previous file with comments | « README.chromium ('k') | doc/FAQ.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698