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><head><title>FindBugs Bug Descriptions</title> | 2 <html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| 3 <title>FindBugs Bug Descriptions</title> |
3 <link rel="stylesheet" type="text/css" href="findbugs.css"/> | 4 <link rel="stylesheet" type="text/css" href="findbugs.css"/> |
4 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/> | 5 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/> |
5 </head><body> | 6 </head><body> |
6 | 7 |
7 <table width="100%"><tr> | 8 <table width="100%"><tr> |
8 | 9 |
9 <td bgcolor="#b9b9fe" valign="top" align="left" width="20%"> | 10 <td bgcolor="#b9b9fe" valign="top" align="left" width="20%"> |
10 <table width="100%" cellspacing="0" border="0"> | 11 <table width="100%" cellspacing="0" border="0"> |
11 <tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="Fin
dBugs"></a></td></tr> | 12 <tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="Fin
dBugs"></a></td></tr> |
12 | 13 |
(...skipping 19 matching lines...) Expand all Loading... |
32 | 33 |
33 <tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr> | 34 <tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr> |
34 | 35 |
35 <tr><td> </td></tr> | 36 <tr><td> </td></tr> |
36 | 37 |
37 <tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs
Swag</b></a></td></tr> | 38 <tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs
Swag</b></a></td></tr> |
38 | 39 |
39 <tr><td> </td></tr> | 40 <tr><td> </td></tr> |
40 | 41 |
41 <tr><td><b>Development</b></td></tr> | 42 <tr><td><b>Development</b></td></tr> |
42 <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/tr
acker/?group_id=96405">Open bugs</a></font></td></tr> | 43 <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/p/
findbugs/bugs/">Open bugs</a></font></td></tr> |
43 <tr><td><font size="-1"> <a class="sidebar" href="reportingBugs.html">Repor
ting bugs</a></font></td></tr> | 44 <tr><td><font size="-1"> <a class="sidebar" href="reportingBugs.html">Repor
ting bugs</a></font></td></tr> |
44 <tr><td><font size="-1"> <a class="sidebar" href="contributing.html">Contri
buting</a></font></td></tr> | 45 <tr><td><font size="-1"> <a class="sidebar" href="contributing.html">Contri
buting</a></font></td></tr> |
45 <tr><td><font size="-1"> <a class="sidebar" href="team.html">Dev team</a></
font></td></tr> | 46 <tr><td><font size="-1"> <a class="sidebar" href="team.html">Dev team</a></
font></td></tr> |
46 <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> | 47 <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> |
47 <tr><td><font size="-1"> <a class="sidebar" href="Changes.html">Change log<
/a></font></td></tr> | 48 <tr><td><font size="-1"> <a class="sidebar" href="Changes.html">Change log<
/a></font></td></tr> |
48 <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/pr
ojects/findbugs">SF project page</a></font></td></tr> | 49 <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/pr
ojects/findbugs">SF project page</a></font></td></tr> |
49 <tr><td><font size="-1"> <a class="sidebar" href="http://code.google.com/p/
findbugs/source/browse/">Browse source</a></font></td></tr> | 50 <tr><td><font size="-1"> <a class="sidebar" href="http://code.google.com/p/
findbugs/source/browse/">Browse source</a></font></td></tr> |
50 <tr><td><font size="-1"> <a class="sidebar" href="http://code.google.com/p/
findbugs/source/list">Latest code changes</a></font></td></tr> | 51 <tr><td><font size="-1"> <a class="sidebar" href="http://code.google.com/p/
findbugs/source/list">Latest code changes</a></font></td></tr> |
51 </table> | 52 </table> |
52 </td> | 53 </td> |
53 <td align="left" valign="top"> | 54 <td align="left" valign="top"> |
54 <h1>FindBugs Bug Descriptions</h1> | 55 <h1>FindBugs Bug Descriptions</h1> |
55 <p>This document lists the standard bug patterns reported by | 56 <p>This document lists the standard bug patterns reported by |
56 <a href="http://findbugs.sourceforge.net">FindBugs</a> version 3.0.0.</p> | 57 <a href="http://findbugs.sourceforge.net">FindBugs</a> version 3.0.1.</p> |
57 <h2>Summary</h2> | 58 <h2>Summary</h2> |
58 <table width="100%"> | 59 <table width="100%"> |
59 <tr bgcolor="#b9b9fe"><th>Description</th><th>Category</th></tr> | 60 <tr bgcolor="#b9b9fe"><th>Description</th><th>Category</th></tr> |
60 <tr bgcolor="#eeeeee"><td><a href="#BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS
">BC: Equals method should not assume anything about the type of its argument</a
></td><td>Bad practice</td></tr> | 61 <tr bgcolor="#eeeeee"><td><a href="#BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS
">BC: Equals method should not assume anything about the type of its argument</a
></td><td>Bad practice</td></tr> |
61 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK">BIT: Check for sign of bit
wise operation</a></td><td>Bad practice</td></tr> | 62 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK">BIT: Check for sign of bit
wise operation</a></td><td>Bad practice</td></tr> |
62 <tr bgcolor="#eeeeee"><td><a href="#CN_IDIOM">CN: La classe implémente Cloneable
mais ne définit et n'utilise pas la méthode clone()</a></td><td>Bad practice</t
d></tr> | 63 <tr bgcolor="#eeeeee"><td><a href="#CN_IDIOM">CN: La classe implémente Cloneable
mais ne définit et n'utilise pas la méthode clone()</a></td><td>Bad practice</t
d></tr> |
63 <tr bgcolor="#ffffff"><td><a href="#CN_IDIOM_NO_SUPER_CALL">CN: La méthode clone
() n'appelle pas super.clone()</a></td><td>Bad practice</td></tr> | 64 <tr bgcolor="#ffffff"><td><a href="#CN_IDIOM_NO_SUPER_CALL">CN: La méthode clone
() n'appelle pas super.clone()</a></td><td>Bad practice</td></tr> |
64 <tr bgcolor="#eeeeee"><td><a href="#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: C
lass defines clone() but doesn't implement Cloneable</a></td><td>Bad practice</t
d></tr> | 65 <tr bgcolor="#eeeeee"><td><a href="#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: C
lass defines clone() but doesn't implement Cloneable</a></td><td>Bad practice</t
d></tr> |
65 <tr bgcolor="#ffffff"><td><a href="#CNT_ROUGH_CONSTANT_VALUE">CNT: Rough value o
f known constant found</a></td><td>Bad practice</td></tr> | 66 <tr bgcolor="#ffffff"><td><a href="#CNT_ROUGH_CONSTANT_VALUE">CNT: Rough value o
f known constant found</a></td><td>Bad practice</td></tr> |
66 <tr bgcolor="#eeeeee"><td><a href="#CO_ABSTRACT_SELF">Co: Une classe abstraite d
éfinit une méthode compareTo() covariante</a></td><td>Bad practice</td></tr> | 67 <tr bgcolor="#eeeeee"><td><a href="#CO_ABSTRACT_SELF">Co: Une classe abstraite d
éfinit une méthode compareTo() covariante</a></td><td>Bad practice</td></tr> |
| 68 <tr bgcolor="#ffffff"><td><a href="#CO_COMPARETO_INCORRECT_FLOATING">Co: compare
To()/compare() incorrectly handles float or double value</a></td><td>Bad practic
e</td></tr> |
| 69 <tr bgcolor="#eeeeee"><td><a href="#CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareT
o()/compare() returns Integer.MIN_VALUE</a></td><td>Bad practice</td></tr> |
67 <tr bgcolor="#ffffff"><td><a href="#CO_SELF_NO_OBJECT">Co: Définition d'une méth
ode compareTo() covariante</a></td><td>Bad practice</td></tr> | 70 <tr bgcolor="#ffffff"><td><a href="#CO_SELF_NO_OBJECT">Co: Définition d'une méth
ode compareTo() covariante</a></td><td>Bad practice</td></tr> |
68 <tr bgcolor="#eeeeee"><td><a href="#DE_MIGHT_DROP">DE: La méthode peut déclenche
r une exception</a></td><td>Bad practice</td></tr> | 71 <tr bgcolor="#eeeeee"><td><a href="#DE_MIGHT_DROP">DE: La méthode peut déclenche
r une exception</a></td><td>Bad practice</td></tr> |
69 <tr bgcolor="#ffffff"><td><a href="#DE_MIGHT_IGNORE">DE: La méthode peut ignorer
une exception</a></td><td>Bad practice</td></tr> | 72 <tr bgcolor="#ffffff"><td><a href="#DE_MIGHT_IGNORE">DE: La méthode peut ignorer
une exception</a></td><td>Bad practice</td></tr> |
70 <tr bgcolor="#eeeeee"><td><a href="#DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI:
Adding elements of an entry set may fail due to reuse of Entry objects</a></td>
<td>Bad practice</td></tr> | 73 <tr bgcolor="#eeeeee"><td><a href="#DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI:
Adding elements of an entry set may fail due to reuse of Entry objects</a></td>
<td>Bad practice</td></tr> |
71 <tr bgcolor="#ffffff"><td><a href="#DMI_RANDOM_USED_ONLY_ONCE">DMI: Random objec
t created and used only once</a></td><td>Bad practice</td></tr> | 74 <tr bgcolor="#ffffff"><td><a href="#DMI_RANDOM_USED_ONLY_ONCE">DMI: Random objec
t created and used only once</a></td><td>Bad practice</td></tr> |
72 <tr bgcolor="#eeeeee"><td><a href="#DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI
: Don't use removeAll to clear a collection</a></td><td>Bad practice</td></tr> | 75 <tr bgcolor="#eeeeee"><td><a href="#DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI
: Don't use removeAll to clear a collection</a></td><td>Bad practice</td></tr> |
73 <tr bgcolor="#ffffff"><td><a href="#DM_EXIT">Dm: La méthode invoque System.exit(
...)</a></td><td>Bad practice</td></tr> | 76 <tr bgcolor="#ffffff"><td><a href="#DM_EXIT">Dm: La méthode invoque System.exit(
...)</a></td><td>Bad practice</td></tr> |
74 <tr bgcolor="#eeeeee"><td><a href="#DM_RUN_FINALIZERS_ON_EXIT">Dm: Méthode invoq
uant runFinalizersOnExit, l'une des plus dangeureuses méthodes des librairies Ja
va</a></td><td>Bad practice</td></tr> | 77 <tr bgcolor="#eeeeee"><td><a href="#DM_RUN_FINALIZERS_ON_EXIT">Dm: Méthode invoq
uant runFinalizersOnExit, l'une des plus dangeureuses méthodes des librairies Ja
va</a></td><td>Bad practice</td></tr> |
75 <tr bgcolor="#ffffff"><td><a href="#ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: C
omparison of String parameter using == or !=</a></td><td>Bad practice</td></tr> | 78 <tr bgcolor="#ffffff"><td><a href="#ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: C
omparison of String parameter using == or !=</a></td><td>Bad practice</td></tr> |
76 <tr bgcolor="#eeeeee"><td><a href="#ES_COMPARING_STRINGS_WITH_EQ">ES: Comparaiso
n d'objets String utilisant == ou !=</a></td><td>Bad practice</td></tr> | 79 <tr bgcolor="#eeeeee"><td><a href="#ES_COMPARING_STRINGS_WITH_EQ">ES: Comparaiso
n d'objets String utilisant == ou !=</a></td><td>Bad practice</td></tr> |
(...skipping 15 matching lines...) Expand all Loading... |
92 <tr bgcolor="#eeeeee"><td><a href="#HE_EQUALS_USE_HASHCODE">HE: La classe défini
t equals() et utilise Object.hashCode()</a></td><td>Bad practice</td></tr> | 95 <tr bgcolor="#eeeeee"><td><a href="#HE_EQUALS_USE_HASHCODE">HE: La classe défini
t equals() et utilise Object.hashCode()</a></td><td>Bad practice</td></tr> |
93 <tr bgcolor="#ffffff"><td><a href="#HE_HASHCODE_NO_EQUALS">HE: La classe définit
hashCode() mais pas equals()</a></td><td>Bad practice</td></tr> | 96 <tr bgcolor="#ffffff"><td><a href="#HE_HASHCODE_NO_EQUALS">HE: La classe définit
hashCode() mais pas equals()</a></td><td>Bad practice</td></tr> |
94 <tr bgcolor="#eeeeee"><td><a href="#HE_HASHCODE_USE_OBJECT_EQUALS">HE: La classe
définit hashCode() et utilise Object.equals()</a></td><td>Bad practice</td></tr
> | 97 <tr bgcolor="#eeeeee"><td><a href="#HE_HASHCODE_USE_OBJECT_EQUALS">HE: La classe
définit hashCode() et utilise Object.equals()</a></td><td>Bad practice</td></tr
> |
95 <tr bgcolor="#ffffff"><td><a href="#HE_INHERITS_EQUALS_USE_HASHCODE">HE: La clas
se hérite de equals() et utilise Object.hashCode()</a></td><td>Bad practice</td>
</tr> | 98 <tr bgcolor="#ffffff"><td><a href="#HE_INHERITS_EQUALS_USE_HASHCODE">HE: La clas
se hérite de equals() et utilise Object.hashCode()</a></td><td>Bad practice</td>
</tr> |
96 <tr bgcolor="#eeeeee"><td><a href="#IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZ
ATION">IC: Classe mère utilisant une sous-classe durant son initialisation</a></
td><td>Bad practice</td></tr> | 99 <tr bgcolor="#eeeeee"><td><a href="#IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZ
ATION">IC: Classe mère utilisant une sous-classe durant son initialisation</a></
td><td>Bad practice</td></tr> |
97 <tr bgcolor="#ffffff"><td><a href="#IMSE_DONT_CATCH_IMSE">IMSE: Interception dou
teuse d'une IllegalMonitorStateException</a></td><td>Bad practice</td></tr> | 100 <tr bgcolor="#ffffff"><td><a href="#IMSE_DONT_CATCH_IMSE">IMSE: Interception dou
teuse d'une IllegalMonitorStateException</a></td><td>Bad practice</td></tr> |
98 <tr bgcolor="#eeeeee"><td><a href="#ISC_INSTANTIATE_STATIC_CLASS">ISC: Instantia
tion inutile d'une classe qui n'a que des méthodes statiques</a></td><td>Bad pra
ctice</td></tr> | 101 <tr bgcolor="#eeeeee"><td><a href="#ISC_INSTANTIATE_STATIC_CLASS">ISC: Instantia
tion inutile d'une classe qui n'a que des méthodes statiques</a></td><td>Bad pra
ctice</td></tr> |
99 <tr bgcolor="#ffffff"><td><a href="#IT_NO_SUCH_ELEMENT">It: La méthode next() de
Iterator ne peut pas déclencher une exception NoSuchElement</a></td><td>Bad pra
ctice</td></tr> | 102 <tr bgcolor="#ffffff"><td><a href="#IT_NO_SUCH_ELEMENT">It: La méthode next() de
Iterator ne peut pas déclencher une exception NoSuchElement</a></td><td>Bad pra
ctice</td></tr> |
100 <tr bgcolor="#eeeeee"><td><a href="#J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_S
ESSION">J2EE: Stockage d'un objet non serialisable dans une session Http</a></td
><td>Bad practice</td></tr> | 103 <tr bgcolor="#eeeeee"><td><a href="#J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_S
ESSION">J2EE: Stockage d'un objet non serialisable dans une session Http</a></td
><td>Bad practice</td></tr> |
101 <tr bgcolor="#ffffff"><td><a href="#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JC
IP: Les champs d'une classe immuable devraient être finaux.</a></td><td>Bad prac
tice</td></tr> | 104 <tr bgcolor="#ffffff"><td><a href="#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JC
IP: Les champs d'une classe immuable devraient être finaux.</a></td><td>Bad prac
tice</td></tr> |
| 105 <tr bgcolor="#eeeeee"><td><a href="#ME_ENUM_FIELD_SETTER">ME: Public enum method
unconditionally sets its field</a></td><td>Bad practice</td></tr> |
| 106 <tr bgcolor="#ffffff"><td><a href="#ME_MUTABLE_ENUM_FIELD">ME: Enum field is pub
lic and mutable</a></td><td>Bad practice</td></tr> |
102 <tr bgcolor="#eeeeee"><td><a href="#NP_BOOLEAN_RETURN_NULL">NP: Method with Bool
ean return type returns explicit null</a></td><td>Bad practice</td></tr> | 107 <tr bgcolor="#eeeeee"><td><a href="#NP_BOOLEAN_RETURN_NULL">NP: Method with Bool
ean return type returns explicit null</a></td><td>Bad practice</td></tr> |
103 <tr bgcolor="#ffffff"><td><a href="#NP_CLONE_COULD_RETURN_NULL">NP: Clone method
may return null</a></td><td>Bad practice</td></tr> | 108 <tr bgcolor="#ffffff"><td><a href="#NP_CLONE_COULD_RETURN_NULL">NP: Clone method
may return null</a></td><td>Bad practice</td></tr> |
104 <tr bgcolor="#eeeeee"><td><a href="#NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: M
éthode equals() ne vérifiant pas la nullité</a></td><td>Bad practice</td></tr> | 109 <tr bgcolor="#eeeeee"><td><a href="#NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: M
éthode equals() ne vérifiant pas la nullité</a></td><td>Bad practice</td></tr> |
105 <tr bgcolor="#ffffff"><td><a href="#NP_TOSTRING_COULD_RETURN_NULL">NP: toString
method may return null</a></td><td>Bad practice</td></tr> | 110 <tr bgcolor="#ffffff"><td><a href="#NP_TOSTRING_COULD_RETURN_NULL">NP: toString
method may return null</a></td><td>Bad practice</td></tr> |
106 <tr bgcolor="#eeeeee"><td><a href="#NM_CLASS_NAMING_CONVENTION">Nm: Nom de class
e devant commencer par une majuscule</a></td><td>Bad practice</td></tr> | 111 <tr bgcolor="#eeeeee"><td><a href="#NM_CLASS_NAMING_CONVENTION">Nm: Nom de class
e devant commencer par une majuscule</a></td><td>Bad practice</td></tr> |
107 <tr bgcolor="#ffffff"><td><a href="#NM_CLASS_NOT_EXCEPTION">Nm: Cette classe ne
dérive pas d'Exception, même si son nom le sous-entend</a></td><td>Bad practice<
/td></tr> | 112 <tr bgcolor="#ffffff"><td><a href="#NM_CLASS_NOT_EXCEPTION">Nm: Cette classe ne
dérive pas d'Exception, même si son nom le sous-entend</a></td><td>Bad practice<
/td></tr> |
108 <tr bgcolor="#eeeeee"><td><a href="#NM_CONFUSING">Nm: Noms de méthodes ambigus</
a></td><td>Bad practice</td></tr> | 113 <tr bgcolor="#eeeeee"><td><a href="#NM_CONFUSING">Nm: Noms de méthodes ambigus</
a></td><td>Bad practice</td></tr> |
109 <tr bgcolor="#ffffff"><td><a href="#NM_FIELD_NAMING_CONVENTION">Nm: Nom de champ
devant commencer par une minuscule</a></td><td>Bad practice</td></tr> | 114 <tr bgcolor="#ffffff"><td><a href="#NM_FIELD_NAMING_CONVENTION">Nm: Nom de champ
devant commencer par une minuscule</a></td><td>Bad practice</td></tr> |
110 <tr bgcolor="#eeeeee"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Us
e of identifier that is a keyword in later versions of Java</a></td><td>Bad prac
tice</td></tr> | 115 <tr bgcolor="#eeeeee"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Us
e of identifier that is a keyword in later versions of Java</a></td><td>Bad prac
tice</td></tr> |
111 <tr bgcolor="#ffffff"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER"
>Nm: Use of identifier that is a keyword in later versions of Java</a></td><td>B
ad practice</td></tr> | 116 <tr bgcolor="#ffffff"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER"
>Nm: Use of identifier that is a keyword in later versions of Java</a></td><td>B
ad practice</td></tr> |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_DOWNCAST">BC: Impossible downc
ast</a></td><td>Correctness</td></tr> | 150 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_DOWNCAST">BC: Impossible downc
ast</a></td><td>Correctness</td></tr> |
146 <tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: Impos
sible downcast of toArray() result</a></td><td>Correctness</td></tr> | 151 <tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: Impos
sible downcast of toArray() result</a></td><td>Correctness</td></tr> |
147 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_INSTANCEOF">BC: instanceof ren
verra toujours faux</a></td><td>Correctness</td></tr> | 152 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_INSTANCEOF">BC: instanceof ren
verra toujours faux</a></td><td>Correctness</td></tr> |
148 <tr bgcolor="#eeeeee"><td><a href="#BIT_ADD_OF_SIGNED_BYTE">BIT: Bitwise add of
signed byte value</a></td><td>Correctness</td></tr> | 153 <tr bgcolor="#eeeeee"><td><a href="#BIT_ADD_OF_SIGNED_BYTE">BIT: Bitwise add of
signed byte value</a></td><td>Correctness</td></tr> |
149 <tr bgcolor="#ffffff"><td><a href="#BIT_AND">BIT: Masques binaires incompatibles
</a></td><td>Correctness</td></tr> | 154 <tr bgcolor="#ffffff"><td><a href="#BIT_AND">BIT: Masques binaires incompatibles
</a></td><td>Correctness</td></tr> |
150 <tr bgcolor="#eeeeee"><td><a href="#BIT_AND_ZZ">BIT: Masques binaires incompatib
les</a></td><td>Correctness</td></tr> | 155 <tr bgcolor="#eeeeee"><td><a href="#BIT_AND_ZZ">BIT: Masques binaires incompatib
les</a></td><td>Correctness</td></tr> |
151 <tr bgcolor="#ffffff"><td><a href="#BIT_IOR">BIT: Masques binaires incompatibles
</a></td><td>Correctness</td></tr> | 156 <tr bgcolor="#ffffff"><td><a href="#BIT_IOR">BIT: Masques binaires incompatibles
</a></td><td>Correctness</td></tr> |
152 <tr bgcolor="#eeeeee"><td><a href="#BIT_IOR_OF_SIGNED_BYTE">BIT: Ou binaire d'un
octet signé</a></td><td>Correctness</td></tr> | 157 <tr bgcolor="#eeeeee"><td><a href="#BIT_IOR_OF_SIGNED_BYTE">BIT: Ou binaire d'un
octet signé</a></td><td>Correctness</td></tr> |
153 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK_HIGH_BIT">BIT: Check for si
gn of bitwise operation</a></td><td>Correctness</td></tr> | 158 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK_HIGH_BIT">BIT: Check for si
gn of bitwise operation</a></td><td>Correctness</td></tr> |
154 <tr bgcolor="#eeeeee"><td><a href="#BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: La classe
surcharge mal une méthode implémentée dans une superclasse Adapter</a></td><td>
Correctness</td></tr> | 159 <tr bgcolor="#eeeeee"><td><a href="#BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: La classe
surcharge mal une méthode implémentée dans une superclasse Adapter</a></td><td>
Correctness</td></tr> |
155 <tr bgcolor="#ffffff"><td><a href="#ICAST_BAD_SHIFT_AMOUNT">BSHIFT: Décalage d'u
n int hors de proportion (0..31)</a></td><td>Correctness</td></tr> | 160 <tr bgcolor="#ffffff"><td><a href="#BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: Possible
bad parsing of shift operation</a></td><td>Correctness</td></tr> |
156 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR"
>Bx: Primitive value is unboxed and coerced for ternary operator</a></td><td>Cor
rectness</td></tr> | 161 <tr bgcolor="#eeeeee"><td><a href="#ICAST_BAD_SHIFT_AMOUNT">BSHIFT: Décalage d'u
n int hors de proportion (0..31)</a></td><td>Correctness</td></tr> |
157 <tr bgcolor="#ffffff"><td><a href="#CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareT
o()/compare() returns Integer.MIN_VALUE</a></td><td>Correctness</td></tr> | 162 <tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: Use
less increment in return statement</a></td><td>Correctness</td></tr> |
158 <tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: Use
less increment in return statement</a></td><td>Correctness</td></tr> | 163 <tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: Dead s
tore of class literal</a></td><td>Correctness</td></tr> |
159 <tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: Dead s
tore of class literal</a></td><td>Correctness</td></tr> | 164 <tr bgcolor="#ffffff"><td><a href="#DLS_OVERWRITTEN_INCREMENT">DLS: Incrémentati
on annulée</a></td><td>Correctness</td></tr> |
160 <tr bgcolor="#eeeeee"><td><a href="#DLS_OVERWRITTEN_INCREMENT">DLS: Incrémentati
on annulée</a></td><td>Correctness</td></tr> | 165 <tr bgcolor="#eeeeee"><td><a href="#DMI_ARGUMENTS_WRONG_ORDER">DMI: Reversed met
hod arguments</a></td><td>Correctness</td></tr> |
161 <tr bgcolor="#ffffff"><td><a href="#DMI_ARGUMENTS_WRONG_ORDER">DMI: Reversed met
hod arguments</a></td><td>Correctness</td></tr> | 166 <tr bgcolor="#ffffff"><td><a href="#DMI_BAD_MONTH">DMI: Valeur constante pour un
mois en dehors de l'intervalle attendu de 0 à 11</a></td><td>Correctness</td></
tr> |
162 <tr bgcolor="#eeeeee"><td><a href="#DMI_BAD_MONTH">DMI: Valeur constante pour un
mois en dehors de l'intervalle attendu de 0 à 11</a></td><td>Correctness</td></
tr> | 167 <tr bgcolor="#eeeeee"><td><a href="#DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI:
BigDecimal constructed from double that isn't represented precisely</a></td><td
>Correctness</td></tr> |
163 <tr bgcolor="#ffffff"><td><a href="#DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI:
BigDecimal constructed from double that isn't represented precisely</a></td><td
>Correctness</td></tr> | 168 <tr bgcolor="#ffffff"><td><a href="#DMI_CALLING_NEXT_FROM_HASNEXT">DMI: Méthode
hasNext() appelant next()</a></td><td>Correctness</td></tr> |
164 <tr bgcolor="#eeeeee"><td><a href="#DMI_CALLING_NEXT_FROM_HASNEXT">DMI: Méthode
hasNext() appelant next()</a></td><td>Correctness</td></tr> | 169 <tr bgcolor="#eeeeee"><td><a href="#DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVE
S">DMI: Collections should not contain themselves</a></td><td>Correctness</td></
tr> |
165 <tr bgcolor="#ffffff"><td><a href="#DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVE
S">DMI: Collections should not contain themselves</a></td><td>Correctness</td></
tr> | 170 <tr bgcolor="#ffffff"><td><a href="#DMI_DOH">DMI: D'oh! A nonsensical method inv
ocation</a></td><td>Correctness</td></tr> |
166 <tr bgcolor="#eeeeee"><td><a href="#DMI_DOH">DMI: D'oh! A nonsensical method inv
ocation</a></td><td>Correctness</td></tr> | 171 <tr bgcolor="#eeeeee"><td><a href="#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: Invocat
ion of hashCode on an array</a></td><td>Correctness</td></tr> |
167 <tr bgcolor="#ffffff"><td><a href="#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: Invocat
ion of hashCode on an array</a></td><td>Correctness</td></tr> | 172 <tr bgcolor="#ffffff"><td><a href="#DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI:
Double.longBitsToDouble invoked on an int</a></td><td>Correctness</td></tr> |
168 <tr bgcolor="#eeeeee"><td><a href="#DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI:
Double.longBitsToDouble invoked on an int</a></td><td>Correctness</td></tr> | 173 <tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: Vacuo
us call to collections</a></td><td>Correctness</td></tr> |
169 <tr bgcolor="#ffffff"><td><a href="#DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: Vacuo
us call to collections</a></td><td>Correctness</td></tr> | 174 <tr bgcolor="#ffffff"><td><a href="#DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION"
>Dm: La réflexion ne peut pas être utilisée pour vérifier la présence d'une anno
tation avec la rétention par défaut</a></td><td>Correctness</td></tr> |
170 <tr bgcolor="#eeeeee"><td><a href="#DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION"
>Dm: La réflexion ne peut pas être utilisée pour vérifier la présence d'une anno
tation avec la rétention par défaut</a></td><td>Correctness</td></tr> | 175 <tr bgcolor="#eeeeee"><td><a href="#DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF
_SCHEDULED_THREAD_POOL_EXECUTOR">Dm: Futile attempt to change max pool size of S
cheduledThreadPoolExecutor</a></td><td>Correctness</td></tr> |
171 <tr bgcolor="#ffffff"><td><a href="#DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF
_SCHEDULED_THREAD_POOL_EXECUTOR">Dm: Futile attempt to change max pool size of S
cheduledThreadPoolExecutor</a></td><td>Correctness</td></tr> | 176 <tr bgcolor="#ffffff"><td><a href="#DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO
_CORE_THREADS">Dm: Creation of ScheduledThreadPoolExecutor with zero core thread
s</a></td><td>Correctness</td></tr> |
172 <tr bgcolor="#eeeeee"><td><a href="#DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO
_CORE_THREADS">Dm: Creation of ScheduledThreadPoolExecutor with zero core thread
s</a></td><td>Correctness</td></tr> | 177 <tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Use
less/vacuous call to EasyMock method</a></td><td>Correctness</td></tr> |
173 <tr bgcolor="#ffffff"><td><a href="#DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Use
less/vacuous call to EasyMock method</a></td><td>Correctness</td></tr> | 178 <tr bgcolor="#ffffff"><td><a href="#DM_INVALID_MIN_MAX">Dm: Incorrect combinatio
n of Math.max and Math.min</a></td><td>Correctness</td></tr> |
174 <tr bgcolor="#eeeeee"><td><a href="#EC_ARRAY_AND_NONARRAY">EC: Utilisation de eq
uals() pour comparer un tableau et un objet</a></td><td>Correctness</td></tr> | 179 <tr bgcolor="#eeeeee"><td><a href="#EC_ARRAY_AND_NONARRAY">EC: Utilisation de eq
uals() pour comparer un tableau et un objet</a></td><td>Correctness</td></tr> |
175 <tr bgcolor="#ffffff"><td><a href="#EC_BAD_ARRAY_COMPARE">EC: Appel à equals() s
ur un tableau équivalent à ==</a></td><td>Correctness</td></tr> | 180 <tr bgcolor="#ffffff"><td><a href="#EC_BAD_ARRAY_COMPARE">EC: Appel à equals() s
ur un tableau équivalent à ==</a></td><td>Correctness</td></tr> |
176 <tr bgcolor="#eeeeee"><td><a href="#EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(..
.) used to compare incompatible arrays</a></td><td>Correctness</td></tr> | 181 <tr bgcolor="#eeeeee"><td><a href="#EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(..
.) used to compare incompatible arrays</a></td><td>Correctness</td></tr> |
177 <tr bgcolor="#ffffff"><td><a href="#EC_NULL_ARG">EC: Appel de equals() avec un a
rgument à null</a></td><td>Correctness</td></tr> | 182 <tr bgcolor="#ffffff"><td><a href="#EC_NULL_ARG">EC: Appel de equals() avec un a
rgument à null</a></td><td>Correctness</td></tr> |
178 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_CLASS_AND_INTERFACE">EC: Appel
de equals() comparant une classe et une interface sans relation</a></td><td>Corr
ectness</td></tr> | 183 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_CLASS_AND_INTERFACE">EC: Appel
de equals() comparant une classe et une interface sans relation</a></td><td>Corr
ectness</td></tr> |
179 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_INTERFACES">EC: Appel de equals
() comparant différentes interfaces</a></td><td>Correctness</td></tr> | 184 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_INTERFACES">EC: Appel de equals
() comparant différentes interfaces</a></td><td>Correctness</td></tr> |
180 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_TYPES">EC: Appel de equals() co
mparant des types différents</a></td><td>Correctness</td></tr> | 185 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_TYPES">EC: Appel de equals() co
mparant des types différents</a></td><td>Correctness</td></tr> |
181 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">E
C: Using pointer equality to compare different types</a></td><td>Correctness</td
></tr> | 186 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">E
C: Using pointer equality to compare different types</a></td><td>Correctness</td
></tr> |
182 <tr bgcolor="#eeeeee"><td><a href="#EQ_ALWAYS_FALSE">Eq: equals method always re
turns false</a></td><td>Correctness</td></tr> | 187 <tr bgcolor="#eeeeee"><td><a href="#EQ_ALWAYS_FALSE">Eq: equals method always re
turns false</a></td><td>Correctness</td></tr> |
183 <tr bgcolor="#ffffff"><td><a href="#EQ_ALWAYS_TRUE">Eq: equals method always ret
urns true</a></td><td>Correctness</td></tr> | 188 <tr bgcolor="#ffffff"><td><a href="#EQ_ALWAYS_TRUE">Eq: equals method always ret
urns true</a></td><td>Correctness</td></tr> |
(...skipping 21 matching lines...) Expand all Loading... |
205 <tr bgcolor="#ffffff"><td><a href="#IJU_BAD_SUITE_METHOD">IJU: TestCase declares
a bad suite method </a></td><td>Correctness</td></tr> | 210 <tr bgcolor="#ffffff"><td><a href="#IJU_BAD_SUITE_METHOD">IJU: TestCase declares
a bad suite method </a></td><td>Correctness</td></tr> |
206 <tr bgcolor="#eeeeee"><td><a href="#IJU_NO_TESTS">IJU: TestCase sans tests</a></
td><td>Correctness</td></tr> | 211 <tr bgcolor="#eeeeee"><td><a href="#IJU_NO_TESTS">IJU: TestCase sans tests</a></
td><td>Correctness</td></tr> |
207 <tr bgcolor="#ffffff"><td><a href="#IJU_SETUP_NO_SUPER">IJU: Une classe dérivant
de TestCase implémente setUp() sans appeler super.setUp()</a></td><td>Correctne
ss</td></tr> | 212 <tr bgcolor="#ffffff"><td><a href="#IJU_SETUP_NO_SUPER">IJU: Une classe dérivant
de TestCase implémente setUp() sans appeler super.setUp()</a></td><td>Correctne
ss</td></tr> |
208 <tr bgcolor="#eeeeee"><td><a href="#IJU_SUITE_NOT_STATIC">IJU: Une classe dériva
nt de TestCase implémente une méthode suite() non statique</a></td><td>Correctne
ss</td></tr> | 213 <tr bgcolor="#eeeeee"><td><a href="#IJU_SUITE_NOT_STATIC">IJU: Une classe dériva
nt de TestCase implémente une méthode suite() non statique</a></td><td>Correctne
ss</td></tr> |
209 <tr bgcolor="#ffffff"><td><a href="#IJU_TEARDOWN_NO_SUPER">IJU: Une classe dériv
ant de TestCase implémente tearDown() sans appeler super.tearDown()</a></td><td>
Correctness</td></tr> | 214 <tr bgcolor="#ffffff"><td><a href="#IJU_TEARDOWN_NO_SUPER">IJU: Une classe dériv
ant de TestCase implémente tearDown() sans appeler super.tearDown()</a></td><td>
Correctness</td></tr> |
210 <tr bgcolor="#eeeeee"><td><a href="#IL_CONTAINER_ADDED_TO_ITSELF">IL: Un contene
ur est ajouté à lui-même</a></td><td>Correctness</td></tr> | 215 <tr bgcolor="#eeeeee"><td><a href="#IL_CONTAINER_ADDED_TO_ITSELF">IL: Un contene
ur est ajouté à lui-même</a></td><td>Correctness</td></tr> |
211 <tr bgcolor="#ffffff"><td><a href="#IL_INFINITE_LOOP">IL: Boucle apparemment ini
finie</a></td><td>Correctness</td></tr> | 216 <tr bgcolor="#ffffff"><td><a href="#IL_INFINITE_LOOP">IL: Boucle apparemment ini
finie</a></td><td>Correctness</td></tr> |
212 <tr bgcolor="#eeeeee"><td><a href="#IL_INFINITE_RECURSIVE_LOOP">IL: Boucle récur
sive infinie</a></td><td>Correctness</td></tr> | 217 <tr bgcolor="#eeeeee"><td><a href="#IL_INFINITE_RECURSIVE_LOOP">IL: Boucle récur
sive infinie</a></td><td>Correctness</td></tr> |
213 <tr bgcolor="#ffffff"><td><a href="#IM_MULTIPLYING_RESULT_OF_IREM">IM: Multiplic
ation d'un entier avec le résulat entier d'un modulo</a></td><td>Correctness</td
></tr> | 218 <tr bgcolor="#ffffff"><td><a href="#IM_MULTIPLYING_RESULT_OF_IREM">IM: Multiplic
ation d'un entier avec le résulat entier d'un modulo</a></td><td>Correctness</td
></tr> |
214 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_INT_VALUE">INT: Bad
comparison of int value with long constant</a></td><td>Correctness</td></tr> | 219 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_INT_VALUE">INT: Bad
comparison of int value with long constant</a></td><td>Correctness</td></tr> |
215 <tr bgcolor="#ffffff"><td><a href="#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">I
NT: Bad comparison of nonnegative value with negative constant</a></td><td>Corre
ctness</td></tr> | 220 <tr bgcolor="#ffffff"><td><a href="#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">I
NT: Bad comparison of nonnegative value with negative constant or zero</a></td><
td>Correctness</td></tr> |
216 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: Ba
d comparison of signed byte</a></td><td>Correctness</td></tr> | 221 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: Ba
d comparison of signed byte</a></td><td>Correctness</td></tr> |
217 <tr bgcolor="#ffffff"><td><a href="#IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: Do
omed attempt to append to an object output stream</a></td><td>Correctness</td></
tr> | 222 <tr bgcolor="#ffffff"><td><a href="#IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: Do
omed attempt to append to an object output stream</a></td><td>Correctness</td></
tr> |
218 <tr bgcolor="#eeeeee"><td><a href="#IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: Un
paramètre est ré-écrit avant d'être utilisé</a></td><td>Correctness</td></tr> | 223 <tr bgcolor="#eeeeee"><td><a href="#IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: Un
paramètre est ré-écrit avant d'être utilisé</a></td><td>Correctness</td></tr> |
219 <tr bgcolor="#ffffff"><td><a href="#MF_CLASS_MASKS_FIELD">MF: La classe définit
un champ qui masque un champ d'une classe mère</a></td><td>Correctness</td></tr> | 224 <tr bgcolor="#ffffff"><td><a href="#MF_CLASS_MASKS_FIELD">MF: La classe définit
un champ qui masque un champ d'une classe mère</a></td><td>Correctness</td></tr> |
220 <tr bgcolor="#eeeeee"><td><a href="#MF_METHOD_MASKS_FIELD">MF: La méthode défini
t une variable qui masque un champ</a></td><td>Correctness</td></tr> | 225 <tr bgcolor="#eeeeee"><td><a href="#MF_METHOD_MASKS_FIELD">MF: La méthode défini
t une variable qui masque un champ</a></td><td>Correctness</td></tr> |
221 <tr bgcolor="#ffffff"><td><a href="#NP_ALWAYS_NULL">NP: Déréférencement d'un poi
nteur null dans la méthode</a></td><td>Correctness</td></tr> | 226 <tr bgcolor="#ffffff"><td><a href="#NP_ALWAYS_NULL">NP: Déréférencement d'un poi
nteur null dans la méthode</a></td><td>Correctness</td></tr> |
222 <tr bgcolor="#eeeeee"><td><a href="#NP_ALWAYS_NULL_EXCEPTION">NP: Déréférencemen
t d'un pointeur null dans le chemin d'exception d'une méthode</a></td><td>Correc
tness</td></tr> | 227 <tr bgcolor="#eeeeee"><td><a href="#NP_ALWAYS_NULL_EXCEPTION">NP: Déréférencemen
t d'un pointeur null dans le chemin d'exception d'une méthode</a></td><td>Correc
tness</td></tr> |
223 <tr bgcolor="#ffffff"><td><a href="#NP_ARGUMENT_MIGHT_BE_NULL">NP: Méthode ne te
stant pas les paramètres à null</a></td><td>Correctness</td></tr> | 228 <tr bgcolor="#ffffff"><td><a href="#NP_ARGUMENT_MIGHT_BE_NULL">NP: Méthode ne te
stant pas les paramètres à null</a></td><td>Correctness</td></tr> |
224 <tr bgcolor="#eeeeee"><td><a href="#NP_CLOSING_NULL">NP: close() invoked on a va
lue that is always null</a></td><td>Correctness</td></tr> | 229 <tr bgcolor="#eeeeee"><td><a href="#NP_CLOSING_NULL">NP: close() invoked on a va
lue that is always null</a></td><td>Correctness</td></tr> |
225 <tr bgcolor="#ffffff"><td><a href="#NP_GUARANTEED_DEREF">NP: Null déréférencé</a
></td><td>Correctness</td></tr> | 230 <tr bgcolor="#ffffff"><td><a href="#NP_GUARANTEED_DEREF">NP: Null déréférencé</a
></td><td>Correctness</td></tr> |
226 <tr bgcolor="#eeeeee"><td><a href="#NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: V
alue is null and guaranteed to be dereferenced on exception path</a></td><td>Cor
rectness</td></tr> | 231 <tr bgcolor="#eeeeee"><td><a href="#NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: V
alue is null and guaranteed to be dereferenced on exception path</a></td><td>Cor
rectness</td></tr> |
227 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUC
TOR">NP: Nonnull field is not initialized</a></td><td>Correctness</td></tr> | 232 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUC
TOR">NP: Non-null field is not initialized</a></td><td>Correctness</td></tr> |
228 <tr bgcolor="#eeeeee"><td><a href="#NP_NONNULL_PARAM_VIOLATION">NP: Appel de mét
hode transmettant null à un paramètre déclaré @NonNull</a></td><td>Correctness</
td></tr> | 233 <tr bgcolor="#eeeeee"><td><a href="#NP_NONNULL_PARAM_VIOLATION">NP: Appel de mét
hode transmettant null à un paramètre déclaré @NonNull</a></td><td>Correctness</
td></tr> |
229 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_RETURN_VIOLATION">NP: Méthode ren
voyer null mais déclarée @NonNull</a></td><td>Correctness</td></tr> | 234 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_RETURN_VIOLATION">NP: Méthode ren
voyer null mais déclarée @NonNull</a></td><td>Correctness</td></tr> |
230 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_INSTANCEOF">NP: A known null value i
s checked to see if it is an instance of a type</a></td><td>Correctness</td></tr
> | 235 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_INSTANCEOF">NP: A known null value i
s checked to see if it is an instance of a type</a></td><td>Correctness</td></tr
> |
231 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH">NP: Possible déréféren
cement d'un pointeur null dans une méthode</a></td><td>Correctness</td></tr> | 236 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH">NP: Possible déréféren
cement d'un pointeur null dans une méthode</a></td><td>Correctness</td></tr> |
232 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_EXCEPTION">NP: Possible
déréférencement d'un pointeur null dans le chemin d'exception d'une méthode</a>
</td><td>Correctness</td></tr> | 237 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_EXCEPTION">NP: Possible
déréférencement d'un pointeur null dans le chemin d'exception d'une méthode</a>
</td><td>Correctness</td></tr> |
233 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF">NP: Méthode passant nul
l à un paramètre déréférencé inconditionnellement</a></td><td>Correctness</td></
tr> | 238 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF">NP: Méthode passant nul
l à un paramètre déréférencé inconditionnellement</a></td><td>Correctness</td></
tr> |
234 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">N
P: Appel de méthode passant null à un paramètre déréférencé inconditionnellement
</a></td><td>Correctness</td></tr> | 239 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">N
P: Appel de méthode passant null à un paramètre déréférencé inconditionnellement
</a></td><td>Correctness</td></tr> |
235 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: Appel à
une méthode non virtuelle passant null à un paramètre déréférencé de façon incon
ditionnelle</a></td><td>Correctness</td></tr> | 240 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: Appel à
une méthode non virtuelle passant null à un paramètre déréférencé de façon incon
ditionnelle</a></td><td>Correctness</td></tr> |
236 <tr bgcolor="#eeeeee"><td><a href="#NP_OPTIONAL_RETURN_NULL">NP: Method with Opt
ional return type returns explicit null</a></td><td>Correctness</td></tr> | 241 <tr bgcolor="#eeeeee"><td><a href="#NP_OPTIONAL_RETURN_NULL">NP: Method with Opt
ional return type returns explicit null</a></td><td>Correctness</td></tr> |
237 <tr bgcolor="#ffffff"><td><a href="#NP_STORE_INTO_NONNULL_FIELD">NP: Stocke une
valeur null dans un champ annoté NonNull</a></td><td>Correctness</td></tr> | 242 <tr bgcolor="#ffffff"><td><a href="#NP_STORE_INTO_NONNULL_FIELD">NP: Stocke une
valeur null dans un champ annoté NonNull</a></td><td>Correctness</td></tr> |
238 <tr bgcolor="#eeeeee"><td><a href="#NP_UNWRITTEN_FIELD">NP: Lecture d'un champ j
amais écrit</a></td><td>Correctness</td></tr> | 243 <tr bgcolor="#eeeeee"><td><a href="#NP_UNWRITTEN_FIELD">NP: Lecture d'un champ j
amais écrit</a></td><td>Correctness</td></tr> |
239 <tr bgcolor="#ffffff"><td><a href="#NM_BAD_EQUAL">Nm: La classe définit equal()
; ne devrait-ce pas être equals() ?</a></td><td>Correctness</td></tr> | 244 <tr bgcolor="#ffffff"><td><a href="#NM_BAD_EQUAL">Nm: La classe définit equal()
; ne devrait-ce pas être equals() ?</a></td><td>Correctness</td></tr> |
240 <tr bgcolor="#eeeeee"><td><a href="#NM_LCASE_HASHCODE">Nm: La classe définit has
hcode() ; ne devrait-ce pas être hashCode() ?</a></td><td>Correctness</td></tr> | 245 <tr bgcolor="#eeeeee"><td><a href="#NM_LCASE_HASHCODE">Nm: La classe définit has
hcode() ; ne devrait-ce pas être hashCode() ?</a></td><td>Correctness</td></tr> |
241 <tr bgcolor="#ffffff"><td><a href="#NM_LCASE_TOSTRING">Nm: La classe définit tos
tring() ; ne devrait-ce pas être toString() ?</a></td><td>Correctness</td></tr> | 246 <tr bgcolor="#ffffff"><td><a href="#NM_LCASE_TOSTRING">Nm: La classe définit tos
tring() ; ne devrait-ce pas être toString() ?</a></td><td>Correctness</td></tr> |
242 <tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: Confusi
on apparente entre une méthode et un constructeur</a></td><td>Correctness</td></
tr> | 247 <tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: Confusi
on apparente entre une méthode et un constructeur</a></td><td>Correctness</td></
tr> |
243 <tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING">Nm: Noms de méthodes très
ambigus</a></td><td>Correctness</td></tr> | 248 <tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING">Nm: Noms de méthodes très
ambigus</a></td><td>Correctness</td></tr> |
244 <tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE">Nm: Method doesn't overrid
e method in superclass due to wrong package for parameter</a></td><td>Correctnes
s</td></tr> | 249 <tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE">Nm: Method doesn't overrid
e method in superclass due to wrong package for parameter</a></td><td>Correctnes
s</td></tr> |
245 <tr bgcolor="#ffffff"><td><a href="#QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: Mé
thode assignant une valeur boléenne fixe dans une expression booléenne</a></td><
td>Correctness</td></tr> | 250 <tr bgcolor="#ffffff"><td><a href="#QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: Mé
thode assignant une valeur boléenne fixe dans une expression booléenne</a></td><
td>Correctness</td></tr> |
| 251 <tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_INDEX">RANGE: Array index is out
of bounds</a></td><td>Correctness</td></tr> |
| 252 <tr bgcolor="#ffffff"><td><a href="#RANGE_ARRAY_LENGTH">RANGE: Array length is o
ut of bounds</a></td><td>Correctness</td></tr> |
| 253 <tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_OFFSET">RANGE: Array offset is o
ut of bounds</a></td><td>Correctness</td></tr> |
| 254 <tr bgcolor="#ffffff"><td><a href="#RANGE_STRING_INDEX">RANGE: String index is o
ut of bounds</a></td><td>Correctness</td></tr> |
246 <tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON">RC: Comparaison de référe
nces suspecte</a></td><td>Correctness</td></tr> | 255 <tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON">RC: Comparaison de référe
nces suspecte</a></td><td>Correctness</td></tr> |
247 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NP
E">RCN: Test de nullité d'une valeur préalablement déréférencée</a></td><td>Corr
ectness</td></tr> | 256 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NP
E">RCN: Test de nullité d'une valeur préalablement déréférencée</a></td><td>Corr
ectness</td></tr> |
248 <tr bgcolor="#eeeeee"><td><a href="#RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: Sy
ntaxe d'expression régulière invalide</a></td><td>Correctness</td></tr> | 257 <tr bgcolor="#eeeeee"><td><a href="#RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: Sy
ntaxe d'expression régulière invalide</a></td><td>Correctness</td></tr> |
249 <tr bgcolor="#ffffff"><td><a href="#RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRES
SION">RE: File.separator used for regular expression</a></td><td>Correctness</td
></tr> | 258 <tr bgcolor="#ffffff"><td><a href="#RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRES
SION">RE: File.separator used for regular expression</a></td><td>Correctness</td
></tr> |
250 <tr bgcolor="#eeeeee"><td><a href="#RE_POSSIBLE_UNINTENDED_PATTERN">RE: "." util
isé dans une expression régulière</a></td><td>Correctness</td></tr> | 259 <tr bgcolor="#eeeeee"><td><a href="#RE_POSSIBLE_UNINTENDED_PATTERN">RE: "." util
isé dans une expression régulière</a></td><td>Correctness</td></tr> |
251 <tr bgcolor="#ffffff"><td><a href="#RV_01_TO_INT">RV: Les valeurs aléatoires ent
re 0 et 1 sont réduites à l'entier 0</a></td><td>Correctness</td></tr> | 260 <tr bgcolor="#ffffff"><td><a href="#RV_01_TO_INT">RV: Les valeurs aléatoires ent
re 0 et 1 sont réduites à l'entier 0</a></td><td>Correctness</td></tr> |
252 <tr bgcolor="#eeeeee"><td><a href="#RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: Bad attem
pt to compute absolute value of signed 32-bit hashcode </a></td><td>Correctness<
/td></tr> | 261 <tr bgcolor="#eeeeee"><td><a href="#RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: Bad attem
pt to compute absolute value of signed 32-bit hashcode </a></td><td>Correctness<
/td></tr> |
253 <tr bgcolor="#ffffff"><td><a href="#RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: Bad att
empt to compute absolute value of signed random integer</a></td><td>Correctness<
/td></tr> | 262 <tr bgcolor="#ffffff"><td><a href="#RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: Bad att
empt to compute absolute value of signed random integer</a></td><td>Correctness<
/td></tr> |
254 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE
">RV: Code checks for specific values returned by compareTo</a></td><td>Correctn
ess</td></tr> | 263 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE
">RV: Code checks for specific values returned by compareTo</a></td><td>Correctn
ess</td></tr> |
255 <tr bgcolor="#ffffff"><td><a href="#RV_EXCEPTION_NOT_THROWN">RV: Exception creat
ed and dropped rather than thrown</a></td><td>Correctness</td></tr> | 264 <tr bgcolor="#ffffff"><td><a href="#RV_EXCEPTION_NOT_THROWN">RV: Exception creat
ed and dropped rather than thrown</a></td><td>Correctness</td></tr> |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 <tr bgcolor="#eeeeee"><td><a href="#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">
DP: Les chargeurs de classes ne doivent être créés qu'à partir de block doPrivil
eged</a></td><td>Malicious code vulnerability</td></tr> | 303 <tr bgcolor="#eeeeee"><td><a href="#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">
DP: Les chargeurs de classes ne doivent être créés qu'à partir de block doPrivil
eged</a></td><td>Malicious code vulnerability</td></tr> |
295 <tr bgcolor="#ffffff"><td><a href="#DP_DO_INSIDE_DO_PRIVILEGED">DP: Méthode invo
quée alors qu'elle ne devrait l'être qu'à partir d'un block doPrivileged</a></td
><td>Malicious code vulnerability</td></tr> | 304 <tr bgcolor="#ffffff"><td><a href="#DP_DO_INSIDE_DO_PRIVILEGED">DP: Méthode invo
quée alors qu'elle ne devrait l'être qu'à partir d'un block doPrivileged</a></td
><td>Malicious code vulnerability</td></tr> |
296 <tr bgcolor="#eeeeee"><td><a href="#EI_EXPOSE_REP">EI: Une méthode peut exposer
sa représentation interne en renvoyant une référence à un objet modifiable</a></
td><td>Malicious code vulnerability</td></tr> | 305 <tr bgcolor="#eeeeee"><td><a href="#EI_EXPOSE_REP">EI: Une méthode peut exposer
sa représentation interne en renvoyant une référence à un objet modifiable</a></
td><td>Malicious code vulnerability</td></tr> |
297 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_REP2">EI2: Une méthode expose sa r
eprésentation interne en incorporant une référence à un objet modifiable</a></td
><td>Malicious code vulnerability</td></tr> | 306 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_REP2">EI2: Une méthode expose sa r
eprésentation interne en incorporant une référence à un objet modifiable</a></td
><td>Malicious code vulnerability</td></tr> |
298 <tr bgcolor="#eeeeee"><td><a href="#FI_PUBLIC_SHOULD_BE_PROTECTED">FI: Un finali
seur devrait être protégé, pas public</a></td><td>Malicious code vulnerability</
td></tr> | 307 <tr bgcolor="#eeeeee"><td><a href="#FI_PUBLIC_SHOULD_BE_PROTECTED">FI: Un finali
seur devrait être protégé, pas public</a></td><td>Malicious code vulnerability</
td></tr> |
299 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_STATIC_REP2">MS: Une méthode peut
exposer un état interne statique en stockant un objet modifiable dans un champs
statique</a></td><td>Malicious code vulnerability</td></tr> | 308 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_STATIC_REP2">MS: Une méthode peut
exposer un état interne statique en stockant un objet modifiable dans un champs
statique</a></td><td>Malicious code vulnerability</td></tr> |
300 <tr bgcolor="#eeeeee"><td><a href="#MS_CANNOT_BE_FINAL">MS: Un champ n'est pas f
inal et ne peut pas être protégé face à du code malveillant</a></td><td>Maliciou
s code vulnerability</td></tr> | 309 <tr bgcolor="#eeeeee"><td><a href="#MS_CANNOT_BE_FINAL">MS: Un champ n'est pas f
inal et ne peut pas être protégé face à du code malveillant</a></td><td>Maliciou
s code vulnerability</td></tr> |
301 <tr bgcolor="#ffffff"><td><a href="#MS_EXPOSE_REP">MS: Une méthode statique publ
ique risque d'exposer une représentation interne en renvoyant un tableau</a></td
><td>Malicious code vulnerability</td></tr> | 310 <tr bgcolor="#ffffff"><td><a href="#MS_EXPOSE_REP">MS: Une méthode statique publ
ique risque d'exposer une représentation interne en renvoyant un tableau</a></td
><td>Malicious code vulnerability</td></tr> |
302 <tr bgcolor="#eeeeee"><td><a href="#MS_FINAL_PKGPROTECT">MS: Le champ devrait êt
re à la fois final et package protected</a></td><td>Malicious code vulnerability
</td></tr> | 311 <tr bgcolor="#eeeeee"><td><a href="#MS_FINAL_PKGPROTECT">MS: Le champ devrait êt
re à la fois final et package protected</a></td><td>Malicious code vulnerability
</td></tr> |
303 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_ARRAY">MS: Un champ est un tablea
u modifiable</a></td><td>Malicious code vulnerability</td></tr> | 312 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_ARRAY">MS: Un champ est un tablea
u modifiable</a></td><td>Malicious code vulnerability</td></tr> |
| 313 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_COLLECTION">MS: Field is a mutabl
e collection</a></td><td>Malicious code vulnerability</td></tr> |
| 314 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_COLLECTION_PKGPROTECT">MS: Field
is a mutable collection which should be package protected</a></td><td>Malicious
code vulnerability</td></tr> |
304 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_HASHTABLE">MS: Un champ modifiabl
e est une Hashtable</a></td><td>Malicious code vulnerability</td></tr> | 315 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_HASHTABLE">MS: Un champ modifiabl
e est une Hashtable</a></td><td>Malicious code vulnerability</td></tr> |
305 <tr bgcolor="#ffffff"><td><a href="#MS_OOI_PKGPROTECT">MS: Le champ devrait être
sorti de l'interface et mis en package protected</a></td><td>Malicious code vul
nerability</td></tr> | 316 <tr bgcolor="#ffffff"><td><a href="#MS_OOI_PKGPROTECT">MS: Le champ devrait être
sorti de l'interface et mis en package protected</a></td><td>Malicious code vul
nerability</td></tr> |
306 <tr bgcolor="#eeeeee"><td><a href="#MS_PKGPROTECT">MS: Un champ devrait être pac
kage protected</a></td><td>Malicious code vulnerability</td></tr> | 317 <tr bgcolor="#eeeeee"><td><a href="#MS_PKGPROTECT">MS: Un champ devrait être pac
kage protected</a></td><td>Malicious code vulnerability</td></tr> |
307 <tr bgcolor="#ffffff"><td><a href="#MS_SHOULD_BE_FINAL">MS: Un champ n'est pas f
inal alors qu'il devrait l'être</a></td><td>Malicious code vulnerability</td></t
r> | 318 <tr bgcolor="#ffffff"><td><a href="#MS_SHOULD_BE_FINAL">MS: Un champ n'est pas f
inal alors qu'il devrait l'être</a></td><td>Malicious code vulnerability</td></t
r> |
308 <tr bgcolor="#eeeeee"><td><a href="#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: Fie
ld isn't final but should be refactored to be so</a></td><td>Malicious code vuln
erability</td></tr> | 319 <tr bgcolor="#eeeeee"><td><a href="#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: Fie
ld isn't final but should be refactored to be so</a></td><td>Malicious code vuln
erability</td></tr> |
309 <tr bgcolor="#ffffff"><td><a href="#AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACT
ION">AT: Sequence of calls to concurrent abstraction may not be atomic</a></td><
td>Multithreaded correctness</td></tr> | 320 <tr bgcolor="#ffffff"><td><a href="#AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACT
ION">AT: Sequence of calls to concurrent abstraction may not be atomic</a></td><
td>Multithreaded correctness</td></tr> |
310 <tr bgcolor="#eeeeee"><td><a href="#DC_DOUBLECHECK">DC: Possible double vérifica
tion d'un champ</a></td><td>Multithreaded correctness</td></tr> | 321 <tr bgcolor="#eeeeee"><td><a href="#DC_DOUBLECHECK">DC: Possible double vérifica
tion d'un champ</a></td><td>Multithreaded correctness</td></tr> |
311 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Synchroni
zation on Boolean</a></td><td>Multithreaded correctness</td></tr> | 322 <tr bgcolor="#ffffff"><td><a href="#DC_PARTIALLY_CONSTRUCTED">DC: Possible expos
ure of partially initialized object</a></td><td>Multithreaded correctness</td></
tr> |
312 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: S
ynchronization on boxed primitive</a></td><td>Multithreaded correctness</td></tr
> | 323 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Synchroni
zation on Boolean</a></td><td>Multithreaded correctness</td></tr> |
313 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: S
ynchronization on interned String </a></td><td>Multithreaded correctness</td></t
r> | 324 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: S
ynchronization on boxed primitive</a></td><td>Multithreaded correctness</td></tr
> |
314 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITI
VE">DL: Synchronization on boxed primitive values</a></td><td>Multithreaded corr
ectness</td></tr> | 325 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: S
ynchronization on interned String </a></td><td>Multithreaded correctness</td></t
r> |
315 <tr bgcolor="#ffffff"><td><a href="#DM_MONITOR_WAIT_ON_CONDITION">Dm: Wait() app
elé sur une Condition</a></td><td>Multithreaded correctness</td></tr> | 326 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITI
VE">DL: Synchronization on boxed primitive values</a></td><td>Multithreaded corr
ectness</td></tr> |
316 <tr bgcolor="#eeeeee"><td><a href="#DM_USELESS_THREAD">Dm: Thread créé avec la m
éthode run vide par défaut</a></td><td>Multithreaded correctness</td></tr> | 327 <tr bgcolor="#eeeeee"><td><a href="#DM_MONITOR_WAIT_ON_CONDITION">Dm: Wait() app
elé sur une Condition</a></td><td>Multithreaded correctness</td></tr> |
317 <tr bgcolor="#ffffff"><td><a href="#ESync_EMPTY_SYNC">ESync: Bloc synchronisé vi
de</a></td><td>Multithreaded correctness</td></tr> | 328 <tr bgcolor="#ffffff"><td><a href="#DM_USELESS_THREAD">Dm: Thread créé avec la m
éthode run vide par défaut</a></td><td>Multithreaded correctness</td></tr> |
318 <tr bgcolor="#eeeeee"><td><a href="#IS2_INCONSISTENT_SYNC">IS: Synchronisation i
ncohérente</a></td><td>Multithreaded correctness</td></tr> | 329 <tr bgcolor="#eeeeee"><td><a href="#ESync_EMPTY_SYNC">ESync: Bloc synchronisé vi
de</a></td><td>Multithreaded correctness</td></tr> |
319 <tr bgcolor="#ffffff"><td><a href="#IS_FIELD_NOT_GUARDED">IS: Champ non protégé
contre les accès concurrents</a></td><td>Multithreaded correctness</td></tr> | 330 <tr bgcolor="#ffffff"><td><a href="#IS2_INCONSISTENT_SYNC">IS: Synchronisation i
ncohérente</a></td><td>Multithreaded correctness</td></tr> |
320 <tr bgcolor="#eeeeee"><td><a href="#JLM_JSR166_LOCK_MONITORENTER">JLM: Synchroni
sation effectuée sur un Lock java.util.concurrent</a></td><td>Multithreaded corr
ectness</td></tr> | 331 <tr bgcolor="#eeeeee"><td><a href="#IS_FIELD_NOT_GUARDED">IS: Champ non protégé
contre les accès concurrents</a></td><td>Multithreaded correctness</td></tr> |
321 <tr bgcolor="#ffffff"><td><a href="#JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM:
Synchronization performed on util.concurrent instance</a></td><td>Multithreaded
correctness</td></tr> | 332 <tr bgcolor="#ffffff"><td><a href="#JLM_JSR166_LOCK_MONITORENTER">JLM: Synchroni
sation effectuée sur un Lock java.util.concurrent</a></td><td>Multithreaded corr
ectness</td></tr> |
322 <tr bgcolor="#eeeeee"><td><a href="#JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">J
LM: Using monitor style wait methods on util.concurrent abstraction</a></td><td>
Multithreaded correctness</td></tr> | 333 <tr bgcolor="#eeeeee"><td><a href="#JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM:
Synchronization performed on util.concurrent instance</a></td><td>Multithreaded
correctness</td></tr> |
323 <tr bgcolor="#ffffff"><td><a href="#LI_LAZY_INIT_STATIC">LI: Initialisation pare
sseuse incorrecte d'un champ statique</a></td><td>Multithreaded correctness</td>
</tr> | 334 <tr bgcolor="#ffffff"><td><a href="#JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">J
LM: Using monitor style wait methods on util.concurrent abstraction</a></td><td>
Multithreaded correctness</td></tr> |
324 <tr bgcolor="#eeeeee"><td><a href="#LI_LAZY_INIT_UPDATE_STATIC">LI: Incorrect la
zy initialization and update of static field</a></td><td>Multithreaded correctne
ss</td></tr> | 335 <tr bgcolor="#eeeeee"><td><a href="#LI_LAZY_INIT_STATIC">LI: Initialisation pare
sseuse incorrecte d'un champ statique</a></td><td>Multithreaded correctness</td>
</tr> |
325 <tr bgcolor="#ffffff"><td><a href="#ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIEL
D">ML: Synchronization on field in futile attempt to guard that field</a></td><t
d>Multithreaded correctness</td></tr> | 336 <tr bgcolor="#ffffff"><td><a href="#LI_LAZY_INIT_UPDATE_STATIC">LI: Incorrect la
zy initialization and update of static field</a></td><td>Multithreaded correctne
ss</td></tr> |
326 <tr bgcolor="#eeeeee"><td><a href="#ML_SYNC_ON_UPDATED_FIELD">ML: La méthode se
synchronise sur un champ mis à jour</a></td><td>Multithreaded correctness</td></
tr> | 337 <tr bgcolor="#eeeeee"><td><a href="#ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIEL
D">ML: Synchronization on field in futile attempt to guard that field</a></td><t
d>Multithreaded correctness</td></tr> |
327 <tr bgcolor="#ffffff"><td><a href="#MSF_MUTABLE_SERVLET_FIELD">MSF: Mutable serv
let field</a></td><td>Multithreaded correctness</td></tr> | 338 <tr bgcolor="#ffffff"><td><a href="#ML_SYNC_ON_UPDATED_FIELD">ML: La méthode se
synchronise sur un champ mis à jour</a></td><td>Multithreaded correctness</td></
tr> |
328 <tr bgcolor="#eeeeee"><td><a href="#MWN_MISMATCHED_NOTIFY">MWN: notify() non app
areillé</a></td><td>Multithreaded correctness</td></tr> | 339 <tr bgcolor="#eeeeee"><td><a href="#MSF_MUTABLE_SERVLET_FIELD">MSF: Mutable serv
let field</a></td><td>Multithreaded correctness</td></tr> |
329 <tr bgcolor="#ffffff"><td><a href="#MWN_MISMATCHED_WAIT">MWN: wait() non apparei
llé</a></td><td>Multithreaded correctness</td></tr> | 340 <tr bgcolor="#ffffff"><td><a href="#MWN_MISMATCHED_NOTIFY">MWN: notify() non app
areillé</a></td><td>Multithreaded correctness</td></tr> |
330 <tr bgcolor="#eeeeee"><td><a href="#NN_NAKED_NOTIFY">NN: Appel notify() isolé da
ns une méthode</a></td><td>Multithreaded correctness</td></tr> | 341 <tr bgcolor="#eeeeee"><td><a href="#MWN_MISMATCHED_WAIT">MWN: wait() non apparei
llé</a></td><td>Multithreaded correctness</td></tr> |
331 <tr bgcolor="#ffffff"><td><a href="#NP_SYNC_AND_NULL_CHECK_FIELD">NP: Synchroniz
e and null check on the same field.</a></td><td>Multithreaded correctness</td></
tr> | 342 <tr bgcolor="#ffffff"><td><a href="#NN_NAKED_NOTIFY">NN: Appel notify() isolé da
ns une méthode</a></td><td>Multithreaded correctness</td></tr> |
332 <tr bgcolor="#eeeeee"><td><a href="#NO_NOTIFY_NOT_NOTIFYALL">No: Utilisation de
notify() plutôt que notifyAll() dans une méthode</a></td><td>Multithreaded corre
ctness</td></tr> | 343 <tr bgcolor="#eeeeee"><td><a href="#NP_SYNC_AND_NULL_CHECK_FIELD">NP: Synchroniz
e and null check on the same field.</a></td><td>Multithreaded correctness</td></
tr> |
333 <tr bgcolor="#ffffff"><td><a href="#RS_READOBJECT_SYNC">RS: Seule la méthode rea
dObject() est synchronisée</a></td><td>Multithreaded correctness</td></tr> | 344 <tr bgcolor="#ffffff"><td><a href="#NO_NOTIFY_NOT_NOTIFYALL">No: Utilisation de
notify() plutôt que notifyAll() dans une méthode</a></td><td>Multithreaded corre
ctness</td></tr> |
334 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV:
Return value of putIfAbsent ignored, value passed to putIfAbsent reused</a></td>
<td>Multithreaded correctness</td></tr> | 345 <tr bgcolor="#eeeeee"><td><a href="#RS_READOBJECT_SYNC">RS: Seule la méthode rea
dObject() est synchronisée</a></td><td>Multithreaded correctness</td></tr> |
335 <tr bgcolor="#ffffff"><td><a href="#RU_INVOKE_RUN">Ru: Invocation de run() sur u
n thread (Vouliez-vous plutôt dire start() ?)</a></td><td>Multithreaded correctn
ess</td></tr> | 346 <tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV:
Return value of putIfAbsent ignored, value passed to putIfAbsent reused</a></td>
<td>Multithreaded correctness</td></tr> |
336 <tr bgcolor="#eeeeee"><td><a href="#SC_START_IN_CTOR">SC: Un constructeur invoqu
e Thread.start()</a></td><td>Multithreaded correctness</td></tr> | 347 <tr bgcolor="#eeeeee"><td><a href="#RU_INVOKE_RUN">Ru: Invocation de run() sur u
n thread (Vouliez-vous plutôt dire start() ?)</a></td><td>Multithreaded correctn
ess</td></tr> |
337 <tr bgcolor="#ffffff"><td><a href="#SP_SPIN_ON_FIELD">SP: Méthode bouclant sur u
n champ</a></td><td>Multithreaded correctness</td></tr> | 348 <tr bgcolor="#ffffff"><td><a href="#SC_START_IN_CTOR">SC: Un constructeur invoqu
e Thread.start()</a></td><td>Multithreaded correctness</td></tr> |
338 <tr bgcolor="#eeeeee"><td><a href="#STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">ST
CAL: Call to static Calendar</a></td><td>Multithreaded correctness</td></tr> | 349 <tr bgcolor="#eeeeee"><td><a href="#SP_SPIN_ON_FIELD">SP: Méthode bouclant sur u
n champ</a></td><td>Multithreaded correctness</td></tr> |
339 <tr bgcolor="#ffffff"><td><a href="#STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"
>STCAL: Call to static DateFormat</a></td><td>Multithreaded correctness</td></tr
> | 350 <tr bgcolor="#ffffff"><td><a href="#STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">ST
CAL: Call to static Calendar</a></td><td>Multithreaded correctness</td></tr> |
340 <tr bgcolor="#eeeeee"><td><a href="#STCAL_STATIC_CALENDAR_INSTANCE">STCAL: Stati
c Calendar field</a></td><td>Multithreaded correctness</td></tr> | 351 <tr bgcolor="#eeeeee"><td><a href="#STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"
>STCAL: Call to static DateFormat</a></td><td>Multithreaded correctness</td></tr
> |
341 <tr bgcolor="#ffffff"><td><a href="#STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">ST
CAL: Static DateFormat</a></td><td>Multithreaded correctness</td></tr> | 352 <tr bgcolor="#ffffff"><td><a href="#STCAL_STATIC_CALENDAR_INSTANCE">STCAL: Stati
c Calendar field</a></td><td>Multithreaded correctness</td></tr> |
342 <tr bgcolor="#eeeeee"><td><a href="#SWL_SLEEP_WITH_LOCK_HELD">SWL: Appel de la m
éthode Thread.sleep() avec un verrou</a></td><td>Multithreaded correctness</td><
/tr> | 353 <tr bgcolor="#eeeeee"><td><a href="#STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">ST
CAL: Static DateFormat</a></td><td>Multithreaded correctness</td></tr> |
343 <tr bgcolor="#ffffff"><td><a href="#TLW_TWO_LOCK_WAIT">TLW: wait() avec deux ver
rous en attente</a></td><td>Multithreaded correctness</td></tr> | 354 <tr bgcolor="#ffffff"><td><a href="#SWL_SLEEP_WITH_LOCK_HELD">SWL: Appel de la m
éthode Thread.sleep() avec un verrou</a></td><td>Multithreaded correctness</td><
/tr> |
344 <tr bgcolor="#eeeeee"><td><a href="#UG_SYNC_SET_UNSYNC_GET">UG: Méthode getXXX n
on synchronisée, méthode setXXX synchronisée</a></td><td>Multithreaded correctne
ss</td></tr> | 355 <tr bgcolor="#eeeeee"><td><a href="#TLW_TWO_LOCK_WAIT">TLW: wait() avec deux ver
rous en attente</a></td><td>Multithreaded correctness</td></tr> |
345 <tr bgcolor="#ffffff"><td><a href="#UL_UNRELEASED_LOCK">UL: La méthode ne libère
pas un verrou dans tous les chemins d'exécution</a></td><td>Multithreaded corre
ctness</td></tr> | 356 <tr bgcolor="#ffffff"><td><a href="#UG_SYNC_SET_UNSYNC_GET">UG: Méthode getXXX n
on synchronisée, méthode setXXX synchronisée</a></td><td>Multithreaded correctne
ss</td></tr> |
346 <tr bgcolor="#eeeeee"><td><a href="#UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: La mé
thode ne libère pas un verrou dans tous les chemins d'exception</a></td><td>Mult
ithreaded correctness</td></tr> | 357 <tr bgcolor="#eeeeee"><td><a href="#UL_UNRELEASED_LOCK">UL: La méthode ne libère
pas un verrou dans tous les chemins d'exécution</a></td><td>Multithreaded corre
ctness</td></tr> |
347 <tr bgcolor="#ffffff"><td><a href="#UW_UNCOND_WAIT">UW: Méthode contenant un wai
t() non conditionné</a></td><td>Multithreaded correctness</td></tr> | 358 <tr bgcolor="#ffffff"><td><a href="#UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: La mé
thode ne libère pas un verrou dans tous les chemins d'exception</a></td><td>Mult
ithreaded correctness</td></tr> |
348 <tr bgcolor="#eeeeee"><td><a href="#VO_VOLATILE_INCREMENT">VO: An increment to a
volatile field isn't atomic</a></td><td>Multithreaded correctness</td></tr> | 359 <tr bgcolor="#eeeeee"><td><a href="#UW_UNCOND_WAIT">UW: Méthode contenant un wai
t() non conditionné</a></td><td>Multithreaded correctness</td></tr> |
349 <tr bgcolor="#ffffff"><td><a href="#VO_VOLATILE_REFERENCE_TO_ARRAY">VO: Une réfé
rence volatile à un tableau ne traite pas les éléments du tableau comme volatile
s</a></td><td>Multithreaded correctness</td></tr> | 360 <tr bgcolor="#ffffff"><td><a href="#VO_VOLATILE_INCREMENT">VO: An increment to a
volatile field isn't atomic</a></td><td>Multithreaded correctness</td></tr> |
350 <tr bgcolor="#eeeeee"><td><a href="#WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL"
>WL: Synchronization on getClass rather than class literal</a></td><td>Multithre
aded correctness</td></tr> | 361 <tr bgcolor="#eeeeee"><td><a href="#VO_VOLATILE_REFERENCE_TO_ARRAY">VO: Une réfé
rence volatile à un tableau ne traite pas les éléments du tableau comme volatile
s</a></td><td>Multithreaded correctness</td></tr> |
351 <tr bgcolor="#ffffff"><td><a href="#WS_WRITEOBJECT_SYNC">WS: Seule la méthode wr
iteObject() est synchronisée</a></td><td>Multithreaded correctness</td></tr> | 362 <tr bgcolor="#ffffff"><td><a href="#WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL"
>WL: Synchronization on getClass rather than class literal</a></td><td>Multithre
aded correctness</td></tr> |
352 <tr bgcolor="#eeeeee"><td><a href="#WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await()
en dehors d'une boucle</a></td><td>Multithreaded correctness</td></tr> | 363 <tr bgcolor="#eeeeee"><td><a href="#WS_WRITEOBJECT_SYNC">WS: Seule la méthode wr
iteObject() est synchronisée</a></td><td>Multithreaded correctness</td></tr> |
353 <tr bgcolor="#ffffff"><td><a href="#WA_NOT_IN_LOOP">Wa: Méthode contenant un wai
t() en dehors d'une boucle</a></td><td>Multithreaded correctness</td></tr> | 364 <tr bgcolor="#ffffff"><td><a href="#WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await()
en dehors d'une boucle</a></td><td>Multithreaded correctness</td></tr> |
354 <tr bgcolor="#eeeeee"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED">Bx: Primitive
value is boxed and then immediately unboxed</a></td><td>Performance</td></tr> | 365 <tr bgcolor="#eeeeee"><td><a href="#WA_NOT_IN_LOOP">Wa: Méthode contenant un wai
t() en dehors d'une boucle</a></td><td>Multithreaded correctness</td></tr> |
355 <tr bgcolor="#ffffff"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COE
RCION">Bx: Primitive value is boxed then unboxed to perform primitive coercion</
a></td><td>Performance</td></tr> | 366 <tr bgcolor="#ffffff"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED">Bx: Primitive
value is boxed and then immediately unboxed</a></td><td>Performance</td></tr> |
| 367 <tr bgcolor="#eeeeee"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COE
RCION">Bx: Primitive value is boxed then unboxed to perform primitive coercion</
a></td><td>Performance</td></tr> |
| 368 <tr bgcolor="#ffffff"><td><a href="#BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR"
>Bx: Primitive value is unboxed and coerced for ternary operator</a></td><td>Per
formance</td></tr> |
356 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: Boxed v
alue is unboxed and then immediately reboxed</a></td><td>Performance</td></tr> | 369 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: Boxed v
alue is unboxed and then immediately reboxed</a></td><td>Performance</td></tr> |
357 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: Boxing/u
nboxing to parse a primitive</a></td><td>Performance</td></tr> | 370 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: Boxing a
primitive to compare</a></td><td>Performance</td></tr> |
358 <tr bgcolor="#eeeeee"><td><a href="#DM_BOXED_PRIMITIVE_TOSTRING">Bx: Méthode all
ouant une primitive boxed pour appeler toString</a></td><td>Performance</td></tr
> | 371 <tr bgcolor="#eeeeee"><td><a href="#DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: Boxing/u
nboxing to parse a primitive</a></td><td>Performance</td></tr> |
359 <tr bgcolor="#ffffff"><td><a href="#DM_FP_NUMBER_CTOR">Bx: Method invokes ineffi
cient floating-point Number constructor; use static valueOf instead</a></td><td>
Performance</td></tr> | 372 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_TOSTRING">Bx: Méthode all
ouant une primitive boxed pour appeler toString</a></td><td>Performance</td></tr
> |
360 <tr bgcolor="#eeeeee"><td><a href="#DM_NUMBER_CTOR">Bx: Method invokes inefficie
nt Number constructor; use static valueOf instead</a></td><td>Performance</td></
tr> | 373 <tr bgcolor="#eeeeee"><td><a href="#DM_FP_NUMBER_CTOR">Bx: Method invokes ineffi
cient floating-point Number constructor; use static valueOf instead</a></td><td>
Performance</td></tr> |
361 <tr bgcolor="#ffffff"><td><a href="#DMI_BLOCKING_METHODS_ON_URL">Dm: The equals
and hashCode methods of URL are blocking</a></td><td>Performance</td></tr> | 374 <tr bgcolor="#ffffff"><td><a href="#DM_NUMBER_CTOR">Bx: Method invokes inefficie
nt Number constructor; use static valueOf instead</a></td><td>Performance</td></
tr> |
362 <tr bgcolor="#eeeeee"><td><a href="#DMI_COLLECTION_OF_URLS">Dm: Maps and sets of
URLs can be performance hogs</a></td><td>Performance</td></tr> | 375 <tr bgcolor="#eeeeee"><td><a href="#DMI_BLOCKING_METHODS_ON_URL">Dm: The equals
and hashCode methods of URL are blocking</a></td><td>Performance</td></tr> |
363 <tr bgcolor="#ffffff"><td><a href="#DM_BOOLEAN_CTOR">Dm: La méthode invoque le c
onstructeur inutile Boolean() ; utilisez Boolean.valueOf(...) à la place</a></td
><td>Performance</td></tr> | 376 <tr bgcolor="#ffffff"><td><a href="#DMI_COLLECTION_OF_URLS">Dm: Maps and sets of
URLs can be performance hogs</a></td><td>Performance</td></tr> |
364 <tr bgcolor="#eeeeee"><td><a href="#DM_GC">Dm: Ramasse-miettes explicite ; extrê
mement douteux sauf dans du code de banc d'essai</a></td><td>Performance</td></t
r> | 377 <tr bgcolor="#eeeeee"><td><a href="#DM_BOOLEAN_CTOR">Dm: La méthode invoque le c
onstructeur inutile Boolean() ; utilisez Boolean.valueOf(...) à la place</a></td
><td>Performance</td></tr> |
365 <tr bgcolor="#ffffff"><td><a href="#DM_NEW_FOR_GETCLASS">Dm: Méthode allouant un
objet juste pour obtenir la classe</a></td><td>Performance</td></tr> | 378 <tr bgcolor="#ffffff"><td><a href="#DM_GC">Dm: Ramasse-miettes explicite ; extrê
mement douteux sauf dans du code de banc d'essai</a></td><td>Performance</td></t
r> |
366 <tr bgcolor="#eeeeee"><td><a href="#DM_NEXTINT_VIA_NEXTDOUBLE">Dm: Utiliser la m
éthode nextInt de Random plutôt que nextDouble pour générer un entier aléatoire<
/a></td><td>Performance</td></tr> | 379 <tr bgcolor="#eeeeee"><td><a href="#DM_NEW_FOR_GETCLASS">Dm: Méthode allouant un
objet juste pour obtenir la classe</a></td><td>Performance</td></tr> |
367 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_CTOR">Dm: La méthode invoque le co
nstructeur inutile String(String) ; utilisez juste l'argument</a></td><td>Perfor
mance</td></tr> | 380 <tr bgcolor="#ffffff"><td><a href="#DM_NEXTINT_VIA_NEXTDOUBLE">Dm: Utiliser la m
éthode nextInt de Random plutôt que nextDouble pour générer un entier aléatoire<
/a></td><td>Performance</td></tr> |
368 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_TOSTRING">Dm: La méthode appel toS
tring() sur un objet String ; utilisez directement l'objet String</a></td><td>Pe
rformance</td></tr> | 381 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_CTOR">Dm: La méthode invoque le co
nstructeur inutile String(String) ; utilisez juste l'argument</a></td><td>Perfor
mance</td></tr> |
369 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_VOID_CTOR">Dm: La méthode invoque
le constructeur inutile String() ; utilisez juste ""</a></td><td>Performance</td
></tr> | 382 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_TOSTRING">Dm: La méthode appel toS
tring() sur un objet String ; utilisez directement l'objet String</a></td><td>Pe
rformance</td></tr> |
370 <tr bgcolor="#eeeeee"><td><a href="#HSC_HUGE_SHARED_STRING_CONSTANT">HSC: Huge s
tring constants is duplicated across multiple class files</a></td><td>Performanc
e</td></tr> | 383 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_VOID_CTOR">Dm: La méthode invoque
le constructeur inutile String() ; utilisez juste ""</a></td><td>Performance</td
></tr> |
371 <tr bgcolor="#ffffff"><td><a href="#IIO_INEFFICIENT_INDEX_OF">IIO: Inefficient u
se of String.indexOf(String)</a></td><td>Performance</td></tr> | 384 <tr bgcolor="#ffffff"><td><a href="#HSC_HUGE_SHARED_STRING_CONSTANT">HSC: Huge s
tring constants is duplicated across multiple class files</a></td><td>Performanc
e</td></tr> |
372 <tr bgcolor="#eeeeee"><td><a href="#IIO_INEFFICIENT_LAST_INDEX_OF">IIO: Ineffici
ent use of String.lastIndexOf(String)</a></td><td>Performance</td></tr> | |
373 <tr bgcolor="#ffffff"><td><a href="#ITA_INEFFICIENT_TO_ARRAY">ITA: La méthode ut
ilise toArray() avec un tableau vide en paramètre</a></td><td>Performance</td></
tr> | |
374 <tr bgcolor="#eeeeee"><td><a href="#SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: L
a méthode concatène des chaînes au moyen de + en boucle</a></td><td>Performance<
/td></tr> | 385 <tr bgcolor="#eeeeee"><td><a href="#SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: L
a méthode concatène des chaînes au moyen de + en boucle</a></td><td>Performance<
/td></tr> |
375 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC">SIC: Devrait êtr
e une classe interne statique</a></td><td>Performance</td></tr> | 386 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC">SIC: Devrait êtr
e une classe interne statique</a></td><td>Performance</td></tr> |
376 <tr bgcolor="#eeeeee"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: Peut-ê
tre transformée en classe interne statique nommée</a></td><td>Performance</td></
tr> | 387 <tr bgcolor="#eeeeee"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: Peut-ê
tre transformée en classe interne statique nommée</a></td><td>Performance</td></
tr> |
377 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC:
Pourrait-être transformée en classe interne statique</a></td><td>Performance</td
></tr> | 388 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC:
Pourrait-être transformée en classe interne statique</a></td><td>Performance</td
></tr> |
378 <tr bgcolor="#eeeeee"><td><a href="#SS_SHOULD_BE_STATIC">SS: Champ non lu : devr
ait-il être statique ?</a></td><td>Performance</td></tr> | 389 <tr bgcolor="#eeeeee"><td><a href="#SS_SHOULD_BE_STATIC">SS: Champ non lu : devr
ait-il être statique ?</a></td><td>Performance</td></tr> |
379 <tr bgcolor="#ffffff"><td><a href="#UM_UNNECESSARY_MATH">UM: Appel d'une méthode
statique de la classe Math sur une valeur constante</a></td><td>Performance</td
></tr> | 390 <tr bgcolor="#ffffff"><td><a href="#UM_UNNECESSARY_MATH">UM: Appel d'une méthode
statique de la classe Math sur une valeur constante</a></td><td>Performance</td
></tr> |
380 <tr bgcolor="#eeeeee"><td><a href="#UPM_UNCALLED_PRIVATE_METHOD">UPM: Méthode pr
ivée jamais appelée</a></td><td>Performance</td></tr> | 391 <tr bgcolor="#eeeeee"><td><a href="#UPM_UNCALLED_PRIVATE_METHOD">UPM: Méthode pr
ivée jamais appelée</a></td><td>Performance</td></tr> |
381 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_FIELD">UrF: Champ inutilisé</a></
td><td>Performance</td></tr> | 392 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_FIELD">UrF: Champ inutilisé</a></
td><td>Performance</td></tr> |
382 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_FIELD">UuF: Champ inutilisé</a></
td><td>Performance</td></tr> | 393 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_FIELD">UuF: Champ inutilisé</a></
td><td>Performance</td></tr> |
383 <tr bgcolor="#ffffff"><td><a href="#WMI_WRONG_MAP_ITERATOR">WMI: Utilisation ine
fficace d'un itérateur sur keySet au lieu de entrySet</a></td><td>Performance</t
d></tr> | 394 <tr bgcolor="#ffffff"><td><a href="#WMI_WRONG_MAP_ITERATOR">WMI: Utilisation ine
fficace d'un itérateur sur keySet au lieu de entrySet</a></td><td>Performance</t
d></tr> |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 <tr bgcolor="#eeeeee"><td><a href="#INT_VACUOUS_COMPARISON">INT: Comparaison inu
tile de valeurs entières</a></td><td>Dodgy code</td></tr> | 435 <tr bgcolor="#eeeeee"><td><a href="#INT_VACUOUS_COMPARISON">INT: Comparaison inu
tile de valeurs entières</a></td><td>Dodgy code</td></tr> |
425 <tr bgcolor="#ffffff"><td><a href="#MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: L
a classe hérite de Servlet et utilise les variables de l'instance.</a></td><td>D
odgy code</td></tr> | 436 <tr bgcolor="#ffffff"><td><a href="#MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: L
a classe hérite de Servlet et utilise les variables de l'instance.</a></td><td>D
odgy code</td></tr> |
426 <tr bgcolor="#eeeeee"><td><a href="#MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: La
classe hérite d'une classe action Struts et utilise les variables de l'instance
.</a></td><td>Dodgy code</td></tr> | 437 <tr bgcolor="#eeeeee"><td><a href="#MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: La
classe hérite d'une classe action Struts et utilise les variables de l'instance
.</a></td><td>Dodgy code</td></tr> |
427 <tr bgcolor="#ffffff"><td><a href="#NP_DEREFERENCE_OF_READLINE_VALUE">NP: Derefe
rence of the result of readLine() without nullcheck</a></td><td>Dodgy code</td><
/tr> | 438 <tr bgcolor="#ffffff"><td><a href="#NP_DEREFERENCE_OF_READLINE_VALUE">NP: Derefe
rence of the result of readLine() without nullcheck</a></td><td>Dodgy code</td><
/tr> |
428 <tr bgcolor="#eeeeee"><td><a href="#NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: Dé
référencement immédiat du résultat d'un readLine()</a></td><td>Dodgy code</td></
tr> | 439 <tr bgcolor="#eeeeee"><td><a href="#NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: Dé
référencement immédiat du résultat d'un readLine()</a></td><td>Dodgy code</td></
tr> |
429 <tr bgcolor="#ffffff"><td><a href="#NP_LOAD_OF_KNOWN_NULL_VALUE">NP: Chargement
d'une valeur connue pour être à null</a></td><td>Dodgy code</td></tr> | 440 <tr bgcolor="#ffffff"><td><a href="#NP_LOAD_OF_KNOWN_NULL_VALUE">NP: Chargement
d'une valeur connue pour être à null</a></td><td>Dodgy code</td></tr> |
430 <tr bgcolor="#eeeeee"><td><a href="#NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP:
Method tightens nullness annotation on parameter</a></td><td>Dodgy code</td></t
r> | 441 <tr bgcolor="#eeeeee"><td><a href="#NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP:
Method tightens nullness annotation on parameter</a></td><td>Dodgy code</td></t
r> |
431 <tr bgcolor="#ffffff"><td><a href="#NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: Me
thod relaxes nullness annotation on return value</a></td><td>Dodgy code</td></tr
> | 442 <tr bgcolor="#ffffff"><td><a href="#NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: Me
thod relaxes nullness annotation on return value</a></td><td>Dodgy code</td></tr
> |
432 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP:
Pointeur à null renvoyé par une méthode qui risque d'être déréférencé</a></td><t
d>Dodgy code</td></tr> | 443 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP:
Pointeur à null renvoyé par une méthode qui risque d'être déréférencé</a></td><t
d>Dodgy code</td></tr> |
433 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP
: Possible null pointer dereference on branch that might be infeasible</a></td><
td>Dodgy code</td></tr> | 444 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP
: Possible null pointer dereference on branch that might be infeasible</a></td><
td>Dodgy code</td></tr> |
434 <tr bgcolor="#eeeeee"><td><a href="#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_N
ULLABLE">NP: Parameter must be nonnull but is marked as nullable</a></td><td>Dod
gy code</td></tr> | 445 <tr bgcolor="#eeeeee"><td><a href="#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_N
ULLABLE">NP: Parameter must be non-null but is marked as nullable</a></td><td>Do
dgy code</td></tr> |
435 <tr bgcolor="#ffffff"><td><a href="#NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP:
Read of unwritten public or protected field</a></td><td>Dodgy code</td></tr> | 446 <tr bgcolor="#ffffff"><td><a href="#NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP:
Read of unwritten public or protected field</a></td><td>Dodgy code</td></tr> |
436 <tr bgcolor="#eeeeee"><td><a href="#NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: Potentia
lly dangerous use of non-short-circuit logic</a></td><td>Dodgy code</td></tr> | 447 <tr bgcolor="#eeeeee"><td><a href="#NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: Potentia
lly dangerous use of non-short-circuit logic</a></td><td>Dodgy code</td></tr> |
437 <tr bgcolor="#ffffff"><td><a href="#NS_NON_SHORT_CIRCUIT">NS: Utilisation discut
able de logique binaire</a></td><td>Dodgy code</td></tr> | 448 <tr bgcolor="#ffffff"><td><a href="#NS_NON_SHORT_CIRCUIT">NS: Utilisation discut
able de logique binaire</a></td><td>Dodgy code</td></tr> |
438 <tr bgcolor="#eeeeee"><td><a href="#PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: Envisa
gez de renvoyer un tableau vide plutôt que null</a></td><td>Dodgy code</td></tr> | 449 <tr bgcolor="#eeeeee"><td><a href="#PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: Envisa
gez de renvoyer un tableau vide plutôt que null</a></td><td>Dodgy code</td></tr> |
439 <tr bgcolor="#ffffff"><td><a href="#QF_QUESTIONABLE_FOR_LOOP">QF: Incrémentation
compliquée, subtile au incorrecte dans une boucle for</a></td><td>Dodgy code</t
d></tr> | 450 <tr bgcolor="#ffffff"><td><a href="#QF_QUESTIONABLE_FOR_LOOP">QF: Incrémentation
compliquée, subtile au incorrecte dans une boucle for</a></td><td>Dodgy code</t
d></tr> |
440 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL
_VALUE">RCN: Comparaison redondante d'une valeur non nulle avec null</a></td><td
>Dodgy code</td></tr> | 451 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL
_VALUE">RCN: Comparaison redondante d'une valeur non nulle avec null</a></td><td
>Dodgy code</td></tr> |
441 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RC
N: Comparaison redondante de deux valeurs nulles</a></td><td>Dodgy code</td></tr
> | 452 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RC
N: Comparaison redondante de deux valeurs nulles</a></td><td>Dodgy code</td></tr
> |
442 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RC
N: Test de nullité redondant sur une valeur non nulle</a></td><td>Dodgy code</td
></tr> | 453 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RC
N: Test de nullité redondant sur une valeur non nulle</a></td><td>Dodgy code</td
></tr> |
443 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN:
Test de nullité redondant sur une valeur connue pour être à null</a></td><td>Dod
gy code</td></tr> | 454 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN:
Test de nullité redondant sur une valeur connue pour être à null</a></td><td>Dod
gy code</td></tr> |
444 <tr bgcolor="#eeeeee"><td><a href="#REC_CATCH_EXCEPTION">REC: java.lang.Exceptio
n est intercepté alors qu'Exception n'est jamais lancé</a></td><td>Dodgy code</t
d></tr> | 455 <tr bgcolor="#eeeeee"><td><a href="#REC_CATCH_EXCEPTION">REC: java.lang.Exceptio
n est intercepté alors qu'Exception n'est jamais lancé</a></td><td>Dodgy code</t
d></tr> |
445 <tr bgcolor="#ffffff"><td><a href="#RI_REDUNDANT_INTERFACES">RI: Classe implémen
tant la même interface que sa super-classe</a></td><td>Dodgy code</td></tr> | 456 <tr bgcolor="#ffffff"><td><a href="#RI_REDUNDANT_INTERFACES">RI: Classe implémen
tant la même interface que sa super-classe</a></td><td>Dodgy code</td></tr> |
446 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_FOR_POSITIVE_INDEXOF">RV: Méthode v
érifiant que le résultat d'un String.indexOf() est positif</a></td><td>Dodgy cod
e</td></tr> | 457 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_FOR_POSITIVE_INDEXOF">RV: Méthode v
érifiant que le résultat d'un String.indexOf() est positif</a></td><td>Dodgy cod
e</td></tr> |
447 <tr bgcolor="#ffffff"><td><a href="#RV_DONT_JUST_NULL_CHECK_READLINE">RV: Méthod
e ignorant le résultat d'un readLine() après avoir vérifié qu'il est non nul</a>
</td><td>Dodgy code</td></tr> | 458 <tr bgcolor="#ffffff"><td><a href="#RV_DONT_JUST_NULL_CHECK_READLINE">RV: Méthod
e ignorant le résultat d'un readLine() après avoir vérifié qu'il est non nul</a>
</td><td>Dodgy code</td></tr> |
448 <tr bgcolor="#eeeeee"><td><a href="#RV_REM_OF_HASHCODE">RV: Reste d'un hashCode
pouvant être négatif</a></td><td>Dodgy code</td></tr> | 459 <tr bgcolor="#eeeeee"><td><a href="#RV_REM_OF_HASHCODE">RV: Reste d'un hashCode
pouvant être négatif</a></td><td>Dodgy code</td></tr> |
449 <tr bgcolor="#ffffff"><td><a href="#RV_REM_OF_RANDOM_INT">RV: Reste d'un entier
signé 32 bits aléeatoire</a></td><td>Dodgy code</td></tr> | 460 <tr bgcolor="#ffffff"><td><a href="#RV_REM_OF_RANDOM_INT">RV: Reste d'un entier
signé 32 bits aléeatoire</a></td><td>Dodgy code</td></tr> |
450 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED_INFERRED">RV: Method
ignores return value, is this OK?</a></td><td>Dodgy code</td></tr> | 461 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED_INFERRED">RV: Method
ignores return value, is this OK?</a></td><td>Dodgy code</td></tr> |
451 <tr bgcolor="#ffffff"><td><a href="#SA_FIELD_DOUBLE_ASSIGNMENT">SA: Double assig
nment of field</a></td><td>Dodgy code</td></tr> | 462 <tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV:
Return value of method without side effect is ignored</a></td><td>Dodgy code</td
></tr> |
452 <tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_DOUBLE_ASSIGNMENT">SA: Double assig
nment of local variable </a></td><td>Dodgy code</td></tr> | 463 <tr bgcolor="#eeeeee"><td><a href="#SA_FIELD_DOUBLE_ASSIGNMENT">SA: Double assig
nment of field</a></td><td>Dodgy code</td></tr> |
453 <tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT">SA: Auto-alimentat
ion d'une variable locale</a></td><td>Dodgy code</td></tr> | 464 <tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_DOUBLE_ASSIGNMENT">SA: Double assig
nment of local variable </a></td><td>Dodgy code</td></tr> |
454 <tr bgcolor="#eeeeee"><td><a href="#SF_SWITCH_FALLTHROUGH">SF: Un switch comport
e un cas qui déborde sur le suivant</a></td><td>Dodgy code</td></tr> | 465 <tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT">SA: Auto-alimentat
ion d'une variable locale</a></td><td>Dodgy code</td></tr> |
455 <tr bgcolor="#ffffff"><td><a href="#SF_SWITCH_NO_DEFAULT">SF: Switch statement f
ound where default case is missing</a></td><td>Dodgy code</td></tr> | 466 <tr bgcolor="#ffffff"><td><a href="#SF_SWITCH_FALLTHROUGH">SF: Un switch comport
e un cas qui déborde sur le suivant</a></td><td>Dodgy code</td></tr> |
456 <tr bgcolor="#eeeeee"><td><a href="#ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST:
Ecriture d'un champ statique depuis la méthode d'une instance</a></td><td>Dodgy
code</td></tr> | 467 <tr bgcolor="#eeeeee"><td><a href="#SF_SWITCH_NO_DEFAULT">SF: Switch statement f
ound where default case is missing</a></td><td>Dodgy code</td></tr> |
457 <tr bgcolor="#ffffff"><td><a href="#SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: P
rivate readResolve method not inherited by subclasses</a></td><td>Dodgy code</td
></tr> | 468 <tr bgcolor="#ffffff"><td><a href="#ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST:
Ecriture d'un champ statique depuis la méthode d'une instance</a></td><td>Dodgy
code</td></tr> |
458 <tr bgcolor="#eeeeee"><td><a href="#SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS"
>Se: Transient field of class that isn't Serializable. </a></td><td>Dodgy code</
td></tr> | 469 <tr bgcolor="#eeeeee"><td><a href="#SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: P
rivate readResolve method not inherited by subclasses</a></td><td>Dodgy code</td
></tr> |
459 <tr bgcolor="#ffffff"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALW
AYS_SINK">TQ: Value required to have type qualifier, but marked as unknown</a></
td><td>Dodgy code</td></tr> | 470 <tr bgcolor="#ffffff"><td><a href="#SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS"
>Se: Transient field of class that isn't Serializable. </a></td><td>Dodgy code</
td></tr> |
460 <tr bgcolor="#eeeeee"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEV
ER_SINK">TQ: Value required to not have type qualifier, but marked as unknown</a
></td><td>Dodgy code</td></tr> | 471 <tr bgcolor="#eeeeee"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALW
AYS_SINK">TQ: Value required to have type qualifier, but marked as unknown</a></
td><td>Dodgy code</td></tr> |
| 472 <tr bgcolor="#ffffff"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEV
ER_SINK">TQ: Value required to not have type qualifier, but marked as unknown</a
></td><td>Dodgy code</td></tr> |
| 473 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_CONDITION">UC: Condition has no e
ffect</a></td><td>Dodgy code</td></tr> |
| 474 <tr bgcolor="#ffffff"><td><a href="#UC_USELESS_CONDITION_TYPE">UC: Condition has
no effect due to the variable type</a></td><td>Dodgy code</td></tr> |
| 475 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_OBJECT">UC: Useless object create
d</a></td><td>Dodgy code</td></tr> |
| 476 <tr bgcolor="#ffffff"><td><a href="#UC_USELESS_OBJECT_STACK">UC: Useless object
created on stack</a></td><td>Dodgy code</td></tr> |
| 477 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_VOID_METHOD">UC: Useless non-empt
y void method</a></td><td>Dodgy code</td></tr> |
461 <tr bgcolor="#ffffff"><td><a href="#UCF_USELESS_CONTROL_FLOW">UCF: Instruction d
e contrôle du flux inutile</a></td><td>Dodgy code</td></tr> | 478 <tr bgcolor="#ffffff"><td><a href="#UCF_USELESS_CONTROL_FLOW">UCF: Instruction d
e contrôle du flux inutile</a></td><td>Dodgy code</td></tr> |
462 <tr bgcolor="#eeeeee"><td><a href="#UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: Use
less control flow to next line</a></td><td>Dodgy code</td></tr> | 479 <tr bgcolor="#eeeeee"><td><a href="#UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: Use
less control flow to next line</a></td><td>Dodgy code</td></tr> |
463 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: U
nread public/protected field</a></td><td>Dodgy code</td></tr> | 480 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: U
nread public/protected field</a></td><td>Dodgy code</td></tr> |
464 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: U
nused public or protected field</a></td><td>Dodgy code</td></tr> | 481 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: U
nused public or protected field</a></td><td>Dodgy code</td></tr> |
465 <tr bgcolor="#ffffff"><td><a href="#UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">Uw
F: Champ non initialisé dans le constructeur</a></td><td>Dodgy code</td></tr> | 482 <tr bgcolor="#ffffff"><td><a href="#UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">Uw
F: Champ non initialisé dans le constructeur</a></td><td>Dodgy code</td></tr> |
466 <tr bgcolor="#eeeeee"><td><a href="#UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF
: Unwritten public or protected field</a></td><td>Dodgy code</td></tr> | 483 <tr bgcolor="#eeeeee"><td><a href="#UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF
: Unwritten public or protected field</a></td><td>Dodgy code</td></tr> |
467 <tr bgcolor="#ffffff"><td><a href="#XFB_XML_FACTORY_BYPASS">XFB: Méthode instanc
iant directement une implémentation spécifique des interfaces XML</a></td><td>Do
dgy code</td></tr> | 484 <tr bgcolor="#ffffff"><td><a href="#XFB_XML_FACTORY_BYPASS">XFB: Méthode instanc
iant directement une implémentation spécifique des interfaces XML</a></td><td>Do
dgy code</td></tr> |
468 </table> | 485 </table> |
469 <h2>Descriptions</h2> | 486 <h2>Descriptions</h2> |
470 <h3><a name="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">BC: Equals method sho
uld not assume anything about the type of its argument (BC_EQUALS_METHOD_SHOULD_
WORK_FOR_ALL_OBJECTS)</a></h3> | 487 <h3><a name="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">BC: Equals method sho
uld not assume anything about the type of its argument (BC_EQUALS_METHOD_SHOULD_
WORK_FOR_ALL_OBJECTS)</a></h3> |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 | 537 |
521 <p>It's recommended to use the predefined library constant for code clarity
and better precision.</p> | 538 <p>It's recommended to use the predefined library constant for code clarity
and better precision.</p> |
522 | 539 |
523 | 540 |
524 <h3><a name="CO_ABSTRACT_SELF">Co: Une classe abstraite définit une méthode comp
areTo() covariante (CO_ABSTRACT_SELF)</a></h3> | 541 <h3><a name="CO_ABSTRACT_SELF">Co: Une classe abstraite définit une méthode comp
areTo() covariante (CO_ABSTRACT_SELF)</a></h3> |
525 | 542 |
526 | 543 |
527 <p>Cette classe définit une version covariante de <code>compareTo()</code>. Pour
surcharger correctement la méthode <code>compareTo()</code> de l'interface <cod
e>Comparable</code>, le paramètre de <code>compareTo()</code> doit être du type
<code>java.lang.Object</code>.</p> | 544 <p>Cette classe définit une version covariante de <code>compareTo()</code>. Pour
surcharger correctement la méthode <code>compareTo()</code> de l'interface <cod
e>Comparable</code>, le paramètre de <code>compareTo()</code> doit être du type
<code>java.lang.Object</code>.</p> |
528 | 545 |
529 | 546 |
| 547 <h3><a name="CO_COMPARETO_INCORRECT_FLOATING">Co: compareTo()/compare() incorrec
tly handles float or double value (CO_COMPARETO_INCORRECT_FLOATING)</a></h3> |
| 548 |
| 549 |
| 550 <p>This method compares double or float values using pattern like this: val1 &
gt; val2 ? 1 : val1 < val2 ? -1 : 0. |
| 551 This pattern works incorrectly for -0.0 and NaN values which may result in incor
rect sorting result or broken collection |
| 552 (if compared values are used as keys). Consider using Double.compare or Float.co
mpare static methods which handle all |
| 553 the special cases correctly.</p> |
| 554 |
| 555 |
| 556 <h3><a name="CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() returns I
nteger.MIN_VALUE (CO_COMPARETO_RESULTS_MIN_VALUE)</a></h3> |
| 557 |
| 558 |
| 559 <p> In some situation, this compareTo or compare method returns |
| 560 the constant Integer.MIN_VALUE, which is an exceptionally bad practice. |
| 561 The only thing that matters about the return value of compareTo is the sign of
the result. |
| 562 But people will sometimes negate the return value of compareTo, expecting th
at this will negate |
| 563 the sign of the result. And it will, except in the case where the value retu
rned is Integer.MIN_VALUE. |
| 564 So just return -1 rather than Integer.MIN_VALUE. |
| 565 |
| 566 |
530 <h3><a name="CO_SELF_NO_OBJECT">Co: Définition d'une méthode compareTo() covaria
nte (CO_SELF_NO_OBJECT)</a></h3> | 567 <h3><a name="CO_SELF_NO_OBJECT">Co: Définition d'une méthode compareTo() covaria
nte (CO_SELF_NO_OBJECT)</a></h3> |
531 | 568 |
532 | 569 |
533 <p>Cette classe définit une version covariante de <code>compareTo()</code>. Pour
correctement surcharger la méthode <code>compareTo() </code>de l'interface <cod
e>Comparable</code>, le paramètre de <code>compareTo()</code> doit être du type
<code>java.lang.Object</code>.</p> | 570 <p>Cette classe définit une version covariante de <code>compareTo()</code>. Pour
correctement surcharger la méthode <code>compareTo() </code>de l'interface <cod
e>Comparable</code>, le paramètre de <code>compareTo()</code> doit être du type
<code>java.lang.Object</code>.</p> |
534 | 571 |
535 | 572 |
536 <h3><a name="DE_MIGHT_DROP">DE: La méthode peut déclencher une exception (DE_MIG
HT_DROP)</a></h3> | 573 <h3><a name="DE_MIGHT_DROP">DE: La méthode peut déclencher une exception (DE_MIG
HT_DROP)</a></h3> |
537 | 574 |
538 | 575 |
539 <p>Cette méthode peut déclencher une exception. En général, les exceptions doive
nt être gérées ou transmises hors de la méthode.</p> | 576 <p>Cette méthode peut déclencher une exception. En général, les exceptions doive
nt être gérées ou transmises hors de la méthode.</p> |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 | 679 |
643 <h3><a name="EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: Class defines compareTo(...) an
d uses Object.equals() (EQ_COMPARETO_USE_OBJECT_EQUALS)</a></h3> | 680 <h3><a name="EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: Class defines compareTo(...) an
d uses Object.equals() (EQ_COMPARETO_USE_OBJECT_EQUALS)</a></h3> |
644 | 681 |
645 | 682 |
646 <p> This class defines a <code>compareTo(...)</code> method but inherits its | 683 <p> This class defines a <code>compareTo(...)</code> method but inherits its |
647 <code>equals()</code> method from <code>java.lang.Object</code>. | 684 <code>equals()</code> method from <code>java.lang.Object</code>. |
648 Generally, the value of compareTo should return zero if and only if | 685 Generally, the value of compareTo should return zero if and only if |
649 equals returns true. If this is violated, weird and unpredictable | 686 equals returns true. If this is violated, weird and unpredictable |
650 failures will occur in classes such as PriorityQueue. | 687 failures will occur in classes such as PriorityQueue. |
651 In Java 5 the PriorityQueue.remove method uses the compareTo method, | 688 In Java 5 the PriorityQueue.remove method uses the compareTo method, |
652 while in Java 6 it uses the equals method. | 689 while in Java 6 it uses the equals method.</p> |
653 | 690 |
654 <p>From the JavaDoc for the compareTo method in the Comparable interface: | 691 <p>From the JavaDoc for the compareTo method in the Comparable interface: |
655 <blockquote> | 692 <blockquote> |
656 It is strongly recommended, but not strictly required that <code>(x.compareTo(y)
==0) == (x.equals(y))</code>. | 693 It is strongly recommended, but not strictly required that <code>(x.compareTo(y)
==0) == (x.equals(y))</code>. |
657 Generally speaking, any class that implements the Comparable interface and viola
tes this condition | 694 Generally speaking, any class that implements the Comparable interface and viola
tes this condition |
658 should clearly indicate this fact. The recommended language | 695 should clearly indicate this fact. The recommended language |
659 is "Note: this class has a natural ordering that is inconsistent with equals." | 696 is "Note: this class has a natural ordering that is inconsistent with equals." |
660 </blockquote> | 697 </blockquote></p> |
661 | 698 |
662 | 699 |
663 <h3><a name="EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals method fails for subtype
s (EQ_GETCLASS_AND_CLASS_CONSTANT)</a></h3> | 700 <h3><a name="EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals method fails for subtype
s (EQ_GETCLASS_AND_CLASS_CONSTANT)</a></h3> |
664 | 701 |
665 | 702 |
666 <p> This class has an equals method that will be broken if it is inherited by
subclasses. | 703 <p> This class has an equals method that will be broken if it is inherited by
subclasses. |
667 It compares a class literal with the class of the argument (e.g., in class <code
>Foo</code> | 704 It compares a class literal with the class of the argument (e.g., in class <code
>Foo</code> |
668 it might check if <code>Foo.class == o.getClass()</code>). | 705 it might check if <code>Foo.class == o.getClass()</code>). |
669 It is better to check if <code>this.getClass() == o.getClass()</code>. | 706 It is better to check if <code>this.getClass() == o.getClass()</code>. |
670 </p> | 707 </p> |
(...skipping 14 matching lines...) Expand all Loading... |
685 <h3><a name="FI_EXPLICIT_INVOCATION">FI: Invocation explicite d'un finaliseur (F
I_EXPLICIT_INVOCATION)</a></h3> | 722 <h3><a name="FI_EXPLICIT_INVOCATION">FI: Invocation explicite d'un finaliseur (F
I_EXPLICIT_INVOCATION)</a></h3> |
686 | 723 |
687 | 724 |
688 <p>Cette méthode contient un appel explicite à la méthode <code>finalize()</code
> d'un objet. Les méthodes <code>finalize()</code> étant sensées n'être appelées
qu'une fois, et uniquement par la JVM, c'est une mauvaise idée.</p> | 725 <p>Cette méthode contient un appel explicite à la méthode <code>finalize()</code
> d'un objet. Les méthodes <code>finalize()</code> étant sensées n'être appelées
qu'une fois, et uniquement par la JVM, c'est une mauvaise idée.</p> |
689 | 726 |
690 | 727 |
691 <h3><a name="FI_FINALIZER_NULLS_FIELDS">FI: Finalizer nulls fields (FI_FINALIZER
_NULLS_FIELDS)</a></h3> | 728 <h3><a name="FI_FINALIZER_NULLS_FIELDS">FI: Finalizer nulls fields (FI_FINALIZER
_NULLS_FIELDS)</a></h3> |
692 | 729 |
693 | 730 |
694 <p> This finalizer nulls out fields. This is usually an error, as it does not
aid garbage collection, | 731 <p> This finalizer nulls out fields. This is usually an error, as it does not
aid garbage collection, |
695 and the object is going to be garbage collected anyway. | 732 and the object is going to be garbage collected anyway.</p> |
696 | 733 |
697 | 734 |
698 <h3><a name="FI_FINALIZER_ONLY_NULLS_FIELDS">FI: Finalizer only nulls fields (FI
_FINALIZER_ONLY_NULLS_FIELDS)</a></h3> | 735 <h3><a name="FI_FINALIZER_ONLY_NULLS_FIELDS">FI: Finalizer only nulls fields (FI
_FINALIZER_ONLY_NULLS_FIELDS)</a></h3> |
699 | 736 |
700 | 737 |
701 <p> This finalizer does nothing except null out fields. This is completely poi
ntless, and requires that | 738 <p> This finalizer does nothing except null out fields. This is completely poi
ntless, and requires that |
702 the object be garbage collected, finalized, and then garbage collected again. Yo
u should just remove the finalize | 739 the object be garbage collected, finalized, and then garbage collected again. Yo
u should just remove the finalize |
703 method. | 740 method.</p> |
704 | 741 |
705 | 742 |
706 <h3><a name="FI_MISSING_SUPER_CALL">FI: Le finaliseur n'appelle pas le finaliseu
r de la super-classe (FI_MISSING_SUPER_CALL)</a></h3> | 743 <h3><a name="FI_MISSING_SUPER_CALL">FI: Le finaliseur n'appelle pas le finaliseu
r de la super-classe (FI_MISSING_SUPER_CALL)</a></h3> |
707 | 744 |
708 | 745 |
709 <p>Cette méthode <code>finalize()</code> n'appelle pas la méthode <code>finalize
()</code> de sa classe mère ; donc toutes les actions définies au niveau de la c
lasse mère seront ignorées. Ajoutez un appel à <code>super.finalize()</code>.</p
> | 746 <p>Cette méthode <code>finalize()</code> n'appelle pas la méthode <code>finalize
()</code> de sa classe mère ; donc toutes les actions définies au niveau de la c
lasse mère seront ignorées. Ajoutez un appel à <code>super.finalize()</code>.</p
> |
710 | 747 |
711 | 748 |
712 <h3><a name="FI_NULLIFY_SUPER">FI: Un finaliseur rend inutile celui de sa super-
classe (FI_NULLIFY_SUPER)</a></h3> | 749 <h3><a name="FI_NULLIFY_SUPER">FI: Un finaliseur rend inutile celui de sa super-
classe (FI_NULLIFY_SUPER)</a></h3> |
713 | 750 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 | 861 |
825 <p>Ce code semble stocker un objet non sérialisable dans un <code>HttpSession</c
ode>. Une erreur se produira si cette session est rendue passive ou migrée.</p> | 862 <p>Ce code semble stocker un objet non sérialisable dans un <code>HttpSession</c
ode>. Une erreur se produira si cette session est rendue passive ou migrée.</p> |
826 | 863 |
827 | 864 |
828 <h3><a name="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: Les champs d'une cl
asse immuable devraient être finaux. (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS)<
/a></h3> | 865 <h3><a name="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: Les champs d'une cl
asse immuable devraient être finaux. (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS)<
/a></h3> |
829 | 866 |
830 | 867 |
831 La classe est annotée avec <code>net.jcip.annotations.Immutable</code>, et la rè
gle liée à cette annotation réclame que tous les champs soient marqués <code>fin
al</code>. | 868 La classe est annotée avec <code>net.jcip.annotations.Immutable</code>, et la rè
gle liée à cette annotation réclame que tous les champs soient marqués <code>fin
al</code>. |
832 | 869 |
833 | 870 |
| 871 <h3><a name="ME_ENUM_FIELD_SETTER">ME: Public enum method unconditionally sets i
ts field (ME_ENUM_FIELD_SETTER)</a></h3> |
| 872 |
| 873 |
| 874 <p>This public method declared in public enum unconditionally sets enum field,
thus this field can be changed by malicious code |
| 875 or by accident from another package. Though mutable enum fields may be used fo
r lazy initialization, it's a bad practice to expose them to the outer world. |
| 876 Consider removing this method or declaring it package-private.</p> |
| 877 |
| 878 |
| 879 <h3><a name="ME_MUTABLE_ENUM_FIELD">ME: Enum field is public and mutable (ME_MUT
ABLE_ENUM_FIELD)</a></h3> |
| 880 |
| 881 |
| 882 <p>A mutable public field is defined inside a public enum, thus can be changed
by malicious code or by accident from another package. |
| 883 Though mutable enum fields may be used for lazy initialization, it's a bad pra
ctice to expose them to the outer world. |
| 884 Consider declaring this field final and/or package-private.</p> |
| 885 |
| 886 |
834 <h3><a name="NP_BOOLEAN_RETURN_NULL">NP: Method with Boolean return type returns
explicit null (NP_BOOLEAN_RETURN_NULL)</a></h3> | 887 <h3><a name="NP_BOOLEAN_RETURN_NULL">NP: Method with Boolean return type returns
explicit null (NP_BOOLEAN_RETURN_NULL)</a></h3> |
835 | 888 |
836 | 889 |
837 <p> | 890 <p> |
838 A method that returns either Boolean.TRUE, Boolean.FALSE or null is an accid
ent waiting to happen. | 891 A method that returns either Boolean.TRUE, Boolean.FALSE or null is an accid
ent waiting to happen. |
839 This method can be invoked as though it returned a value of type boolean, an
d | 892 This method can be invoked as though it returned a value of type boolean, an
d |
840 the compiler will insert automatic unboxing of the Boolean value. If a null
value is returned, | 893 the compiler will insert automatic unboxing of the Boolean value. If a null
value is returned, |
841 this will result in a NullPointerException. | 894 this will result in a NullPointerException. |
842 </p> | 895 </p> |
843 | 896 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
915 <p>Les noms de méthodes devraient être des verbes en minuscules, avec la premièr
e lettre des mots, après le premier, en majuscules.</p> | 968 <p>Les noms de méthodes devraient être des verbes en minuscules, avec la premièr
e lettre des mots, après le premier, en majuscules.</p> |
916 | 969 |
917 | 970 |
918 <h3><a name="NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: Class names shouldn't shadow
simple name of implemented interface (NM_SAME_SIMPLE_NAME_AS_INTERFACE)</a></h3> | 971 <h3><a name="NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: Class names shouldn't shadow
simple name of implemented interface (NM_SAME_SIMPLE_NAME_AS_INTERFACE)</a></h3> |
919 | 972 |
920 | 973 |
921 <p> This class/interface has a simple name that is identical to that of an imp
lemented/extended interface, except | 974 <p> This class/interface has a simple name that is identical to that of an imp
lemented/extended interface, except |
922 that the interface is in a different package (e.g., <code>alpha.Foo</code> exten
ds <code>beta.Foo</code>). | 975 that the interface is in a different package (e.g., <code>alpha.Foo</code> exten
ds <code>beta.Foo</code>). |
923 This can be exceptionally confusing, create lots of situations in which you have
to look at import statements | 976 This can be exceptionally confusing, create lots of situations in which you have
to look at import statements |
924 to resolve references and creates many | 977 to resolve references and creates many |
925 opportunities to accidently define methods that do not override methods in their
superclasses. | 978 opportunities to accidentally define methods that do not override methods in the
ir superclasses. |
926 </p> | 979 </p> |
927 | 980 |
928 | 981 |
929 <h3><a name="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: Class names shouldn't shadow
simple name of superclass (NM_SAME_SIMPLE_NAME_AS_SUPERCLASS)</a></h3> | 982 <h3><a name="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: Class names shouldn't shadow
simple name of superclass (NM_SAME_SIMPLE_NAME_AS_SUPERCLASS)</a></h3> |
930 | 983 |
931 | 984 |
932 <p> This class has a simple name that is identical to that of its superclass,
except | 985 <p> This class has a simple name that is identical to that of its superclass,
except |
933 that its superclass is in a different package (e.g., <code>alpha.Foo</code> exte
nds <code>beta.Foo</code>). | 986 that its superclass is in a different package (e.g., <code>alpha.Foo</code> exte
nds <code>beta.Foo</code>). |
934 This can be exceptionally confusing, create lots of situations in which you have
to look at import statements | 987 This can be exceptionally confusing, create lots of situations in which you have
to look at import statements |
935 to resolve references and creates many | 988 to resolve references and creates many |
936 opportunities to accidently define methods that do not override methods in their
superclasses. | 989 opportunities to accidentally define methods that do not override methods in the
ir superclasses. |
937 </p> | 990 </p> |
938 | 991 |
939 | 992 |
940 <h3><a name="NM_VERY_CONFUSING_INTENTIONAL">Nm: Very confusing method names (but
perhaps intentional) (NM_VERY_CONFUSING_INTENTIONAL)</a></h3> | 993 <h3><a name="NM_VERY_CONFUSING_INTENTIONAL">Nm: Very confusing method names (but
perhaps intentional) (NM_VERY_CONFUSING_INTENTIONAL)</a></h3> |
941 | 994 |
942 | 995 |
943 <p> The referenced methods have names that differ only by capitalization. | 996 <p> The referenced methods have names that differ only by capitalization. |
944 This is very confusing because if the capitalization were | 997 This is very confusing because if the capitalization were |
945 identical then one of the methods would override the other. From the existence o
f other methods, it | 998 identical then one of the methods would override the other. From the existence o
f other methods, it |
946 seems that the existence of both of these methods is intentional, but is sure is
confusing. | 999 seems that the existence of both of these methods is intentional, but is sure is
confusing. |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1305 <em>Boris Bokowski</em> | 1358 <em>Boris Bokowski</em> |
1306 </p> | 1359 </p> |
1307 | 1360 |
1308 | 1361 |
1309 <h3><a name="BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: La classe surcharge mal une méth
ode implémentée dans une superclasse Adapter (BOA_BADLY_OVERRIDDEN_ADAPTER)</a><
/h3> | 1362 <h3><a name="BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: La classe surcharge mal une méth
ode implémentée dans une superclasse Adapter (BOA_BADLY_OVERRIDDEN_ADAPTER)</a><
/h3> |
1310 | 1363 |
1311 | 1364 |
1312 <p>Cette méthode surcharge une méthode provenant d'une classe mère qui est un <c
ode>Adapter</code> qui implémente un <code>Listener</code> défini dans le paquet
age <code>java.awt.event</code> ou <code>javax.swing.event</code>. En conséquenc
e, cette méthode ne sera pas appelée quand l'évènement se produira.</p> | 1365 <p>Cette méthode surcharge une méthode provenant d'une classe mère qui est un <c
ode>Adapter</code> qui implémente un <code>Listener</code> défini dans le paquet
age <code>java.awt.event</code> ou <code>javax.swing.event</code>. En conséquenc
e, cette méthode ne sera pas appelée quand l'évènement se produira.</p> |
1313 | 1366 |
1314 | 1367 |
| 1368 <h3><a name="BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: Possible bad parsing of shift op
eration (BSHIFT_WRONG_ADD_PRIORITY)</a></h3> |
| 1369 |
| 1370 |
| 1371 <p> |
| 1372 The code performs an operation like (x << 8 + y). Although this might be c
orrect, probably it was meant |
| 1373 to perform (x << 8) + y, but shift operation has |
| 1374 a lower precedence, so it's actually parsed as x << (8 + y). |
| 1375 </p> |
| 1376 |
| 1377 |
1315 <h3><a name="ICAST_BAD_SHIFT_AMOUNT">BSHIFT: Décalage d'un int hors de proportio
n (0..31) (ICAST_BAD_SHIFT_AMOUNT)</a></h3> | 1378 <h3><a name="ICAST_BAD_SHIFT_AMOUNT">BSHIFT: Décalage d'un int hors de proportio
n (0..31) (ICAST_BAD_SHIFT_AMOUNT)</a></h3> |
1316 | 1379 |
1317 | 1380 |
1318 <p>Un décalage de n bits est effectué avec n hors des limites (0..31). Ceci résu
lte en l'utilisation des 5 bits inférieurs de l'entier pour décider de la valeur
du décalage. Ce n'est sans doute pas l'effet recherché et est pour le moins sou
rce de confusion.</p> | 1381 <p>Un décalage de n bits est effectué avec n hors des limites (0..31). Ceci résu
lte en l'utilisation des 5 bits inférieurs de l'entier pour décider de la valeur
du décalage. Ce n'est sans doute pas l'effet recherché et est pour le moins sou
rce de confusion.</p> |
1319 | 1382 |
1320 | 1383 |
1321 <h3><a name="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: Primitive value is
unboxed and coerced for ternary operator (BX_UNBOXED_AND_COERCED_FOR_TERNARY_OP
ERATOR)</a></h3> | |
1322 | |
1323 | |
1324 <p>A wrapped primitive value is unboxed and converted to another primitive typ
e as part of the | |
1325 evaluation of a conditional ternary operator (the <code> b ? e1 : e2</code> oper
ator). The | |
1326 semantics of Java mandate that if <code>e1</code> and <code>e2</code> are wrappe
d | |
1327 numeric values, the values are unboxed and converted/coerced to their common typ
e (e.g, | |
1328 if <code>e1</code> is of type <code>Integer</code> | |
1329 and <code>e2</code> is of type <code>Float</code>, then <code>e1</code> is unbox
ed, | |
1330 converted to a floating point value, and boxed. See JLS Section 15.25. | |
1331 </p> | |
1332 | |
1333 | |
1334 <h3><a name="CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() returns I
nteger.MIN_VALUE (CO_COMPARETO_RESULTS_MIN_VALUE)</a></h3> | |
1335 | |
1336 | |
1337 <p> In some situation, this compareTo or compare method returns | |
1338 the constant Integer.MIN_VALUE, which is an exceptionally bad practice. | |
1339 The only thing that matters about the return value of compareTo is the sign of
the result. | |
1340 But people will sometimes negate the return value of compareTo, expecting th
at this will negate | |
1341 the sign of the result. And it will, except in the case where the value retu
rned is Integer.MIN_VALUE. | |
1342 So just return -1 rather than Integer.MIN_VALUE. | |
1343 | |
1344 | |
1345 <h3><a name="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: Useless increment in retur
n statement (DLS_DEAD_LOCAL_INCREMENT_IN_RETURN)</a></h3> | 1384 <h3><a name="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: Useless increment in retur
n statement (DLS_DEAD_LOCAL_INCREMENT_IN_RETURN)</a></h3> |
1346 | 1385 |
1347 | 1386 |
1348 <p>This statement has a return such as <code>return x++;</code>. | 1387 <p>This statement has a return such as <code>return x++;</code>. |
1349 A postfix increment/decrement does not impact the value of the expression, | 1388 A postfix increment/decrement does not impact the value of the expression, |
1350 so this increment/decrement has no effect. | 1389 so this increment/decrement has no effect. |
1351 Please verify that this statement does the right thing. | 1390 Please verify that this statement does the right thing. |
1352 </p> | 1391 </p> |
1353 | 1392 |
1354 | 1393 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1481 | 1520 |
1482 | 1521 |
1483 <h3><a name="DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Useless/vacuous call to Ea
syMock method (DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD)</a></h3> | 1522 <h3><a name="DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Useless/vacuous call to Ea
syMock method (DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD)</a></h3> |
1484 | 1523 |
1485 | 1524 |
1486 <p>This call doesn't pass any objects to the EasyMock method, so the call do
esn't do anything. | 1525 <p>This call doesn't pass any objects to the EasyMock method, so the call do
esn't do anything. |
1487 </p> | 1526 </p> |
1488 | 1527 |
1489 | 1528 |
1490 | 1529 |
| 1530 <h3><a name="DM_INVALID_MIN_MAX">Dm: Incorrect combination of Math.max and Math.
min (DM_INVALID_MIN_MAX)</a></h3> |
| 1531 |
| 1532 |
| 1533 <p>This code tries to limit the value bounds using the construct like Math.min
(0, Math.max(100, value)). However the order of |
| 1534 the constants is incorrect: it should be Math.min(100, Math.max(0, value)). As
the result this code always produces the same result |
| 1535 (or NaN if the value is NaN).</p> |
| 1536 |
| 1537 |
1491 <h3><a name="EC_ARRAY_AND_NONARRAY">EC: Utilisation de equals() pour comparer un
tableau et un objet (EC_ARRAY_AND_NONARRAY)</a></h3> | 1538 <h3><a name="EC_ARRAY_AND_NONARRAY">EC: Utilisation de equals() pour comparer un
tableau et un objet (EC_ARRAY_AND_NONARRAY)</a></h3> |
1492 | 1539 |
1493 | 1540 |
1494 <p>Cette méthode appelle <code>equals(Object o)</code> pour comparer un tableau
et une référence qui ne semble pas être un tableau. Si les choses comparées sont
de type différents, il est garanti qu'elles seront non égales et la comparaison
est probablement une erreur. Même si les deux sont des tableaux, la méthode <co
de>equals()</code> détermine seulement si les deux tableaux sont le même objet.
Pour comparer le contenu de deux tableaux, utilisez <code>java.util.Arrays.equal
s(Object[], Object[])</code>.</p> | 1541 <p>Cette méthode appelle <code>equals(Object o)</code> pour comparer un tableau
et une référence qui ne semble pas être un tableau. Si les choses comparées sont
de type différents, il est garanti qu'elles seront non égales et la comparaison
est probablement une erreur. Même si les deux sont des tableaux, la méthode <co
de>equals()</code> détermine seulement si les deux tableaux sont le même objet.
Pour comparer le contenu de deux tableaux, utilisez <code>java.util.Arrays.equal
s(Object[], Object[])</code>.</p> |
1495 | 1542 |
1496 | 1543 |
1497 <h3><a name="EC_BAD_ARRAY_COMPARE">EC: Appel à equals() sur un tableau équivalen
t à == (EC_BAD_ARRAY_COMPARE)</a></h3> | 1544 <h3><a name="EC_BAD_ARRAY_COMPARE">EC: Appel à equals() sur un tableau équivalen
t à == (EC_BAD_ARRAY_COMPARE)</a></h3> |
1498 | 1545 |
1499 | 1546 |
1500 <p>Cette méthode invoque la méthode <code>equals(Object o)</code> d'un tableau.
Comme les tableaux ne surchargent pas la méthode <code>equals()</code> de <code>
Object</code>, cet appel revient à comparer les adresses. Pour comparer les cont
enus de tableaux, utilisez <code>java.util.Arrays.equals(Object[], Object[])</co
de>.</p> | 1547 <p>Cette méthode invoque la méthode <code>equals(Object o)</code> d'un tableau.
Comme les tableaux ne surchargent pas la méthode <code>equals()</code> de <code>
Object</code>, cet appel revient à comparer les adresses. Pour comparer les cont
enus de tableaux, utilisez <code>java.util.Arrays.equals(Object[], Object[])</co
de>.</p> |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1764 | 1811 |
1765 | 1812 |
1766 <h3><a name="ICAST_INT_2_LONG_AS_INSTANT">ICAST: int value converted to long and
used as absolute time (ICAST_INT_2_LONG_AS_INSTANT)</a></h3> | 1813 <h3><a name="ICAST_INT_2_LONG_AS_INSTANT">ICAST: int value converted to long and
used as absolute time (ICAST_INT_2_LONG_AS_INSTANT)</a></h3> |
1767 | 1814 |
1768 | 1815 |
1769 <p> | 1816 <p> |
1770 This code converts a 32-bit int value to a 64-bit long value, and then | 1817 This code converts a 32-bit int value to a 64-bit long value, and then |
1771 passes that value for a method parameter that requires an absolute time value. | 1818 passes that value for a method parameter that requires an absolute time value. |
1772 An absolute time value is the number | 1819 An absolute time value is the number |
1773 of milliseconds since the standard base time known as "the epoch", namely Januar
y 1, 1970, 00:00:00 GMT. | 1820 of milliseconds since the standard base time known as "the epoch", namely Januar
y 1, 1970, 00:00:00 GMT. |
1774 For example, the following method, intended to convert seconds since the epoc in
to a Date, is badly | 1821 For example, the following method, intended to convert seconds since the epoch i
nto a Date, is badly |
1775 broken:</p> | 1822 broken:</p> |
1776 <pre> | 1823 <pre> |
1777 Date getDate(int seconds) { return new Date(seconds * 1000); } | 1824 Date getDate(int seconds) { return new Date(seconds * 1000); } |
1778 </pre> | 1825 </pre> |
1779 <p>The multiplication is done using 32-bit arithmetic, and then converted to a 6
4-bit value. | 1826 <p>The multiplication is done using 32-bit arithmetic, and then converted to a 6
4-bit value. |
1780 When a 32-bit value is converted to 64-bits and used to express an absolute time | 1827 When a 32-bit value is converted to 64-bits and used to express an absolute time |
1781 value, only dates in December 1969 and January 1970 can be represented.</p> | 1828 value, only dates in December 1969 and January 1970 can be represented.</p> |
1782 | 1829 |
1783 <p>Correct implementations for the above method are:</p> | 1830 <p>Correct implementations for the above method are:</p> |
1784 | 1831 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1874 | 1921 |
1875 <h3><a name="INT_BAD_COMPARISON_WITH_INT_VALUE">INT: Bad comparison of int value
with long constant (INT_BAD_COMPARISON_WITH_INT_VALUE)</a></h3> | 1922 <h3><a name="INT_BAD_COMPARISON_WITH_INT_VALUE">INT: Bad comparison of int value
with long constant (INT_BAD_COMPARISON_WITH_INT_VALUE)</a></h3> |
1876 | 1923 |
1877 | 1924 |
1878 <p> This code compares an int value with a long constant that is outside | 1925 <p> This code compares an int value with a long constant that is outside |
1879 the range of values that can be represented as an int value. | 1926 the range of values that can be represented as an int value. |
1880 This comparison is vacuous and possibily to be incorrect. | 1927 This comparison is vacuous and possibily to be incorrect. |
1881 </p> | 1928 </p> |
1882 | 1929 |
1883 | 1930 |
1884 <h3><a name="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: Bad comparison of n
onnegative value with negative constant (INT_BAD_COMPARISON_WITH_NONNEGATIVE_VAL
UE)</a></h3> | 1931 <h3><a name="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: Bad comparison of n
onnegative value with negative constant or zero (INT_BAD_COMPARISON_WITH_NONNEGA
TIVE_VALUE)</a></h3> |
1885 | 1932 |
1886 | 1933 |
1887 <p> This code compares a value that is guaranteed to be non-negative with a nega
tive constant. | 1934 <p> This code compares a value that is guaranteed to be non-negative with a nega
tive constant or zero. |
1888 </p> | 1935 </p> |
1889 | 1936 |
1890 | 1937 |
1891 <h3><a name="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: Bad comparison of signed
byte (INT_BAD_COMPARISON_WITH_SIGNED_BYTE)</a></h3> | 1938 <h3><a name="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: Bad comparison of signed
byte (INT_BAD_COMPARISON_WITH_SIGNED_BYTE)</a></h3> |
1892 | 1939 |
1893 | 1940 |
1894 <p> Signed bytes can only have a value in the range -128 to 127. Comparing | 1941 <p> Signed bytes can only have a value in the range -128 to 127. Comparing |
1895 a signed byte with a value outside that range is vacuous and likely to be incorr
ect. | 1942 a signed byte with a value outside that range is vacuous and likely to be incorr
ect. |
1896 To convert a signed byte <code>b</code> to an unsigned value in the range 0..255
, | 1943 To convert a signed byte <code>b</code> to an unsigned value in the range 0..255
, |
1897 use <code>0xff & b</code> | 1944 use <code>0xff & b</code> |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1972 | 2019 |
1973 <p> | 2020 <p> |
1974 There is a statement or branch on an exception path | 2021 There is a statement or branch on an exception path |
1975 that if executed guarantees that | 2022 that if executed guarantees that |
1976 a value is null at this point, and that | 2023 a value is null at this point, and that |
1977 value that is guaranteed to be dereferenced | 2024 value that is guaranteed to be dereferenced |
1978 (except on forward paths involving runtime exceptions). | 2025 (except on forward paths involving runtime exceptions). |
1979 </p> | 2026 </p> |
1980 | 2027 |
1981 | 2028 |
1982 <h3><a name="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP: Nonnull field
is not initialized (NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR)</a></h3> | 2029 <h3><a name="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP: Non-null field
is not initialized (NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR)</a></h3> |
1983 | 2030 |
1984 | 2031 |
1985 <p> The field is marked as nonnull, but isn't written to by the construct
or. | 2032 <p> The field is marked as non-null, but isn't written to by the construc
tor. |
1986 The field might be initialized elsewhere during constructor, or might always | 2033 The field might be initialized elsewhere during constructor, or might always |
1987 be initialized before use. | 2034 be initialized before use. |
1988 </p> | 2035 </p> |
1989 | 2036 |
1990 | 2037 |
1991 <h3><a name="NP_NONNULL_PARAM_VIOLATION">NP: Appel de méthode transmettant null
à un paramètre déclaré @NonNull (NP_NONNULL_PARAM_VIOLATION)</a></h3> | 2038 <h3><a name="NP_NONNULL_PARAM_VIOLATION">NP: Appel de méthode transmettant null
à un paramètre déclaré @NonNull (NP_NONNULL_PARAM_VIOLATION)</a></h3> |
1992 | 2039 |
1993 | 2040 |
1994 <p>Cette méthode passe une valeur à <code>null</code> en paramètre d'une méthode
qui a déclaré ce paramètre comme <code>@NonNull</code>.</p> | 2041 <p>Cette méthode passe une valeur à <code>null</code> en paramètre d'une méthode
qui a déclaré ce paramètre comme <code>@NonNull</code>.</p> |
1995 <p>Notez que la méthode avec l'annotation <code>@NonNull</code> peut être dans u
ne sous-classe de l'objet appelé.</p> | 2042 <p>Notez que la méthode avec l'annotation <code>@NonNull</code> peut être dans u
ne sous-classe de l'objet appelé.</p> |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2039 <h3><a name="NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: Appel à une méthode non virtuel
le passant null à un paramètre déréférencé de façon inconditionnelle (NP_NULL_PA
RAM_DEREF_NONVIRTUAL)</a></h3> | 2086 <h3><a name="NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: Appel à une méthode non virtuel
le passant null à un paramètre déréférencé de façon inconditionnelle (NP_NULL_PA
RAM_DEREF_NONVIRTUAL)</a></h3> |
2040 | 2087 |
2041 | 2088 |
2042 <p>Une valeur pouvant être à <code>null</code> est passée à une méthode qui déré
férence ce paramètre de façon inconditionnelle. Cela peut se terminer en <code>N
ullPointerException</code>.</p> | 2089 <p>Une valeur pouvant être à <code>null</code> est passée à une méthode qui déré
férence ce paramètre de façon inconditionnelle. Cela peut se terminer en <code>N
ullPointerException</code>.</p> |
2043 | 2090 |
2044 | 2091 |
2045 <h3><a name="NP_OPTIONAL_RETURN_NULL">NP: Method with Optional return type retur
ns explicit null (NP_OPTIONAL_RETURN_NULL)</a></h3> | 2092 <h3><a name="NP_OPTIONAL_RETURN_NULL">NP: Method with Optional return type retur
ns explicit null (NP_OPTIONAL_RETURN_NULL)</a></h3> |
2046 | 2093 |
2047 | 2094 |
2048 <p> | 2095 <p> |
2049 The usage of Optional return type always mean that explicit null returns wer
e not desired by design. | 2096 The usage of Optional return type (java.util.Optional or com.google.common.b
ase.Optiona) |
| 2097 always mean that explicit null returns were not desired by design. |
2050 Returning a null value in such case is a contract violation and will most li
kely break clients code. | 2098 Returning a null value in such case is a contract violation and will most li
kely break clients code. |
2051 </p> | 2099 </p> |
2052 | 2100 |
2053 | 2101 |
2054 <h3><a name="NP_STORE_INTO_NONNULL_FIELD">NP: Stocke une valeur null dans un cha
mp annoté NonNull (NP_STORE_INTO_NONNULL_FIELD)</a></h3> | 2102 <h3><a name="NP_STORE_INTO_NONNULL_FIELD">NP: Stocke une valeur null dans un cha
mp annoté NonNull (NP_STORE_INTO_NONNULL_FIELD)</a></h3> |
2055 | 2103 |
2056 | 2104 |
2057 <p>Une valeur qui pourrait être à <code>null</code> est stockée dans un champ qu
i a été annoté comme <code>NonNull</code>.</p> | 2105 <p>Une valeur qui pourrait être à <code>null</code> est stockée dans un champ qu
i a été annoté comme <code>NonNull</code>.</p> |
2058 | 2106 |
2059 | 2107 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2120 types are <code>Foo</code>'s from different packages. | 2168 types are <code>Foo</code>'s from different packages. |
2121 </p> | 2169 </p> |
2122 | 2170 |
2123 | 2171 |
2124 <h3><a name="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: Méthode assignant une val
eur boléenne fixe dans une expression booléenne (QBA_QUESTIONABLE_BOOLEAN_ASSIGN
MENT)</a></h3> | 2172 <h3><a name="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: Méthode assignant une val
eur boléenne fixe dans une expression booléenne (QBA_QUESTIONABLE_BOOLEAN_ASSIGN
MENT)</a></h3> |
2125 | 2173 |
2126 | 2174 |
2127 <p>Cette méthode assigne une valeur booléenne fixe (<code>true</code> ou <code>f
alse</code>) à une variable booléenne dans une expression <code>if</code> ou <co
de>while</code>. Il est probable que le but était d'effectuer une comparaison bo
oléenne utilisant <code>==</code> et non pas une affectation avec <code>=</code>
.</p> | 2175 <p>Cette méthode assigne une valeur booléenne fixe (<code>true</code> ou <code>f
alse</code>) à une variable booléenne dans une expression <code>if</code> ou <co
de>while</code>. Il est probable que le but était d'effectuer une comparaison bo
oléenne utilisant <code>==</code> et non pas une affectation avec <code>=</code>
.</p> |
2128 | 2176 |
2129 | 2177 |
| 2178 <h3><a name="RANGE_ARRAY_INDEX">RANGE: Array index is out of bounds (RANGE_ARRAY
_INDEX)</a></h3> |
| 2179 |
| 2180 |
| 2181 <p> Array operation is performed, but array index is out of bounds, which wil
l result in ArrayIndexOutOfBoundsException at runtime.</p> |
| 2182 |
| 2183 |
| 2184 <h3><a name="RANGE_ARRAY_LENGTH">RANGE: Array length is out of bounds (RANGE_ARR
AY_LENGTH)</a></h3> |
| 2185 |
| 2186 |
| 2187 <p> Method is called with array parameter and length parameter, but the lengt
h is out of bounds. This will result in IndexOutOfBoundsException at runtime. </
p> |
| 2188 |
| 2189 |
| 2190 <h3><a name="RANGE_ARRAY_OFFSET">RANGE: Array offset is out of bounds (RANGE_ARR
AY_OFFSET)</a></h3> |
| 2191 |
| 2192 |
| 2193 <p> Method is called with array parameter and offset parameter, but the offse
t is out of bounds. This will result in IndexOutOfBoundsException at runtime. </
p> |
| 2194 |
| 2195 |
| 2196 <h3><a name="RANGE_STRING_INDEX">RANGE: String index is out of bounds (RANGE_STR
ING_INDEX)</a></h3> |
| 2197 |
| 2198 |
| 2199 <p> String method is called and specified string index is out of bounds. This
will result in StringIndexOutOfBoundsException at runtime. </p> |
| 2200 |
| 2201 |
2130 <h3><a name="RC_REF_COMPARISON">RC: Comparaison de références suspecte (RC_REF_C
OMPARISON)</a></h3> | 2202 <h3><a name="RC_REF_COMPARISON">RC: Comparaison de références suspecte (RC_REF_C
OMPARISON)</a></h3> |
2131 | 2203 |
2132 | 2204 |
2133 <p>Cette méthode compare deux références avec l'opérateur <code>==</code> ou <co
de>!=</code>, alors que la façon correcte de comparer les instances de ce type e
st généralement d'utiliser la méthode <code>equals()</code>. Des exemples de cla
sses qui ne doivent généralement pas être comparées par référence sont <code>jav
a.lang.Integer</code>, <code>java.lang.Float</code>, etc...</p> | 2205 <p>Cette méthode compare deux références avec l'opérateur <code>==</code> ou <co
de>!=</code>, alors que la façon correcte de comparer les instances de ce type e
st généralement d'utiliser la méthode <code>equals()</code>. Des exemples de cla
sses qui ne doivent généralement pas être comparées par référence sont <code>jav
a.lang.Integer</code>, <code>java.lang.Float</code>, etc...</p> |
2134 | 2206 |
2135 | 2207 |
2136 <h3><a name="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: Test de nullité
d'une valeur préalablement déréférencée (RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEE
N_A_NPE)</a></h3> | 2208 <h3><a name="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: Test de nullité
d'une valeur préalablement déréférencée (RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEE
N_A_NPE)</a></h3> |
2137 | 2209 |
2138 | 2210 |
2139 <p>Une valeur est testée ici pour savoir si elle est à <code>null</code> alors q
ue cette valeur ne peut pas être à <code>null</code> puisqu'elle a été déréféren
cée et qu'une <code>NullPointerException</code> se serait alors produite à ce mo
ment. Ce code est en contradiction avec le déréférencement préalable au sujet de
la capacité de cette valeur d'être à <code>null</code>. Soit le test est redond
ant, soit le déréférencement préalable est erroné.</p> | 2211 <p>Une valeur est testée ici pour savoir si elle est à <code>null</code> alors q
ue cette valeur ne peut pas être à <code>null</code> puisqu'elle a été déréféren
cée et qu'une <code>NullPointerException</code> se serait alors produite à ce mo
ment. Ce code est en contradiction avec le déréférencement préalable au sujet de
la capacité de cette valeur d'être à <code>null</code>. Soit le test est redond
ant, soit le déréférencement préalable est erroné.</p> |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2776 | 2848 |
2777 <p>Un champ statique modifiable peut-être changé par accident ou par du code mal
veillant d'un autre paquetage. Le champ devrait être package protected et/ou fin
al pour éviter cette vulnérabilité.</p> | 2849 <p>Un champ statique modifiable peut-être changé par accident ou par du code mal
veillant d'un autre paquetage. Le champ devrait être package protected et/ou fin
al pour éviter cette vulnérabilité.</p> |
2778 | 2850 |
2779 | 2851 |
2780 <h3><a name="MS_MUTABLE_ARRAY">MS: Un champ est un tableau modifiable (MS_MUTABL
E_ARRAY)</a></h3> | 2852 <h3><a name="MS_MUTABLE_ARRAY">MS: Un champ est un tableau modifiable (MS_MUTABL
E_ARRAY)</a></h3> |
2781 | 2853 |
2782 | 2854 |
2783 <p>Le champ est une référence final static à un tableau et peut-être modifié par
accident ou par du code malveillant d'un autre paquetage. Ce code peut libremen
t modifier le contenu du tableau.</p> | 2855 <p>Le champ est une référence final static à un tableau et peut-être modifié par
accident ou par du code malveillant d'un autre paquetage. Ce code peut libremen
t modifier le contenu du tableau.</p> |
2784 | 2856 |
2785 | 2857 |
| 2858 <h3><a name="MS_MUTABLE_COLLECTION">MS: Field is a mutable collection (MS_MUTABL
E_COLLECTION)</a></h3> |
| 2859 |
| 2860 |
| 2861 <p>A mutable collection instance is assigned to a final static field, |
| 2862 thus can be changed by malicious code or by accident from another package. |
| 2863 Consider wrapping this field into Collections.unmodifiableSet/List/Map/etc. |
| 2864 to avoid this vulnerability.</p> |
| 2865 |
| 2866 |
| 2867 <h3><a name="MS_MUTABLE_COLLECTION_PKGPROTECT">MS: Field is a mutable collection
which should be package protected (MS_MUTABLE_COLLECTION_PKGPROTECT)</a></h3> |
| 2868 |
| 2869 |
| 2870 <p>A mutable collection instance is assigned to a final static field, |
| 2871 thus can be changed by malicious code or by accident from another package. |
| 2872 The field could be made package protected to avoid this vulnerability. |
| 2873 Alternatively you may wrap this field into Collections.unmodifiableSet/List/M
ap/etc. |
| 2874 to avoid this vulnerability.</p> |
| 2875 |
| 2876 |
2786 <h3><a name="MS_MUTABLE_HASHTABLE">MS: Un champ modifiable est une Hashtable (MS
_MUTABLE_HASHTABLE)</a></h3> | 2877 <h3><a name="MS_MUTABLE_HASHTABLE">MS: Un champ modifiable est une Hashtable (MS
_MUTABLE_HASHTABLE)</a></h3> |
2787 | 2878 |
2788 | 2879 |
2789 <p>Le champ est une référence final static à une <code>Hashtable</code> et peut-
être modifié par accident ou par du code malveillant d'un autre paquetage. Ce co
de peut librement modifier le contenu de la <code>Hashtable</code>.</p> | 2880 <p>Le champ est une référence final static à une <code>Hashtable</code> et peut-
être modifié par accident ou par du code malveillant d'un autre paquetage. Ce co
de peut librement modifier le contenu de la <code>Hashtable</code>.</p> |
2790 | 2881 |
2791 | 2882 |
2792 <h3><a name="MS_OOI_PKGPROTECT">MS: Le champ devrait être sorti de l'interface e
t mis en package protected (MS_OOI_PKGPROTECT)</a></h3> | 2883 <h3><a name="MS_OOI_PKGPROTECT">MS: Le champ devrait être sorti de l'interface e
t mis en package protected (MS_OOI_PKGPROTECT)</a></h3> |
2793 | 2884 |
2794 | 2885 |
2795 <p>Un champ final static défini dans une interface référence un objet modifiable
tel qu'un tableau ou une table de hachage. Cet objet pourrait être modifié par
accident ou par du code sournois d'un autre paquetage. Pour résoudre cela et évi
ter cette vulnérabilité, le champ doit être intégré dans une classe et sa visibi
lité modifiée en package protected.</p> | 2886 <p>Un champ final static défini dans une interface référence un objet modifiable
tel qu'un tableau ou une table de hachage. Cet objet pourrait être modifié par
accident ou par du code sournois d'un autre paquetage. Pour résoudre cela et évi
ter cette vulnérabilité, le champ doit être intégré dans une classe et sa visibi
lité modifiée en package protected.</p> |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2827 (such as a concurrent hash map). | 2918 (such as a concurrent hash map). |
2828 These calls will not be executed atomically. | 2919 These calls will not be executed atomically. |
2829 | 2920 |
2830 | 2921 |
2831 <h3><a name="DC_DOUBLECHECK">DC: Possible double vérification d'un champ (DC_DOU
BLECHECK)</a></h3> | 2922 <h3><a name="DC_DOUBLECHECK">DC: Possible double vérification d'un champ (DC_DOU
BLECHECK)</a></h3> |
2832 | 2923 |
2833 | 2924 |
2834 <p>Cette méthode contient peut-être une instance de verrou par double vérificati
on. Cet idiome n'est pas correct vis-à-vis de la sémantique du modèle de mémoire
Java. Pour plus d'informations, cf. la page <a href="http://www.cs.umd.edu/~pug
h/java/memoryModel/DoubleCheckedLocking.html">http://www.cs.umd.edu/~pugh/java/m
emoryModel/DoubleCheckedLocking.html</a>.</p> | 2925 <p>Cette méthode contient peut-être une instance de verrou par double vérificati
on. Cet idiome n'est pas correct vis-à-vis de la sémantique du modèle de mémoire
Java. Pour plus d'informations, cf. la page <a href="http://www.cs.umd.edu/~pug
h/java/memoryModel/DoubleCheckedLocking.html">http://www.cs.umd.edu/~pugh/java/m
emoryModel/DoubleCheckedLocking.html</a>.</p> |
2835 | 2926 |
2836 | 2927 |
| 2928 <h3><a name="DC_PARTIALLY_CONSTRUCTED">DC: Possible exposure of partially initia
lized object (DC_PARTIALLY_CONSTRUCTED)</a></h3> |
| 2929 |
| 2930 |
| 2931 <p>Looks like this method uses lazy field initialization with double-checked l
ocking. |
| 2932 While the field is correctly declared as volatile, it's possible that the inte
rnal structure of |
| 2933 the object is changed after the field assignment, thus another thread may see
the partially initialized object.</p> |
| 2934 <p>To fix this problem consider storing the object into the local variable fir
st |
| 2935 and save it to the volatile field only after it's fully constructed. |
| 2936 </p> |
| 2937 |
| 2938 |
2837 <h3><a name="DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Synchronization on Boolean (DL_S
YNCHRONIZATION_ON_BOOLEAN)</a></h3> | 2939 <h3><a name="DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Synchronization on Boolean (DL_S
YNCHRONIZATION_ON_BOOLEAN)</a></h3> |
2838 | 2940 |
2839 | 2941 |
2840 <p> The code synchronizes on a boxed primitive constant, such as an Boolean.</
p> | 2942 <p> The code synchronizes on a boxed primitive constant, such as an Boolean.</
p> |
2841 <pre> | 2943 <pre> |
2842 private static Boolean inited = Boolean.FALSE; | 2944 private static Boolean inited = Boolean.FALSE; |
2843 ... | 2945 ... |
2844 synchronized(inited) { | 2946 synchronized(inited) { |
2845 if (!inited) { | 2947 if (!inited) { |
2846 init(); | 2948 init(); |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3295 </p> | 3397 </p> |
3296 | 3398 |
3297 | 3399 |
3298 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: Primitive va
lue is boxed then unboxed to perform primitive coercion (BX_BOXING_IMMEDIATELY_U
NBOXED_TO_PERFORM_COERCION)</a></h3> | 3400 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: Primitive va
lue is boxed then unboxed to perform primitive coercion (BX_BOXING_IMMEDIATELY_U
NBOXED_TO_PERFORM_COERCION)</a></h3> |
3299 | 3401 |
3300 | 3402 |
3301 <p>A primitive boxed value constructed and then immediately converted into a d
ifferent primitive type | 3403 <p>A primitive boxed value constructed and then immediately converted into a d
ifferent primitive type |
3302 (e.g., <code>new Double(d).intValue()</code>). Just perform direct primitive coe
rcion (e.g., <code>(int) d</code>).</p> | 3404 (e.g., <code>new Double(d).intValue()</code>). Just perform direct primitive coe
rcion (e.g., <code>(int) d</code>).</p> |
3303 | 3405 |
3304 | 3406 |
| 3407 <h3><a name="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: Primitive value is
unboxed and coerced for ternary operator (BX_UNBOXED_AND_COERCED_FOR_TERNARY_OP
ERATOR)</a></h3> |
| 3408 |
| 3409 |
| 3410 <p>A wrapped primitive value is unboxed and converted to another primitive typ
e as part of the |
| 3411 evaluation of a conditional ternary operator (the <code> b ? e1 : e2</code> oper
ator). The |
| 3412 semantics of Java mandate that if <code>e1</code> and <code>e2</code> are wrappe
d |
| 3413 numeric values, the values are unboxed and converted/coerced to their common typ
e (e.g, |
| 3414 if <code>e1</code> is of type <code>Integer</code> |
| 3415 and <code>e2</code> is of type <code>Float</code>, then <code>e1</code> is unbox
ed, |
| 3416 converted to a floating point value, and boxed. See JLS Section 15.25. |
| 3417 </p> |
| 3418 |
| 3419 |
3305 <h3><a name="BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: Boxed value is unboxed and the
n immediately reboxed (BX_UNBOXING_IMMEDIATELY_REBOXED)</a></h3> | 3420 <h3><a name="BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: Boxed value is unboxed and the
n immediately reboxed (BX_UNBOXING_IMMEDIATELY_REBOXED)</a></h3> |
3306 | 3421 |
3307 | 3422 |
3308 <p>A boxed value is unboxed and then immediately reboxed. | 3423 <p>A boxed value is unboxed and then immediately reboxed. |
3309 </p> | 3424 </p> |
3310 | 3425 |
3311 | 3426 |
| 3427 <h3><a name="DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: Boxing a primitive to compare (
DM_BOXED_PRIMITIVE_FOR_COMPARE)</a></h3> |
| 3428 |
| 3429 |
| 3430 <p>A boxed primitive is created just to call compareTo method. It's more effic
ient to use static compare method |
| 3431 (for double and float since Java 1.4, for other primitive types since Java 1.7
) which works on primitives directly. |
| 3432 </p> |
| 3433 |
| 3434 |
3312 <h3><a name="DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: Boxing/unboxing to parse a prim
itive (DM_BOXED_PRIMITIVE_FOR_PARSING)</a></h3> | 3435 <h3><a name="DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: Boxing/unboxing to parse a prim
itive (DM_BOXED_PRIMITIVE_FOR_PARSING)</a></h3> |
3313 | 3436 |
3314 | 3437 |
3315 <p>A boxed primitive is created from a String, just to extract the unboxed pri
mitive value. | 3438 <p>A boxed primitive is created from a String, just to extract the unboxed pri
mitive value. |
3316 It is more efficient to just call the static parseXXX method.</p> | 3439 It is more efficient to just call the static parseXXX method.</p> |
3317 | 3440 |
3318 | 3441 |
3319 <h3><a name="DM_BOXED_PRIMITIVE_TOSTRING">Bx: Méthode allouant une primitive box
ed pour appeler toString (DM_BOXED_PRIMITIVE_TOSTRING)</a></h3> | 3442 <h3><a name="DM_BOXED_PRIMITIVE_TOSTRING">Bx: Méthode allouant une primitive box
ed pour appeler toString (DM_BOXED_PRIMITIVE_TOSTRING)</a></h3> |
3320 | 3443 |
3321 | 3444 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3435 <p> | 3558 <p> |
3436 A large String constant is duplicated across multiple class files. | 3559 A large String constant is duplicated across multiple class files. |
3437 This is likely because a final field is initialized to a String constant, an
d the Java language | 3560 This is likely because a final field is initialized to a String constant, an
d the Java language |
3438 mandates that all references to a final field from other classes be inlined
into | 3561 mandates that all references to a final field from other classes be inlined
into |
3439 that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
6447475">JDK bug 6447475</a> | 3562 that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
6447475">JDK bug 6447475</a> |
3440 for a description of an occurrence of this bug in the JDK and how resolving
it reduced | 3563 for a description of an occurrence of this bug in the JDK and how resolving
it reduced |
3441 the size of the JDK by 1 megabyte. | 3564 the size of the JDK by 1 megabyte. |
3442 </p> | 3565 </p> |
3443 | 3566 |
3444 | 3567 |
3445 <h3><a name="IIO_INEFFICIENT_INDEX_OF">IIO: Inefficient use of String.indexOf(St
ring) (IIO_INEFFICIENT_INDEX_OF)</a></h3> | |
3446 | |
3447 | |
3448 <p> This code passes a constant string of length 1 to String.indexOf(). | |
3449 It is more efficient to use the integer implementations of String.indexOf(). | |
3450 f. e. call <code>myString.indexOf('.')</code> instead of <code>myString.indexOf(
".")</code></p> | |
3451 | |
3452 | |
3453 <h3><a name="IIO_INEFFICIENT_LAST_INDEX_OF">IIO: Inefficient use of String.lastI
ndexOf(String) (IIO_INEFFICIENT_LAST_INDEX_OF)</a></h3> | |
3454 | |
3455 | |
3456 <p> This code passes a constant string of length 1 to String.lastIndexOf(). | |
3457 It is more efficient to use the integer implementations of String.lastIndexOf(). | |
3458 f. e. call <code>myString.lastIndexOf('.')</code> instead of <code>myString.last
IndexOf(".")</code></p> | |
3459 | |
3460 | |
3461 <h3><a name="ITA_INEFFICIENT_TO_ARRAY">ITA: La méthode utilise toArray() avec un
tableau vide en paramètre (ITA_INEFFICIENT_TO_ARRAY)</a></h3> | |
3462 | |
3463 | |
3464 <p>Cette méthode utilise la méthode <code>toArray()</code> d'une classe dérivant
de <code>Collection</code>, en lui passant en paramètre un tableau vide. Il est
plus efficace d'utiliser <code>myCollection.toArray(new Foo[myCollection.size()
])</code>. Si le tableau transmis est assez grand pour stocker tous les éléments
de la collection, alors il est alimenté et renvoyé directement. Ceci évite la n
écessité de créer un nouveau tableau (par réflexion) pour renvoyer le résultat.<
/p> | |
3465 | |
3466 | |
3467 <h3><a name="SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: La méthode concatène des
chaînes au moyen de + en boucle (SBSC_USE_STRINGBUFFER_CONCATENATION)</a></h3> | 3568 <h3><a name="SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: La méthode concatène des
chaînes au moyen de + en boucle (SBSC_USE_STRINGBUFFER_CONCATENATION)</a></h3> |
3468 | 3569 |
3469 | 3570 |
3470 <p>Cette méthode semble construire une <ocde>String</code> en utilisant une conc
aténation en boucle. A chaque itération, l'objet <code>String</code> est convert
i en <code>StringBuffer</code>/<code>StringBuilder</code>, complété, puis de nou
veau converti en <code>String</code>. Ceci a un coût exponentiel en fonction du
nombre d'itérations, puisque la chaîne est recopiée à chaque itération.</p> | 3571 <p>Cette méthode semble construire une <ocde>String</code> en utilisant une conc
aténation en boucle. A chaque itération, l'objet <code>String</code> est convert
i en <code>StringBuffer</code>/<code>StringBuilder</code>, complété, puis de nou
veau converti en <code>String</code>. Ceci a un coût exponentiel en fonction du
nombre d'itérations, puisque la chaîne est recopiée à chaque itération.</p> |
3471 <p>De meilleurs performances peuvent être obtenues en utilisant explicitement <c
ode>StringBuffer</code> (ou <code>StringBuilder</code> en Java 5).</p> | 3572 <p>De meilleurs performances peuvent être obtenues en utilisant explicitement <c
ode>StringBuffer</code> (ou <code>StringBuilder</code> en Java 5).</p> |
3472 <p>Par exemple :</p> | 3573 <p>Par exemple :</p> |
3473 <pre> | 3574 <pre> |
3474 // C'est mal ! | 3575 // C'est mal ! |
3475 String s = ""; | 3576 String s = ""; |
3476 for (int i = 0; i < field.length; ++i) { | 3577 for (int i = 0; i < field.length; ++i) { |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3842 | 3943 |
3843 | 3944 |
3844 <p>Cette opération teste l'égalité de deux valeurs en virgule flottante. Les cal
culs en virgule flottante pouvant introduire des arrondis, les valeurs flottante
s ou doubles peuvent être imprécises. Pour les valeurs qui doivent être précises
, telles que les valeurs monétaires, pensez à utiliser un type à précision fixe
tel qu'un <code>BigDecimal</code>. Pour les valeurs qui n'ont pas besoin d'être
précises, pensez à tester l'égalité sur une portée quelconque, par exemple : <co
de>if ( Math.abs(x - y) < .0000001 )</code>. Cf section 4.2.4 des spécificati
ons du langage Java.</p> | 3945 <p>Cette opération teste l'égalité de deux valeurs en virgule flottante. Les cal
culs en virgule flottante pouvant introduire des arrondis, les valeurs flottante
s ou doubles peuvent être imprécises. Pour les valeurs qui doivent être précises
, telles que les valeurs monétaires, pensez à utiliser un type à précision fixe
tel qu'un <code>BigDecimal</code>. Pour les valeurs qui n'ont pas besoin d'être
précises, pensez à tester l'égalité sur une portée quelconque, par exemple : <co
de>if ( Math.abs(x - y) < .0000001 )</code>. Cf section 4.2.4 des spécificati
ons du langage Java.</p> |
3845 | 3946 |
3846 | 3947 |
3847 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Non-Boolean argumen
t formatted using %b format specifier (VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEA
N)</a></h3> | 3948 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Non-Boolean argumen
t formatted using %b format specifier (VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEA
N)</a></h3> |
3848 | 3949 |
3849 | 3950 |
3850 <p> | 3951 <p> |
3851 An argument not of type Boolean is being formatted with a %b format specifier. T
his won't throw an | 3952 An argument not of type Boolean is being formatted with a %b format specifier. T
his won't throw an |
3852 exception; instead, it will print true for any nonnull value, and false for null
. | 3953 exception; instead, it will print true for any non-null value, and false for nul
l. |
3853 This feature of format strings is strange, and may not be what you intended. | 3954 This feature of format strings is strange, and may not be what you intended. |
3854 </p> | 3955 </p> |
3855 | 3956 |
3856 | 3957 |
3857 <h3><a name="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: Appel amb
igu d'une méthode hérité ou externe (IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUT
ER_METHOD)</a></h3> | 3958 <h3><a name="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: Appel amb
igu d'une méthode hérité ou externe (IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUT
ER_METHOD)</a></h3> |
3858 | 3959 |
3859 | 3960 |
3860 <p>Une classe interne invoque une méthode qui peut être résolue comme une méthod
e héritée ou comme une méthode définie dans une classe externe. La sémantique de
Java fait qu'elle sera résolue en invoquant la méthode héritée, mais ce n'est p
eut être pas votre intention. Si vous souhaitez réellement invoquer la méthode h
éritée, faite le en utilisant <code>super</code> (Ex : appelé <code>super.foo(17
)</code>) ce qui clarifiera votre code pour les autres lecteurs et pour FindBugs
.</p> | 3961 <p>Une classe interne invoque une méthode qui peut être résolue comme une méthod
e héritée ou comme une méthode définie dans une classe externe. La sémantique de
Java fait qu'elle sera résolue en invoquant la méthode héritée, mais ce n'est p
eut être pas votre intention. Si vous souhaitez réellement invoquer la méthode h
éritée, faite le en utilisant <code>super</code> (Ex : appelé <code>super.foo(17
)</code>) ce qui clarifiera votre code pour les autres lecteurs et pour FindBugs
.</p> |
3861 | 3962 |
3862 | 3963 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3988 <p> There is a branch of statement that, <em>if executed,</em> guarantees that | 4089 <p> There is a branch of statement that, <em>if executed,</em> guarantees that |
3989 a null value will be dereferenced, which | 4090 a null value will be dereferenced, which |
3990 would generate a <code>NullPointerException</code> when the code is executed. | 4091 would generate a <code>NullPointerException</code> when the code is executed. |
3991 Of course, the problem might be that the branch or statement is infeasible and t
hat | 4092 Of course, the problem might be that the branch or statement is infeasible and t
hat |
3992 the null pointer exception can't ever be executed; deciding that is beyond the a
bility of FindBugs. | 4093 the null pointer exception can't ever be executed; deciding that is beyond the a
bility of FindBugs. |
3993 Due to the fact that this value had been previously tested for nullness, | 4094 Due to the fact that this value had been previously tested for nullness, |
3994 this is a definite possibility. | 4095 this is a definite possibility. |
3995 </p> | 4096 </p> |
3996 | 4097 |
3997 | 4098 |
3998 <h3><a name="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP: Parameter
must be nonnull but is marked as nullable (NP_PARAMETER_MUST_BE_NONNULL_BUT_MARK
ED_AS_NULLABLE)</a></h3> | 4099 <h3><a name="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP: Parameter
must be non-null but is marked as nullable (NP_PARAMETER_MUST_BE_NONNULL_BUT_MAR
KED_AS_NULLABLE)</a></h3> |
3999 | 4100 |
4000 | 4101 |
4001 <p> This parameter is always used in a way that requires it to be nonnull, | 4102 <p> This parameter is always used in a way that requires it to be non-null, |
4002 but the parameter is explicitly annotated as being Nullable. Either the use | 4103 but the parameter is explicitly annotated as being Nullable. Either the use |
4003 of the parameter or the annotation is wrong. | 4104 of the parameter or the annotation is wrong. |
4004 </p> | 4105 </p> |
4005 | 4106 |
4006 | 4107 |
4007 <h3><a name="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: Read of unwritten publi
c or protected field (NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3> | 4108 <h3><a name="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: Read of unwritten publi
c or protected field (NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3> |
4008 | 4109 |
4009 | 4110 |
4010 <p> The program is dereferencing a public or protected | 4111 <p> The program is dereferencing a public or protected |
4011 field that does not seem to ever have a non-null value written to it. | 4112 field that does not seem to ever have a non-null value written to it. |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4127 </p> | 4228 </p> |
4128 <p>We are guessing that ignoring the return value might be a bad idea just from | 4229 <p>We are guessing that ignoring the return value might be a bad idea just from |
4129 a simple analysis of the body of the method. You can use a @CheckReturnValue ann
otation | 4230 a simple analysis of the body of the method. You can use a @CheckReturnValue ann
otation |
4130 to instruct FindBugs as to whether ignoring the return value of this method | 4231 to instruct FindBugs as to whether ignoring the return value of this method |
4131 is important or acceptable. | 4232 is important or acceptable. |
4132 </p> | 4233 </p> |
4133 <p>Please investigate this closely to decide whether it is OK to ignore the retu
rn value. | 4234 <p>Please investigate this closely to decide whether it is OK to ignore the retu
rn value. |
4134 </p> | 4235 </p> |
4135 | 4236 |
4136 | 4237 |
| 4238 <h3><a name="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV: Return value of method
without side effect is ignored (RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT)</a></h3> |
| 4239 |
| 4240 |
| 4241 <p>This code calls a method and ignores the return value. However our analysis s
hows that |
| 4242 the method (including its implementations in subclasses if any) does not produce
any effect |
| 4243 other than return value. Thus this call can be removed. |
| 4244 </p> |
| 4245 <p>We are trying to reduce the false positives as much as possible, but in some
cases this warning might be wrong. |
| 4246 Common false-positive cases include:</p> |
| 4247 <p>- The method is designed to be overridden and produce a side effect in other
projects which are out of the scope of the analysis.</p> |
| 4248 <p>- The method is called to trigger the class loading which may have a side eff
ect.</p> |
| 4249 <p>- The method is called just to get some exception.</p> |
| 4250 <p>If you feel that our assumption is incorrect, you can use a @CheckReturnValue
annotation |
| 4251 to instruct FindBugs that ignoring the return value of this method is acceptable
. |
| 4252 </p> |
| 4253 |
| 4254 |
4137 <h3><a name="SA_FIELD_DOUBLE_ASSIGNMENT">SA: Double assignment of field (SA_FIEL
D_DOUBLE_ASSIGNMENT)</a></h3> | 4255 <h3><a name="SA_FIELD_DOUBLE_ASSIGNMENT">SA: Double assignment of field (SA_FIEL
D_DOUBLE_ASSIGNMENT)</a></h3> |
4138 | 4256 |
4139 | 4257 |
4140 <p> This method contains a double assignment of a field; e.g. | 4258 <p> This method contains a double assignment of a field; e.g. |
4141 </p> | 4259 </p> |
4142 <pre> | 4260 <pre> |
4143 int x,y; | 4261 int x,y; |
4144 public void foo() { | 4262 public void foo() { |
4145 x = x = 17; | 4263 x = x = 17; |
4146 } | 4264 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4180 | 4298 |
4181 <p>Cette méthode contient un <code>switch</code> dont l'un des cas déborde sur l
e suivant. Normalement, vous devez terminer chaque cas avec une instruction <cod
e>break</code> ou <code>return</code>.</p> | 4299 <p>Cette méthode contient un <code>switch</code> dont l'un des cas déborde sur l
e suivant. Normalement, vous devez terminer chaque cas avec une instruction <cod
e>break</code> ou <code>return</code>.</p> |
4182 | 4300 |
4183 | 4301 |
4184 <h3><a name="SF_SWITCH_NO_DEFAULT">SF: Switch statement found where default case
is missing (SF_SWITCH_NO_DEFAULT)</a></h3> | 4302 <h3><a name="SF_SWITCH_NO_DEFAULT">SF: Switch statement found where default case
is missing (SF_SWITCH_NO_DEFAULT)</a></h3> |
4185 | 4303 |
4186 | 4304 |
4187 <p> This method contains a switch statement where default case is missing. | 4305 <p> This method contains a switch statement where default case is missing. |
4188 Usually you need to provide a default case.</p> | 4306 Usually you need to provide a default case.</p> |
4189 <p>Because the analysis only looks at the generated bytecode, this warning can
be incorrect triggered if | 4307 <p>Because the analysis only looks at the generated bytecode, this warning can
be incorrect triggered if |
4190 the default case is at the end of the switch statement and doesn't end with a br
eak statement. | 4308 the default case is at the end of the switch statement and the switch statement
doesn't contain break statements for other |
| 4309 cases. |
4191 | 4310 |
4192 | 4311 |
4193 <h3><a name="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: Ecriture d'un champ st
atique depuis la méthode d'une instance (ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
)</a></h3> | 4312 <h3><a name="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: Ecriture d'un champ st
atique depuis la méthode d'une instance (ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
)</a></h3> |
4194 | 4313 |
4195 | 4314 |
4196 <p>La méthode de l'instance écrit la valeur d'un champ statique. Cela peut être
difficile à gérer si plusieurs instances ont la possibilité d'écrire cette valeu
r et cela ressemble surtout à une mauvaise pratique.</p> | 4315 <p>La méthode de l'instance écrit la valeur d'un champ statique. Cela peut être
difficile à gérer si plusieurs instances ont la possibilité d'écrire cette valeu
r et cela ressemble surtout à une mauvaise pratique.</p> |
4197 | 4316 |
4198 | 4317 |
4199 <h3><a name="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: Private readResolve meth
od not inherited by subclasses (SE_PRIVATE_READ_RESOLVE_NOT_INHERITED)</a></h3> | 4318 <h3><a name="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: Private readResolve meth
od not inherited by subclasses (SE_PRIVATE_READ_RESOLVE_NOT_INHERITED)</a></h3> |
4200 | 4319 |
(...skipping 26 matching lines...) Expand all Loading... |
4227 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: Value requ
ired to not have type qualifier, but marked as unknown (TQ_EXPLICIT_UNKNOWN_SOUR
CE_VALUE_REACHES_NEVER_SINK)</a></h3> | 4346 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: Value requ
ired to not have type qualifier, but marked as unknown (TQ_EXPLICIT_UNKNOWN_SOUR
CE_VALUE_REACHES_NEVER_SINK)</a></h3> |
4228 | 4347 |
4229 | 4348 |
4230 <p> | 4349 <p> |
4231 A value is used in a way that requires it to be never be a value denoted b
y a type qualifier, but | 4350 A value is used in a way that requires it to be never be a value denoted b
y a type qualifier, but |
4232 there is an explicit annotation stating that it is not known where the value
is prohibited from having that type qualifier. | 4351 there is an explicit annotation stating that it is not known where the value
is prohibited from having that type qualifier. |
4233 Either the usage or the annotation is incorrect. | 4352 Either the usage or the annotation is incorrect. |
4234 </p> | 4353 </p> |
4235 | 4354 |
4236 | 4355 |
| 4356 <h3><a name="UC_USELESS_CONDITION">UC: Condition has no effect (UC_USELESS_CONDI
TION)</a></h3> |
| 4357 |
| 4358 |
| 4359 <p>This condition always produces the same result as the value of the involved v
ariable was narrowed before. |
| 4360 Probably something else was meant or condition can be removed.</p> |
| 4361 |
| 4362 |
| 4363 <h3><a name="UC_USELESS_CONDITION_TYPE">UC: Condition has no effect due to the v
ariable type (UC_USELESS_CONDITION_TYPE)</a></h3> |
| 4364 |
| 4365 |
| 4366 <p>This condition always produces the same result due to the type range of the i
nvolved variable. |
| 4367 Probably something else was meant or condition can be removed.</p> |
| 4368 |
| 4369 |
| 4370 <h3><a name="UC_USELESS_OBJECT">UC: Useless object created (UC_USELESS_OBJECT)</
a></h3> |
| 4371 |
| 4372 |
| 4373 <p>Our analysis shows that this object is useless. |
| 4374 It's created and modified, but its value never go outside of the method or produ
ce any side-effect. |
| 4375 Either there is a mistake and object was intended to be used or it can be remove
d.</p> |
| 4376 <p>This analysis rarely produces false-positives. Common false-positive cases in
clude:</p> |
| 4377 <p>- This object used to implicitly throw some obscure exception.</p> |
| 4378 <p>- This object used as a stub to generalize the code.</p> |
| 4379 <p>- This object used to hold strong references to weak/soft-referenced objects.
</p> |
| 4380 |
| 4381 |
| 4382 <h3><a name="UC_USELESS_OBJECT_STACK">UC: Useless object created on stack (UC_US
ELESS_OBJECT_STACK)</a></h3> |
| 4383 |
| 4384 |
| 4385 <p>This object is created just to perform some modifications which don't have an
y side-effect. |
| 4386 Probably something else was meant or the object can be removed.</p> |
| 4387 |
| 4388 |
| 4389 <h3><a name="UC_USELESS_VOID_METHOD">UC: Useless non-empty void method (UC_USELE
SS_VOID_METHOD)</a></h3> |
| 4390 |
| 4391 |
| 4392 <p>Our analysis shows that this non-empty void method does not actually perform
any useful work. |
| 4393 Please check it: probably there's a mistake in its code or its body can be fully
removed. |
| 4394 </p> |
| 4395 <p>We are trying to reduce the false positives as much as possible, but in some
cases this warning might be wrong. |
| 4396 Common false-positive cases include:</p> |
| 4397 <p>- The method is intended to trigger loading of some class which may have a si
de effect.</p> |
| 4398 <p>- The method is intended to implicitly throw some obscure exception.</p> |
| 4399 |
| 4400 |
4237 <h3><a name="UCF_USELESS_CONTROL_FLOW">UCF: Instruction de contrôle du flux inut
ile (UCF_USELESS_CONTROL_FLOW)</a></h3> | 4401 <h3><a name="UCF_USELESS_CONTROL_FLOW">UCF: Instruction de contrôle du flux inut
ile (UCF_USELESS_CONTROL_FLOW)</a></h3> |
4238 | 4402 |
4239 | 4403 |
4240 <p>Cette méthode contient une instruction de contrôle du flux inutile. Ceci est
souvent provoqué par inadvertance, en utilisant un paragraphe vide comme corps d
'une condition. Exemple :</p> | 4404 <p>Cette méthode contient une instruction de contrôle du flux inutile. Ceci est
souvent provoqué par inadvertance, en utilisant un paragraphe vide comme corps d
'une condition. Exemple :</p> |
4241 <pre> | 4405 <pre> |
4242 if (argv.length == 1); | 4406 if (argv.length == 1); |
4243 System.out.println("Hello, " + argv[0]); | 4407 System.out.println("Hello, " + argv[0]); |
4244 </pre> | 4408 </pre> |
4245 | 4409 |
4246 | 4410 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4306 | 4470 |
4307 | 4471 |
4308 <hr> <p> | 4472 <hr> <p> |
4309 <script language="JavaScript" type="text/javascript"> | 4473 <script language="JavaScript" type="text/javascript"> |
4310 <!---//hide script from old browsers | 4474 <!---//hide script from old browsers |
4311 document.write( "Last updated "+ document.lastModified + "." ); | 4475 document.write( "Last updated "+ document.lastModified + "." ); |
4312 //end hiding contents ---> | 4476 //end hiding contents ---> |
4313 </script> | 4477 </script> |
4314 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu
gs@cs.umd.edu</a> | 4478 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu
gs@cs.umd.edu</a> |
4315 <p> | 4479 <p> |
4316 <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> | 4480 <a href="http://sourceforge.net/projects/findbugs/"><img src="http://sourceforge
.net/sflogo.php?group_id=96405&type=5" width="210" height="62" border="0" al
t="FindBugs on SourceForge.net" /></a> |
4317 </td></tr></table> | 4481 </td></tr></table> |
4318 </body></html> | 4482 </body></html> |
OLD | NEW |