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

Side by Side Diff: doc/Changes.html

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

Powered by Google App Engine
This is Rietveld 408576698