OLD | NEW |
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> </td></tr> | 19 <tr><td> </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"> <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"> <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"> <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"> <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"> <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"> <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
/日本語)</a></font></td></tr> | 28 <tr><td><font size="-1"> <a class="sidebar" href="ja/manual/index.html">Man
ual(ja/日本語)</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"> <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"> <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"> <a class="sidebar" href="bugDescriptions_ja.html">
Bug descriptions(ja/日本語)</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"> <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"> <a class="sidebar" href="mailingLists.html">Mailin
g lists</a></font></td></tr> |
| 34 <tr><td><font size="-1"> <a class="sidebar" href="publications.html">Docume
nts and Publications</a></font></td></tr> |
| 35 <tr><td><font size="-1"> <a class="sidebar" href="links.html">Links</a></fo
nt></td></tr> |
34 | 36 |
35 <tr><td> </td></tr> | 37 <tr><td> </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> </td></tr> | 41 <tr><td> </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> </td></tr> | 45 <tr><td> </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"> <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"> <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"> <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"> <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"> <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"> <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"> <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"> <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"> <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 <?xml version="1.0" encoding="UTF-8"?> |
| 232 <FindBugsFilter> |
| 233 <Match> |
| 234 <Source name="~.*\.groovy" /> |
| 235 </Match> |
| 236 </FindBugsFilter> |
| 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 ] "L B GC" false pos cast from | 668 <li>[ 2487936 ] "L B GC" 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 "requires | 676 <li>[ 2492673 ] Plugin sites should specify
"requires |
472
Eclipse 3.3 or newer"</li> | 677 Eclipse 3.3 or newer"</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<BugInstance> (thanks to Tomas Pollak)</li> | 687 Iterable<BugInstance> (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 < 0 |
| x < 0) ...</code>) (RpC_REPEATED_CONDITIONAL_TEST) | 824 < 0 || x < 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 <FileStat> element
s. For each source file, this | 846 include <FileStat> 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->Exp
ort->Java->BugCounts (Andrey Loskutov)</li> | 1056 via File->Export->Java->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 -> general | 1158 and files (has to be activated via Preferences -
> general |
954 -> appearance
-> label decorations)(Andrey Loskutov)</li> | 1159 -> appearance -> 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 -> | 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
& SWT.SELECTED) > 0)</tt>. Using bit arithmetic and then | 1376 & SWT.SELECTED) > 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 '> 0'. | 1381 it seems good practice to use '!= 0' ins
tead of '> 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 -> STYLE</li> | 1436 <li>NS_NON_SHORT_CIRCUIT: BAD_PRACTICE -> STYLE</
li> |
1232 <li>NS_DANGEROUS_NON_SHO
RT_CIRCUIT: CORRECTNESS -> STYLE</li> | 1437 <li>NS_DANGEROUS_NON_SHORT_CIRCUIT: CORRECTNESS ->
; STYLE</li> |
1233 <li>RC_REF_COMPARISON: C
ORRECTNESS -> BAD_PRACTICE</li> | 1438 <li>RC_REF_COMPARISON: CORRECTNESS -> 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> contains a | 1593 (e.g., checking to see if a Set<String> 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 < x | 1604 <li>Added a check for useless self operations (e.g., x <
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 < b.length; i++) if (b[i] == 200) return i; | 1867 for(int i = 0; i < 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. Translations by: | 2557 GUI. 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> & </code> and | 2717 non-short-circuiting boolean operators ( <code> & </
code> and |
2513 <code> | </code> , rather than <
code> && </code> and <code> | 2718 <code> | </code> , rather than <code> && </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. Disabling certain slow | 2917 detectors to be enabled or disabled. 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> . | 2921 values for methods such as <code> String.trim() </code>
. |
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. This feature | 2931 infrastructure for bytecode instructions. 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
. With these changes, | 2969 FindBugs's use of the Repository. 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. Because of these | 2971 because of Repository lookup failures. 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. Thi
s jar file is included in the FindBugs | 2973 </code> with FindBugs. This jar file is included i
n the FindBugs |
2769 0.5.2 binary release. A co
mplete patch containing the <a | 2974 0.5.2 binary release. 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". | 2979 <li>Implemented the "auxiliary classpath entry list". |
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. Ha
ving all referenced classes | 2982 themselves be analyzed. 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. This should prevent
FindBugs from crashing when there | 2990 fixes. 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&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&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> |
OLD | NEW |