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