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

Side by Side Diff: doc/bugDescriptions_ja.html

Issue 1232833004: Update findbugs from 3.0.0 to 3.0.1. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/findbugs.git@master
Patch Set: rebase again Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « doc/bugDescriptions_fr.html ('k') | doc/contributing.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd"> 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd">
2 <html><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
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>&nbsp;</td></tr> 36 <tr><td>&nbsp;</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>&nbsp;</td></tr> 40 <tr><td>&nbsp;</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">&nbsp;<a class="sidebar" href="http://sourceforge.net/tr acker/?group_id=96405">Open bugs</a></font></td></tr> 43 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/p/ findbugs/bugs/">Open bugs</a></font></td></tr>
43 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="reportingBugs.html">Repor ting bugs</a></font></td></tr> 44 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="reportingBugs.html">Repor ting bugs</a></font></td></tr>
44 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="contributing.html">Contri buting</a></font></td></tr> 45 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="contributing.html">Contri buting</a></font></td></tr>
45 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="team.html">Dev team</a></ font></td></tr> 46 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="team.html">Dev team</a></ font></td></tr>
46 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="api/index.html">API</a> < a class="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></ tr> 47 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="api/index.html">API</a> < a class="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></ tr>
47 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="Changes.html">Change log< /a></font></td></tr> 48 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="Changes.html">Change log< /a></font></td></tr>
48 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/pr ojects/findbugs">SF project page</a></font></td></tr> 49 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/pr ojects/findbugs">SF project page</a></font></td></tr>
49 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/browse/">Browse source</a></font></td></tr> 50 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/browse/">Browse source</a></font></td></tr>
50 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/list">Latest code changes</a></font></td></tr> 51 <tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/ findbugs/source/list">Latest code changes</a></font></td></tr>
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 メソッドは引数の型を仮定するべきではない</a></td><td>Bad practice</td></tr> 61 <tr bgcolor="#eeeeee"><td><a href="#BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS ">BC: equals メソッドは引数の型を仮定するべきではない</a></td><td>Bad practice</td></tr>
61 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK">BIT: ビット演算の符号をチェックする</a></ td><td>Bad practice</td></tr> 62 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK">BIT: ビット演算の符号をチェックする</a></ td><td>Bad practice</td></tr>
62 <tr bgcolor="#eeeeee"><td><a href="#CN_IDIOM">CN: Cloneable を実装したクラスが clone メソッド を定義していないか、使用していない</a></td><td>Bad practice</td></tr> 63 <tr bgcolor="#eeeeee"><td><a href="#CN_IDIOM">CN: Cloneable を実装したクラスが clone メソッド を定義していないか、使用していない</a></td><td>Bad practice</td></tr>
63 <tr bgcolor="#ffffff"><td><a href="#CN_IDIOM_NO_SUPER_CALL">CN: clone メソッドが supe r.clone() を呼び出していない</a></td><td>Bad practice</td></tr> 64 <tr bgcolor="#ffffff"><td><a href="#CN_IDIOM_NO_SUPER_CALL">CN: clone メソッドが supe r.clone() を呼び出していない</a></td><td>Bad practice</td></tr>
64 <tr bgcolor="#eeeeee"><td><a href="#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: C loneable を実装していないクラスが clone メソッドを定義している</a></td><td>Bad practice</td></tr> 65 <tr bgcolor="#eeeeee"><td><a href="#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: C loneable を実装していないクラスが clone メソッドを定義している</a></td><td>Bad practice</td></tr>
65 <tr bgcolor="#ffffff"><td><a href="#CNT_ROUGH_CONSTANT_VALUE">CNT: 既知の定数の雑な値を見つけ る</a></td><td>Bad practice</td></tr> 66 <tr bgcolor="#ffffff"><td><a href="#CNT_ROUGH_CONSTANT_VALUE">CNT: 既知の定数の雑な値を見つけ る</a></td><td>Bad practice</td></tr>
66 <tr bgcolor="#eeeeee"><td><a href="#CO_ABSTRACT_SELF">Co: 抽象クラスは共変な compareTo メソ ッドを定義している</a></td><td>Bad practice</td></tr> 67 <tr bgcolor="#eeeeee"><td><a href="#CO_ABSTRACT_SELF">Co: 抽象クラスは共変な compareTo メソ ッドを定義している</a></td><td>Bad practice</td></tr>
68 <tr bgcolor="#ffffff"><td><a href="#CO_COMPARETO_INCORRECT_FLOATING">Co: compare To()/compare() は間違って float または double 値を処理する</a></td><td>Bad practice</td></tr>
69 <tr bgcolor="#eeeeee"><td><a href="#CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareT o()/compare() は Integer.MIN_VALUE を返す</a></td><td>Bad practice</td></tr>
67 <tr bgcolor="#ffffff"><td><a href="#CO_SELF_NO_OBJECT">Co: 共変な compareTo メソッドの定義 </a></td><td>Bad practice</td></tr> 70 <tr bgcolor="#ffffff"><td><a href="#CO_SELF_NO_OBJECT">Co: 共変な compareTo メソッドの定義 </a></td><td>Bad practice</td></tr>
68 <tr bgcolor="#eeeeee"><td><a href="#DE_MIGHT_DROP">DE: 例外を捨てているかもしれないメソッド</a></t d><td>Bad practice</td></tr> 71 <tr bgcolor="#eeeeee"><td><a href="#DE_MIGHT_DROP">DE: 例外を捨てているかもしれないメソッド</a></t d><td>Bad practice</td></tr>
69 <tr bgcolor="#ffffff"><td><a href="#DE_MIGHT_IGNORE">DE: 例外を無視しているかもしれないメソッド</a> </td><td>Bad practice</td></tr> 72 <tr bgcolor="#ffffff"><td><a href="#DE_MIGHT_IGNORE">DE: 例外を無視しているかもしれないメソッド</a> </td><td>Bad practice</td></tr>
70 <tr bgcolor="#eeeeee"><td><a href="#DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: エントリセットの要素を加えることは、Entry オブジェクトの再利用のために失敗するかもしれない</a></td><td>Bad practice</td>< /tr> 73 <tr bgcolor="#eeeeee"><td><a href="#DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: エントリセットの要素を加えることは、Entry オブジェクトの再利用のために失敗するかもしれない</a></td><td>Bad practice</td>< /tr>
71 <tr bgcolor="#ffffff"><td><a href="#DMI_RANDOM_USED_ONLY_ONCE">DMI: Random オブジェク トが作成され1度しか使われない</a></td><td>Bad practice</td></tr> 74 <tr bgcolor="#ffffff"><td><a href="#DMI_RANDOM_USED_ONLY_ONCE">DMI: Random オブジェク トが作成され1度しか使われない</a></td><td>Bad practice</td></tr>
72 <tr bgcolor="#eeeeee"><td><a href="#DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI : コレクションを消去するために removeAll メソッドを使用しない</a></td><td>Bad practice</td></tr> 75 <tr bgcolor="#eeeeee"><td><a href="#DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI : コレクションを消去するために removeAll メソッドを使用しない</a></td><td>Bad practice</td></tr>
73 <tr bgcolor="#ffffff"><td><a href="#DM_EXIT">Dm: System.exit(...) を呼び出しているメソッド</ a></td><td>Bad practice</td></tr> 76 <tr bgcolor="#ffffff"><td><a href="#DM_EXIT">Dm: System.exit(...) を呼び出しているメソッド</ a></td><td>Bad practice</td></tr>
74 <tr bgcolor="#eeeeee"><td><a href="#DM_RUN_FINALIZERS_ON_EXIT">Dm: 危険なメソッド runFi nalizersOnExit を呼び出しているメソッド</a></td><td>Bad practice</td></tr> 77 <tr bgcolor="#eeeeee"><td><a href="#DM_RUN_FINALIZERS_ON_EXIT">Dm: 危険なメソッド runFi nalizersOnExit を呼び出しているメソッド</a></td><td>Bad practice</td></tr>
75 <tr bgcolor="#ffffff"><td><a href="#ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: S tring パラメータを == や != を使用して比較している</a></td><td>Bad practice</td></tr> 78 <tr bgcolor="#ffffff"><td><a href="#ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: S tring パラメータを == や != を使用して比較している</a></td><td>Bad practice</td></tr>
76 <tr bgcolor="#eeeeee"><td><a href="#ES_COMPARING_STRINGS_WITH_EQ">ES: String オブジ ェクトを == や != を使用して比較している</a></td><td>Bad practice</td></tr> 79 <tr bgcolor="#eeeeee"><td><a href="#ES_COMPARING_STRINGS_WITH_EQ">ES: String オブジ ェクトを == や != を使用して比較している</a></td><td>Bad practice</td></tr>
(...skipping 15 matching lines...) Expand all
92 <tr bgcolor="#eeeeee"><td><a href="#HE_EQUALS_USE_HASHCODE">HE: equals メソッドを定義して Object.hashCode() を使用しているクラス</a></td><td>Bad practice</td></tr> 95 <tr bgcolor="#eeeeee"><td><a href="#HE_EQUALS_USE_HASHCODE">HE: equals メソッドを定義して Object.hashCode() を使用しているクラス</a></td><td>Bad practice</td></tr>
93 <tr bgcolor="#ffffff"><td><a href="#HE_HASHCODE_NO_EQUALS">HE: hashCode メソッドを定義し ていますが equals メソッドは定義していないクラス</a></td><td>Bad practice</td></tr> 96 <tr bgcolor="#ffffff"><td><a href="#HE_HASHCODE_NO_EQUALS">HE: hashCode メソッドを定義し ていますが equals メソッドは定義していないクラス</a></td><td>Bad practice</td></tr>
94 <tr bgcolor="#eeeeee"><td><a href="#HE_HASHCODE_USE_OBJECT_EQUALS">HE: hashCode メソッドを定義して Object.equals() を使用しているクラス</a></td><td>Bad practice</td></tr> 97 <tr bgcolor="#eeeeee"><td><a href="#HE_HASHCODE_USE_OBJECT_EQUALS">HE: hashCode メソッドを定義して Object.equals() を使用しているクラス</a></td><td>Bad practice</td></tr>
95 <tr bgcolor="#ffffff"><td><a href="#HE_INHERITS_EQUALS_USE_HASHCODE">HE: equals メソッドを継承して Object.hashCode() を使用しているクラス</a></td><td>Bad practice</td></tr> 98 <tr bgcolor="#ffffff"><td><a href="#HE_INHERITS_EQUALS_USE_HASHCODE">HE: equals メソッドを継承して Object.hashCode() を使用しているクラス</a></td><td>Bad practice</td></tr>
96 <tr bgcolor="#eeeeee"><td><a href="#IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZ ATION">IC: スーパークラスは初期化中にサブクラスを使用している</a></td><td>Bad practice</td></tr> 99 <tr bgcolor="#eeeeee"><td><a href="#IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZ ATION">IC: スーパークラスは初期化中にサブクラスを使用している</a></td><td>Bad practice</td></tr>
97 <tr bgcolor="#ffffff"><td><a href="#IMSE_DONT_CATCH_IMSE">IMSE: 疑わしい IllegalMoni torStateException のキャッチ</a></td><td>Bad practice</td></tr> 100 <tr bgcolor="#ffffff"><td><a href="#IMSE_DONT_CATCH_IMSE">IMSE: 疑わしい IllegalMoni torStateException のキャッチ</a></td><td>Bad practice</td></tr>
98 <tr bgcolor="#eeeeee"><td><a href="#ISC_INSTANTIATE_STATIC_CLASS">ISC: static メソ ッドだけを提供するクラスの不必要なインスタンス化</a></td><td>Bad practice</td></tr> 101 <tr bgcolor="#eeeeee"><td><a href="#ISC_INSTANTIATE_STATIC_CLASS">ISC: static メソ ッドだけを提供するクラスの不必要なインスタンス化</a></td><td>Bad practice</td></tr>
99 <tr bgcolor="#ffffff"><td><a href="#IT_NO_SUCH_ELEMENT">It: Iterator.next() が No SuchElementException をスローできない</a></td><td>Bad practice</td></tr> 102 <tr bgcolor="#ffffff"><td><a href="#IT_NO_SUCH_ELEMENT">It: Iterator.next() が No SuchElementException をスローできない</a></td><td>Bad practice</td></tr>
100 <tr bgcolor="#eeeeee"><td><a href="#J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_S ESSION">J2EE: HttpSession への非直列化可能オブジェクトの格納</a></td><td>Bad practice</td></tr> 103 <tr bgcolor="#eeeeee"><td><a href="#J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_S ESSION">J2EE: HttpSession への非直列化可能オブジェクトの格納</a></td><td>Bad practice</td></tr>
101 <tr bgcolor="#ffffff"><td><a href="#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JC IP: 不変クラスのフィールドは final にすべき</a></td><td>Bad practice</td></tr> 104 <tr bgcolor="#ffffff"><td><a href="#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JC IP: 不変クラスのフィールドは final にすべき</a></td><td>Bad practice</td></tr>
105 <tr bgcolor="#eeeeee"><td><a href="#ME_ENUM_FIELD_SETTER">ME: public 列挙型メソッドが無条件 にフィールドを設定するPublic enum method unconditionally sets its field</a></td><td>Bad pra ctice</td></tr>
106 <tr bgcolor="#ffffff"><td><a href="#ME_MUTABLE_ENUM_FIELD">ME: 列挙型フィールドは public で可変である</a></td><td>Bad practice</td></tr>
102 <tr bgcolor="#eeeeee"><td><a href="#NP_BOOLEAN_RETURN_NULL">NP: 戻り型が Boolean のメソ ッドが明示的に null を返している</a></td><td>Bad practice</td></tr> 107 <tr bgcolor="#eeeeee"><td><a href="#NP_BOOLEAN_RETURN_NULL">NP: 戻り型が Boolean のメソ ッドが明示的に null を返している</a></td><td>Bad practice</td></tr>
103 <tr bgcolor="#ffffff"><td><a href="#NP_CLONE_COULD_RETURN_NULL">NP: null を返すかもしれ ない clone メソッド</a></td><td>Bad practice</td></tr> 108 <tr bgcolor="#ffffff"><td><a href="#NP_CLONE_COULD_RETURN_NULL">NP: null を返すかもしれ ない clone メソッド</a></td><td>Bad practice</td></tr>
104 <tr bgcolor="#eeeeee"><td><a href="#NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: e quals メソッドは null の引数をチェックしていない</a></td><td>Bad practice</td></tr> 109 <tr bgcolor="#eeeeee"><td><a href="#NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: e quals メソッドは null の引数をチェックしていない</a></td><td>Bad practice</td></tr>
105 <tr bgcolor="#ffffff"><td><a href="#NP_TOSTRING_COULD_RETURN_NULL">NP: null を返すか もしれない toString メソッド</a></td><td>Bad practice</td></tr> 110 <tr bgcolor="#ffffff"><td><a href="#NP_TOSTRING_COULD_RETURN_NULL">NP: null を返すか もしれない toString メソッド</a></td><td>Bad practice</td></tr>
106 <tr bgcolor="#eeeeee"><td><a href="#NM_CLASS_NAMING_CONVENTION">Nm: クラス名は大文字から始め るべき</a></td><td>Bad practice</td></tr> 111 <tr bgcolor="#eeeeee"><td><a href="#NM_CLASS_NAMING_CONVENTION">Nm: クラス名は大文字から始め るべき</a></td><td>Bad practice</td></tr>
107 <tr bgcolor="#ffffff"><td><a href="#NM_CLASS_NOT_EXCEPTION">Nm: 例外クラスのように命名されている が、クラスは Exception から派生されていない</a></td><td>Bad practice</td></tr> 112 <tr bgcolor="#ffffff"><td><a href="#NM_CLASS_NOT_EXCEPTION">Nm: 例外クラスのように命名されている が、クラスは Exception から派生されていない</a></td><td>Bad practice</td></tr>
108 <tr bgcolor="#eeeeee"><td><a href="#NM_CONFUSING">Nm: 紛らわしい名前のメソッド</a></td><td>B ad practice</td></tr> 113 <tr bgcolor="#eeeeee"><td><a href="#NM_CONFUSING">Nm: 紛らわしい名前のメソッド</a></td><td>B ad practice</td></tr>
109 <tr bgcolor="#ffffff"><td><a href="#NM_FIELD_NAMING_CONVENTION">Nm: フィールド名は小文字から 始めるべき</a></td><td>Bad practice</td></tr> 114 <tr bgcolor="#ffffff"><td><a href="#NM_FIELD_NAMING_CONVENTION">Nm: フィールド名は小文字から 始めるべき</a></td><td>Bad practice</td></tr>
110 <tr bgcolor="#eeeeee"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Ja va の後のバージョンのキーワードである識別子を使用している</a></td><td>Bad practice</td></tr> 115 <tr bgcolor="#eeeeee"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Ja va の後のバージョンのキーワードである識別子を使用している</a></td><td>Bad practice</td></tr>
111 <tr bgcolor="#ffffff"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER" >Nm: Java の後のバージョンのキーワードである識別子を使用している</a></td><td>Bad practice</td></tr> 116 <tr bgcolor="#ffffff"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER" >Nm: Java の後のバージョンのキーワードである識別子を使用している</a></td><td>Bad practice</td></tr>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_DOWNCAST">BC: 不可能なダウンキャスト</a>< /td><td>Correctness</td></tr> 150 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_DOWNCAST">BC: 不可能なダウンキャスト</a>< /td><td>Correctness</td></tr>
146 <tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArr ay メソッドの結果の不可能なダウンキャスト</a></td><td>Correctness</td></tr> 151 <tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArr ay メソッドの結果の不可能なダウンキャスト</a></td><td>Correctness</td></tr>
147 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_INSTANCEOF">BC: 常に false を返す i nstanceof</a></td><td>Correctness</td></tr> 152 <tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_INSTANCEOF">BC: 常に false を返す i nstanceof</a></td><td>Correctness</td></tr>
148 <tr bgcolor="#eeeeee"><td><a href="#BIT_ADD_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット加算< /a></td><td>Correctness</td></tr> 153 <tr bgcolor="#eeeeee"><td><a href="#BIT_ADD_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット加算< /a></td><td>Correctness</td></tr>
149 <tr bgcolor="#ffffff"><td><a href="#BIT_AND">BIT: 互換性のないビットマスク</a></td><td>Corre ctness</td></tr> 154 <tr bgcolor="#ffffff"><td><a href="#BIT_AND">BIT: 互換性のないビットマスク</a></td><td>Corre ctness</td></tr>
150 <tr bgcolor="#eeeeee"><td><a href="#BIT_AND_ZZ">BIT: ((...) & 0) == 0 なのか確かめている< /a></td><td>Correctness</td></tr> 155 <tr bgcolor="#eeeeee"><td><a href="#BIT_AND_ZZ">BIT: ((...) & 0) == 0 なのか確かめている< /a></td><td>Correctness</td></tr>
151 <tr bgcolor="#ffffff"><td><a href="#BIT_IOR">BIT: 互換性のないビットマスク</a></td><td>Corre ctness</td></tr> 156 <tr bgcolor="#ffffff"><td><a href="#BIT_IOR">BIT: 互換性のないビットマスク</a></td><td>Corre ctness</td></tr>
152 <tr bgcolor="#eeeeee"><td><a href="#BIT_IOR_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット論理和 </a></td><td>Correctness</td></tr> 157 <tr bgcolor="#eeeeee"><td><a href="#BIT_IOR_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット論理和 </a></td><td>Correctness</td></tr>
153 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK_HIGH_BIT">BIT: ビット演算の符号をチェッ クする</a></td><td>Correctness</td></tr> 158 <tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK_HIGH_BIT">BIT: ビット演算の符号をチェッ クする</a></td><td>Correctness</td></tr>
154 <tr bgcolor="#eeeeee"><td><a href="#BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: スーパークラスの Adapter で実装されるメソッドを誤ってオーバーライドしているクラス</a></td><td>Correctness</td></tr> 159 <tr bgcolor="#eeeeee"><td><a href="#BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: スーパークラスの Adapter で実装されるメソッドを誤ってオーバーライドしているクラス</a></td><td>Correctness</td></tr>
155 <tr bgcolor="#ffffff"><td><a href="#ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32ビット int の- 31から31の範囲を超えた量によるシフト</a></td><td>Correctness</td></tr> 160 <tr bgcolor="#ffffff"><td><a href="#BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: シフト演算の正しく ない構文解析の可能性がある</a></td><td>Correctness</td></tr>
156 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR" >Bx: プリミティブ値が3項演算子のためにアンボクシングされて、型変換される</a></td><td>Correctness</td></tr> 161 <tr bgcolor="#eeeeee"><td><a href="#ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32ビット int の- 31から31の範囲を超えた量によるシフト</a></td><td>Correctness</td></tr>
157 <tr bgcolor="#ffffff"><td><a href="#CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareT o()/compare() は Integer.MIN_VALUE を返す</a></td><td>Correctness</td></tr> 162 <tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: ret urn 文に無駄なインクリメントがある</a></td><td>Correctness</td></tr>
158 <tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: ret urn 文に役に立たないインクリメントがある</a></td><td>Correctness</td></tr> 163 <tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: クラスリテラ ルの無効な代入</a></td><td>Correctness</td></tr>
159 <tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: クラスリテラ ルの無効な代入</a></td><td>Correctness</td></tr> 164 <tr bgcolor="#ffffff"><td><a href="#DLS_OVERWRITTEN_INCREMENT">DLS: 上書きされたインクリメン ト</a></td><td>Correctness</td></tr>
160 <tr bgcolor="#eeeeee"><td><a href="#DLS_OVERWRITTEN_INCREMENT">DLS: 上書きされたインクリメン ト</a></td><td>Correctness</td></tr> 165 <tr bgcolor="#eeeeee"><td><a href="#DMI_ARGUMENTS_WRONG_ORDER">DMI: 逆にされた引数</a>< /td><td>Correctness</td></tr>
161 <tr bgcolor="#ffffff"><td><a href="#DMI_ARGUMENTS_WRONG_ORDER">DMI: 逆にされた引数</a>< /td><td>Correctness</td></tr> 166 <tr bgcolor="#ffffff"><td><a href="#DMI_BAD_MONTH">DMI: 月のための間違った定数値</a></td><td >Correctness</td></tr>
162 <tr bgcolor="#eeeeee"><td><a href="#DMI_BAD_MONTH">DMI: 月のための間違った定数値</a></td><td >Correctness</td></tr> 167 <tr bgcolor="#eeeeee"><td><a href="#DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: 正確に表されない double から構築された BigDecimal</a></td><td>Correctness</td></tr>
163 <tr bgcolor="#ffffff"><td><a href="#DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: 正確に表されない double から構築された BigDecimal</a></td><td>Correctness</td></tr> 168 <tr bgcolor="#ffffff"><td><a href="#DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext メソッドで next メソッドを呼び出している</a></td><td>Correctness</td></tr>
164 <tr bgcolor="#eeeeee"><td><a href="#DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext メソッドで next メソッドを呼び出している</a></td><td>Correctness</td></tr> 169 <tr bgcolor="#eeeeee"><td><a href="#DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVE S">DMI: コレクションは自分自身を含めるべきではない</a></td><td>Correctness</td></tr>
165 <tr bgcolor="#ffffff"><td><a href="#DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVE S">DMI: コレクションは自分自身を含めるべきではない</a></td><td>Correctness</td></tr> 170 <tr bgcolor="#ffffff"><td><a href="#DMI_DOH">DMI: D'oh! 無意味なメソッド呼び出し</a></td><td >Correctness</td></tr>
166 <tr bgcolor="#eeeeee"><td><a href="#DMI_DOH">DMI: D'oh! 無意味なメソッド呼び出し</a></td><td >Correctness</td></tr> 171 <tr bgcolor="#eeeeee"><td><a href="#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: 配列で has hCode メソッドを呼び出している</a></td><td>Correctness</td></tr>
167 <tr bgcolor="#ffffff"><td><a href="#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: 配列で has hCode メソッドを呼び出している</a></td><td>Correctness</td></tr> 172 <tr bgcolor="#ffffff"><td><a href="#DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI: int に対して Double.longBitsToDouble() を呼び出している</a></td><td>Correctness</td></tr>
168 <tr bgcolor="#eeeeee"><td><a href="#DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI: int に対して Double.longBitsToDouble() を呼び出している</a></td><td>Correctness</td></tr> 173 <tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: コレクショ ンへの無意味な呼び出し</a></td><td>Correctness</td></tr>
169 <tr bgcolor="#ffffff"><td><a href="#DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: コレクショ ンへの無意味な呼び出し</a></td><td>Correctness</td></tr> 174 <tr bgcolor="#ffffff"><td><a href="#DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION" >Dm: ランタイムリテンションなしで、アノテーションの存在を調べるためにリフレクションを使用することはできない</a></td><td>Correctness </td></tr>
170 <tr bgcolor="#eeeeee"><td><a href="#DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION" >Dm: ランタイムリテンションなしで、アノテーションの存在を調べるためにリフレクションを使用することはできない</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: ScheduledThreadPoolExecutor の最大プールサイズを変えようと する無駄な試み</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: ScheduledThreadPoolExecutor の最大プールサイズを変えようと する無駄な試み</a></td><td>Correctness</td></tr> 176 <tr bgcolor="#ffffff"><td><a href="#DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO _CORE_THREADS">Dm: コアプールサイズが0の ScheduledThreadPoolExecutor の作成</a></td><td>Corre ctness</td></tr>
172 <tr bgcolor="#eeeeee"><td><a href="#DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO _CORE_THREADS">Dm: コアプールサイズが0の ScheduledThreadPoolExecutor の作成</a></td><td>Corre ctness</td></tr> 177 <tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Eas yMock メソッドへの役に立たない/無意味な呼び出し</a></td><td>Correctness</td></tr>
173 <tr bgcolor="#ffffff"><td><a href="#DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: Eas yMock メソッドへの役に立たない/無意味な呼び出し</a></td><td>Correctness</td></tr> 178 <tr bgcolor="#ffffff"><td><a href="#DM_INVALID_MIN_MAX">Dm: Math.max と Math.min の間違った組み合わせ</a></td><td>Correctness</td></tr>
174 <tr bgcolor="#eeeeee"><td><a href="#EC_ARRAY_AND_NONARRAY">EC: equals メソッドを使用して配 列と非配列を比較している</a></td><td>Correctness</td></tr> 179 <tr bgcolor="#eeeeee"><td><a href="#EC_ARRAY_AND_NONARRAY">EC: equals メソッドを使用して配 列と非配列を比較している</a></td><td>Correctness</td></tr>
175 <tr bgcolor="#ffffff"><td><a href="#EC_BAD_ARRAY_COMPARE">EC: 配列の equals メソッド呼び出 しは == と等価である</a></td><td>Correctness</td></tr> 180 <tr bgcolor="#ffffff"><td><a href="#EC_BAD_ARRAY_COMPARE">EC: 配列の equals メソッド呼び出 しは == と等価である</a></td><td>Correctness</td></tr>
176 <tr bgcolor="#eeeeee"><td><a href="#EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(.. .) メソッドを使用して互換性のない配列を比較している</a></td><td>Correctness</td></tr> 181 <tr bgcolor="#eeeeee"><td><a href="#EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(.. .) メソッドを使用して互換性のない配列を比較している</a></td><td>Correctness</td></tr>
177 <tr bgcolor="#ffffff"><td><a href="#EC_NULL_ARG">EC: equals(null) の呼び出し</a></td> <td>Correctness</td></tr> 182 <tr bgcolor="#ffffff"><td><a href="#EC_NULL_ARG">EC: equals(null) の呼び出し</a></td> <td>Correctness</td></tr>
178 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals メソッドを呼び出して無関係のクラスとインタフェースを比較している</a></td><td>Correctness</td></tr> 183 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals メソッドを呼び出して無関係のクラスとインタフェースを比較している</a></td><td>Correctness</td></tr>
179 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_INTERFACES">EC: equals メソッドを呼び出 して異なる型のインタフェースを比較している</a></td><td>Correctness</td></tr> 184 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_INTERFACES">EC: equals メソッドを呼び出 して異なる型のインタフェースを比較している</a></td><td>Correctness</td></tr>
180 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_TYPES">EC: equals メソッドを呼び出して異なる 型を比較している</a></td><td>Correctness</td></tr> 185 <tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_TYPES">EC: equals メソッドを呼び出して異なる 型を比較している</a></td><td>Correctness</td></tr>
181 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">E C: 参照等価性を使用して異なる型を比較している</a></td><td>Correctness</td></tr> 186 <tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">E C: 参照等価性を使用して異なる型を比較している</a></td><td>Correctness</td></tr>
182 <tr bgcolor="#eeeeee"><td><a href="#EQ_ALWAYS_FALSE">Eq: equals メソッドは常に false を戻 す</a></td><td>Correctness</td></tr> 187 <tr bgcolor="#eeeeee"><td><a href="#EQ_ALWAYS_FALSE">Eq: equals メソッドは常に false を戻 す</a></td><td>Correctness</td></tr>
183 <tr bgcolor="#ffffff"><td><a href="#EQ_ALWAYS_TRUE">Eq: equals メソッドは常に true を返す< /a></td><td>Correctness</td></tr> 188 <tr bgcolor="#ffffff"><td><a href="#EQ_ALWAYS_TRUE">Eq: equals メソッドは常に true を返す< /a></td><td>Correctness</td></tr>
(...skipping 21 matching lines...) Expand all
205 <tr bgcolor="#ffffff"><td><a href="#IJU_BAD_SUITE_METHOD">IJU: TestCase は suite メソッドの間違った宣言をしている</a></td><td>Correctness</td></tr> 210 <tr bgcolor="#ffffff"><td><a href="#IJU_BAD_SUITE_METHOD">IJU: TestCase は suite メソッドの間違った宣言をしている</a></td><td>Correctness</td></tr>
206 <tr bgcolor="#eeeeee"><td><a href="#IJU_NO_TESTS">IJU: TestCase はテストがない </a></td ><td>Correctness</td></tr> 211 <tr bgcolor="#eeeeee"><td><a href="#IJU_NO_TESTS">IJU: TestCase はテストがない </a></td ><td>Correctness</td></tr>
207 <tr bgcolor="#ffffff"><td><a href="#IJU_SETUP_NO_SUPER">IJU: TestCase は super.se tup() を呼び出さない setUp メソッドを実装している</a></td><td>Correctness</td></tr> 212 <tr bgcolor="#ffffff"><td><a href="#IJU_SETUP_NO_SUPER">IJU: TestCase は super.se tup() を呼び出さない setUp メソッドを実装している</a></td><td>Correctness</td></tr>
208 <tr bgcolor="#eeeeee"><td><a href="#IJU_SUITE_NOT_STATIC">IJU: TestCase は 非 stat ic な suite メソッドを実装している</a></td><td>Correctness</td></tr> 213 <tr bgcolor="#eeeeee"><td><a href="#IJU_SUITE_NOT_STATIC">IJU: TestCase は 非 stat ic な suite メソッドを実装している</a></td><td>Correctness</td></tr>
209 <tr bgcolor="#ffffff"><td><a href="#IJU_TEARDOWN_NO_SUPER">IJU: TestCase は super .tearDown() を呼び出さない tearDown メソッドを実装している </a></td><td>Correctness</td></tr> 214 <tr bgcolor="#ffffff"><td><a href="#IJU_TEARDOWN_NO_SUPER">IJU: TestCase は super .tearDown() を呼び出さない tearDown メソッドを実装している </a></td><td>Correctness</td></tr>
210 <tr bgcolor="#eeeeee"><td><a href="#IL_CONTAINER_ADDED_TO_ITSELF">IL: コレクションは自分自 身を追加している</a></td><td>Correctness</td></tr> 215 <tr bgcolor="#eeeeee"><td><a href="#IL_CONTAINER_ADDED_TO_ITSELF">IL: コレクションは自分自 身を追加している</a></td><td>Correctness</td></tr>
211 <tr bgcolor="#ffffff"><td><a href="#IL_INFINITE_LOOP">IL: 明らかな無限ループ</a></td><td> Correctness</td></tr> 216 <tr bgcolor="#ffffff"><td><a href="#IL_INFINITE_LOOP">IL: 明らかな無限ループ</a></td><td> Correctness</td></tr>
212 <tr bgcolor="#eeeeee"><td><a href="#IL_INFINITE_RECURSIVE_LOOP">IL: 明らかな無限再帰ループ< /a></td><td>Correctness</td></tr> 217 <tr bgcolor="#eeeeee"><td><a href="#IL_INFINITE_RECURSIVE_LOOP">IL: 明らかな無限再帰ループ< /a></td><td>Correctness</td></tr>
213 <tr bgcolor="#ffffff"><td><a href="#IM_MULTIPLYING_RESULT_OF_IREM">IM: 整数剰余の結果の整 数乗算</a></td><td>Correctness</td></tr> 218 <tr bgcolor="#ffffff"><td><a href="#IM_MULTIPLYING_RESULT_OF_IREM">IM: 整数剰余の結果の整 数乗算</a></td><td>Correctness</td></tr>
214 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int 値と long 定数との間違った比較</a></td><td>Correctness</td></tr> 219 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int 値と long 定数との間違った比較</a></td><td>Correctness</td></tr>
215 <tr bgcolor="#ffffff"><td><a href="#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">I NT: 負でない値と負の定数との間違った比較</a></td><td>Correctness</td></tr> 220 <tr bgcolor="#ffffff"><td><a href="#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">I NT: 負でない値と負の定数またはゼロとの間違った比較</a></td><td>Correctness</td></tr>
216 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: 符号 付きバイトの間違った比較</a></td><td>Correctness</td></tr> 221 <tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: 符号 付きバイトの間違った比較</a></td><td>Correctness</td></tr>
217 <tr bgcolor="#ffffff"><td><a href="#IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: オブ ジェクト出力ストリームへの追加は失敗に終わる</a></td><td>Correctness</td></tr> 222 <tr bgcolor="#ffffff"><td><a href="#IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: オブ ジェクト出力ストリームへの追加は失敗に終わる</a></td><td>Correctness</td></tr>
218 <tr bgcolor="#eeeeee"><td><a href="#IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: メソ ッドで読み取られずに上書きされているパラメータ</a></td><td>Correctness</td></tr> 223 <tr bgcolor="#eeeeee"><td><a href="#IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: メソ ッドで読み取られずに上書きされているパラメータ</a></td><td>Correctness</td></tr>
219 <tr bgcolor="#ffffff"><td><a href="#MF_CLASS_MASKS_FIELD">MF: スーパークラスのフィールドを隠すフィ ールドを定義しているクラス</a></td><td>Correctness</td></tr> 224 <tr bgcolor="#ffffff"><td><a href="#MF_CLASS_MASKS_FIELD">MF: スーパークラスのフィールドを隠すフィ ールドを定義しているクラス</a></td><td>Correctness</td></tr>
220 <tr bgcolor="#eeeeee"><td><a href="#MF_METHOD_MASKS_FIELD">MF: フィールドを隠す変数を定義している メソッド</a></td><td>Correctness</td></tr> 225 <tr bgcolor="#eeeeee"><td><a href="#MF_METHOD_MASKS_FIELD">MF: フィールドを隠す変数を定義している メソッド</a></td><td>Correctness</td></tr>
221 <tr bgcolor="#ffffff"><td><a href="#NP_ALWAYS_NULL">NP: null 値を利用している</a></td><t d>Correctness</td></tr> 226 <tr bgcolor="#ffffff"><td><a href="#NP_ALWAYS_NULL">NP: null 値を利用している</a></td><t d>Correctness</td></tr>
222 <tr bgcolor="#eeeeee"><td><a href="#NP_ALWAYS_NULL_EXCEPTION">NP: null 値を例外経路で利用 している</a></td><td>Correctness</td></tr> 227 <tr bgcolor="#eeeeee"><td><a href="#NP_ALWAYS_NULL_EXCEPTION">NP: null 値を例外経路で利用 している</a></td><td>Correctness</td></tr>
223 <tr bgcolor="#ffffff"><td><a href="#NP_ARGUMENT_MIGHT_BE_NULL">NP: null の引数をチェック していないメソッド</a></td><td>Correctness</td></tr> 228 <tr bgcolor="#ffffff"><td><a href="#NP_ARGUMENT_MIGHT_BE_NULL">NP: null の引数をチェック していないメソッド</a></td><td>Correctness</td></tr>
224 <tr bgcolor="#eeeeee"><td><a href="#NP_CLOSING_NULL">NP: 常に null 値のオブジェクトで close メソッドを呼び出している</a></td><td>Correctness</td></tr> 229 <tr bgcolor="#eeeeee"><td><a href="#NP_CLOSING_NULL">NP: 常に null 値のオブジェクトで close メソッドを呼び出している</a></td><td>Correctness</td></tr>
225 <tr bgcolor="#ffffff"><td><a href="#NP_GUARANTEED_DEREF">NP: null 値を利用することが保証されて いる</a></td><td>Correctness</td></tr> 230 <tr bgcolor="#ffffff"><td><a href="#NP_GUARANTEED_DEREF">NP: null 値を利用することが保証されて いる</a></td><td>Correctness</td></tr>
226 <tr bgcolor="#eeeeee"><td><a href="#NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: n ull 値を例外経路で利用することが保証されている</a></td><td>Correctness</td></tr> 231 <tr bgcolor="#eeeeee"><td><a href="#NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: n ull 値を例外経路で利用することが保証されている</a></td><td>Correctness</td></tr>
227 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUC TOR">NP: 非 null フィールドは初期化されていない</a></td><td>Correctness</td></tr> 232 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUC TOR">NP: 非 null フィールドは初期化されていない</a></td><td>Correctness</td></tr>
228 <tr bgcolor="#eeeeee"><td><a href="#NP_NONNULL_PARAM_VIOLATION">NP: メソッド呼び出しは非 n ull パラメータに対して null を渡している</a></td><td>Correctness</td></tr> 233 <tr bgcolor="#eeeeee"><td><a href="#NP_NONNULL_PARAM_VIOLATION">NP: メソッド呼び出しは非 n ull パラメータに対して null を渡している</a></td><td>Correctness</td></tr>
229 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_RETURN_VIOLATION">NP: null を返すかもし れないメソッドが @NonNull 宣言されている</a></td><td>Correctness</td></tr> 234 <tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_RETURN_VIOLATION">NP: null を返すかもし れないメソッドが @Nonnull 宣言されている</a></td><td>Correctness</td></tr>
230 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_INSTANCEOF">NP: null とわかっている値をその型のイン スタンスなのか確かめている</a></td><td>Correctness</td></tr> 235 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_INSTANCEOF">NP: null とわかっている値をその型のイン スタンスなのか確かめている</a></td><td>Correctness</td></tr>
231 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH">NP: null 値を利用している可能性があ る</a></td><td>Correctness</td></tr> 236 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH">NP: null 値を利用している可能性があ る</a></td><td>Correctness</td></tr>
232 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null 値を例 外経路で利用している可能性がある</a></td><td>Correctness</td></tr> 237 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null 値を例 外経路で利用している可能性がある</a></td><td>Correctness</td></tr>
233 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF">NP: メソッド呼び出しは非 null パラメ ータに対して null を渡している</a></td><td>Correctness</td></tr> 238 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF">NP: メソッド呼び出しは非 null パラメ ータに対して null を渡している</a></td><td>Correctness</td></tr>
234 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">N P: メソッド呼び出しは非 null パラメータに対して null を渡している</a></td><td>Correctness</td></tr> 239 <tr bgcolor="#eeeeee"><td><a href="#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">N P: メソッド呼び出しは非 null パラメータに対して null を渡している</a></td><td>Correctness</td></tr>
235 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: 非 null パ ラメータに null を渡している非仮想メソッドの呼び出し</a></td><td>Correctness</td></tr> 240 <tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: 非 null パ ラメータに null を渡している非仮想メソッドの呼び出し</a></td><td>Correctness</td></tr>
236 <tr bgcolor="#eeeeee"><td><a href="#NP_OPTIONAL_RETURN_NULL">NP: Optional の戻り型を持 つメソッドが明示的に null を返す</a></td><td>Correctness</td></tr> 241 <tr bgcolor="#eeeeee"><td><a href="#NP_OPTIONAL_RETURN_NULL">NP: Optional の戻り型を持 つメソッドが明示的に null を返す</a></td><td>Correctness</td></tr>
237 <tr bgcolor="#ffffff"><td><a href="#NP_STORE_INTO_NONNULL_FIELD">NP: @NonNull でア ノテートされたフィールドに null を格納している</a></td><td>Correctness</td></tr> 242 <tr bgcolor="#ffffff"><td><a href="#NP_STORE_INTO_NONNULL_FIELD">NP: @Nonnull でア ノテートされたフィールドに null を格納している</a></td><td>Correctness</td></tr>
238 <tr bgcolor="#eeeeee"><td><a href="#NP_UNWRITTEN_FIELD">NP: 書き込まれていないフィールドの読み出し< /a></td><td>Correctness</td></tr> 243 <tr bgcolor="#eeeeee"><td><a href="#NP_UNWRITTEN_FIELD">NP: 書き込まれていないフィールドの読み出し< /a></td><td>Correctness</td></tr>
239 <tr bgcolor="#ffffff"><td><a href="#NM_BAD_EQUAL">Nm: クラスは equal(Object) を定義していま す。equals(Object) にすべきですか?</a></td><td>Correctness</td></tr> 244 <tr bgcolor="#ffffff"><td><a href="#NM_BAD_EQUAL">Nm: クラスは equal(Object) を定義していま す。equals(Object) にすべきですか?</a></td><td>Correctness</td></tr>
240 <tr bgcolor="#eeeeee"><td><a href="#NM_LCASE_HASHCODE">Nm: クラスは hashcode() を定義して います。hashCode() にすべきですか?</a></td><td>Correctness</td></tr> 245 <tr bgcolor="#eeeeee"><td><a href="#NM_LCASE_HASHCODE">Nm: クラスは hashcode() を定義して います。hashCode() にすべきですか?</a></td><td>Correctness</td></tr>
241 <tr bgcolor="#ffffff"><td><a href="#NM_LCASE_TOSTRING">Nm: クラスは tostring() を定義して います。toString() にすべきですか?</a></td><td>Correctness</td></tr> 246 <tr bgcolor="#ffffff"><td><a href="#NM_LCASE_TOSTRING">Nm: クラスは tostring() を定義して います。toString() にすべきですか?</a></td><td>Correctness</td></tr>
242 <tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: 明らかなメソッ ドとコンストラクタの混乱</a></td><td>Correctness</td></tr> 247 <tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: 明らかなメソッ ドとコンストラクタの混乱</a></td><td>Correctness</td></tr>
243 <tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING">Nm: 非常に紛らわしい名前のメソッド</a></ td><td>Correctness</td></tr> 248 <tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING">Nm: 非常に紛らわしい名前のメソッド</a></ td><td>Correctness</td></tr>
244 <tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE">Nm: パラメータの間違ったパッケージのために、スー パークラスのメソッドをオーバーライドしていないメソッド</a></td><td>Correctness</td></tr> 249 <tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE">Nm: パラメータの間違ったパッケージのためにスーパ ークラスのメソッドをオーバーライドしていないメソッド</a></td><td>Correctness</td></tr>
245 <tr bgcolor="#ffffff"><td><a href="#QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: 論理 式で boolean リテラル値を代入しているメソッド</a></td><td>Correctness</td></tr> 250 <tr bgcolor="#ffffff"><td><a href="#QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: 論理 式で boolean リテラル値を代入しているメソッド</a></td><td>Correctness</td></tr>
251 <tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_INDEX">RANGE: 配列インデックスは範囲外</a></ td><td>Correctness</td></tr>
252 <tr bgcolor="#ffffff"><td><a href="#RANGE_ARRAY_LENGTH">RANGE: 配列の長さは範囲外</a></td ><td>Correctness</td></tr>
253 <tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_OFFSET">RANGE: 配列オフセットは範囲外</a></ td><td>Correctness</td></tr>
254 <tr bgcolor="#ffffff"><td><a href="#RANGE_STRING_INDEX">RANGE: 文字列インデックスは範囲外</a> </td><td>Correctness</td></tr>
246 <tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON">RC: 疑わしい参照比較</a></td><td> Correctness</td></tr> 255 <tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON">RC: 疑わしい参照比較</a></td><td> Correctness</td></tr>
247 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NP E">RCN: すでに利用していた値の null チェック</a></td><td>Correctness</td></tr> 256 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NP E">RCN: 既に利用していた値の null チェック</a></td><td>Correctness</td></tr>
248 <tr bgcolor="#eeeeee"><td><a href="#RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: 正規 表現のための無効な構文</a></td><td>Correctness</td></tr> 257 <tr bgcolor="#eeeeee"><td><a href="#RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: 正規 表現のための無効な構文</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</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</a></td><td>Correctness</td></tr>
250 <tr bgcolor="#eeeeee"><td><a href="#RE_POSSIBLE_UNINTENDED_PATTERN">RE: 正規表現のために 使われている "." または "|"</a></td><td>Correctness</td></tr> 259 <tr bgcolor="#eeeeee"><td><a href="#RE_POSSIBLE_UNINTENDED_PATTERN">RE: 正規表現のために 使われている "." または "|"</a></td><td>Correctness</td></tr>
251 <tr bgcolor="#ffffff"><td><a href="#RV_01_TO_INT">RV: 0から1の乱数値は整数値0に丸められる</a></t d><td>Correctness</td></tr> 260 <tr bgcolor="#ffffff"><td><a href="#RV_01_TO_INT">RV: 0から1の乱数値は整数値0に丸められる</a></t d><td>Correctness</td></tr>
252 <tr bgcolor="#eeeeee"><td><a href="#RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: 符号付き32ビット ハッシュコードの絶対値を計算する間違った試み</a></td><td>Correctness</td></tr> 261 <tr bgcolor="#eeeeee"><td><a href="#RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: 符号付き32ビット ハッシュコードの絶対値を計算する間違った試み</a></td><td>Correctness</td></tr>
253 <tr bgcolor="#ffffff"><td><a href="#RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: 符号付き整数の 乱数の絶対値を計算する間違った試み</a></td><td>Correctness</td></tr> 262 <tr bgcolor="#ffffff"><td><a href="#RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: 符号付き整数の 乱数の絶対値を計算する間違った試み</a></td><td>Correctness</td></tr>
254 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE ">RV: compareTo によって返された特定の値のコードチェック</a></td><td>Correctness</td></tr> 263 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE ">RV: compareTo によって返された特定の値のコードチェック</a></td><td>Correctness</td></tr>
255 <tr bgcolor="#ffffff"><td><a href="#RV_EXCEPTION_NOT_THROWN">RV: 作成した例外をスローするのでは なく捨てている</a></td><td>Correctness</td></tr> 264 <tr bgcolor="#ffffff"><td><a href="#RV_EXCEPTION_NOT_THROWN">RV: 作成した例外をスローするのでは なく捨てている</a></td><td>Correctness</td></tr>
256 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED">RV: 戻り値を無視しているメソッド< /a></td><td>Correctness</td></tr> 265 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED">RV: 戻り値を無視しているメソッド< /a></td><td>Correctness</td></tr>
257 <tr bgcolor="#ffffff"><td><a href="#RpC_REPEATED_CONDITIONAL_TEST">RpC: 条件テストの繰り 返し</a></td><td>Correctness</td></tr> 266 <tr bgcolor="#ffffff"><td><a href="#RpC_REPEATED_CONDITIONAL_TEST">RpC: 条件テストの繰り 返し</a></td><td>Correctness</td></tr>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 <tr bgcolor="#eeeeee"><td><a href="#OBL_UNSATISFIED_OBLIGATION">OBL: ストリームやリソースの クリーンアップに失敗するかもしれないメソッド</a></td><td>Experimental</td></tr> 299 <tr bgcolor="#eeeeee"><td><a href="#OBL_UNSATISFIED_OBLIGATION">OBL: ストリームやリソースの クリーンアップに失敗するかもしれないメソッド</a></td><td>Experimental</td></tr>
291 <tr bgcolor="#ffffff"><td><a href="#OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">O BL: チェック例外でストリームやリソースのクリーンアップに失敗するかもしれないメソッド</a></td><td>Experimental</td></tr> 300 <tr bgcolor="#ffffff"><td><a href="#OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">O BL: チェック例外でストリームやリソースのクリーンアップに失敗するかもしれないメソッド</a></td><td>Experimental</td></tr>
292 <tr bgcolor="#eeeeee"><td><a href="#DM_CONVERT_CASE">Dm: 呼び出したメソッドの Locale パラメータ の使用を検討する</a></td><td>Internationalization</td></tr> 301 <tr bgcolor="#eeeeee"><td><a href="#DM_CONVERT_CASE">Dm: 呼び出したメソッドの Locale パラメータ の使用を検討する</a></td><td>Internationalization</td></tr>
293 <tr bgcolor="#ffffff"><td><a href="#DM_DEFAULT_ENCODING">Dm: デフォルトエンコーディングへの依存</ a></td><td>Internationalization</td></tr> 302 <tr bgcolor="#ffffff"><td><a href="#DM_DEFAULT_ENCODING">Dm: デフォルトエンコーディングへの依存</ a></td><td>Internationalization</td></tr>
294 <tr bgcolor="#eeeeee"><td><a href="#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"> DP: doPrivileged ブロック内で作成されるべきクラスローダ</a></td><td>Malicious code vulnerability</t d></tr> 303 <tr bgcolor="#eeeeee"><td><a href="#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"> DP: doPrivileged ブロック内で作成されるべきクラスローダ</a></td><td>Malicious code vulnerability</t d></tr>
295 <tr bgcolor="#ffffff"><td><a href="#DP_DO_INSIDE_DO_PRIVILEGED">DP: doPrivileged ブロック内で呼び出すべきメソッド</a></td><td>Malicious code vulnerability</td></tr> 304 <tr bgcolor="#ffffff"><td><a href="#DP_DO_INSIDE_DO_PRIVILEGED">DP: doPrivileged ブロック内で呼び出すべきメソッド</a></td><td>Malicious code vulnerability</td></tr>
296 <tr bgcolor="#eeeeee"><td><a href="#EI_EXPOSE_REP">EI: 可変オブジェクトへの参照を返すことによって内部表現 を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability</td></tr> 305 <tr bgcolor="#eeeeee"><td><a href="#EI_EXPOSE_REP">EI: 可変オブジェクトへの参照を返すことによって内部表現 を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability</td></tr>
297 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_REP2">EI2: 可変オブジェクトへの参照を取り込むことによって 内部表現を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability</td></tr> 306 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_REP2">EI2: 可変オブジェクトへの参照を取り込むことによって 内部表現を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability</td></tr>
298 <tr bgcolor="#eeeeee"><td><a href="#FI_PUBLIC_SHOULD_BE_PROTECTED">FI: ファイナライザは public ではなく protected にすべき</a></td><td>Malicious code vulnerability</td></tr> 307 <tr bgcolor="#eeeeee"><td><a href="#FI_PUBLIC_SHOULD_BE_PROTECTED">FI: ファイナライザは public ではなく protected にすべき</a></td><td>Malicious code vulnerability</td></tr>
299 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_STATIC_REP2">MS: static フィールドに可変オブ ジェクトを格納することによって、内部の静的状態を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability< /td></tr> 308 <tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_STATIC_REP2">MS: static フィールドに可変オブ ジェクトを格納することによって、内部の静的状態を暴露するかもしれないメソッド</a></td><td>Malicious code vulnerability< /td></tr>
300 <tr bgcolor="#eeeeee"><td><a href="#MS_CANNOT_BE_FINAL">MS: final でないフィールドは悪質なコー ドから保護できない</a></td><td>Malicious code vulnerability</td></tr> 309 <tr bgcolor="#eeeeee"><td><a href="#MS_CANNOT_BE_FINAL">MS: final でないフィールドは悪意のある コードから保護できない</a></td><td>Malicious code vulnerability</td></tr>
301 <tr bgcolor="#ffffff"><td><a href="#MS_EXPOSE_REP">MS: 配列を返すことによって内部表現を暴露するかもしれな い public static メソッド</a></td><td>Malicious code vulnerability</td></tr> 310 <tr bgcolor="#ffffff"><td><a href="#MS_EXPOSE_REP">MS: 配列を返すことによって内部表現を暴露するかもしれな い public static メソッド</a></td><td>Malicious code vulnerability</td></tr>
302 <tr bgcolor="#eeeeee"><td><a href="#MS_FINAL_PKGPROTECT">MS: final かつパッケージプロテクテッ ドにすべきフィールド</a></td><td>Malicious code vulnerability</td></tr> 311 <tr bgcolor="#eeeeee"><td><a href="#MS_FINAL_PKGPROTECT">MS: final かつパッケージプロテクテッ ドにすべきフィールド</a></td><td>Malicious code vulnerability</td></tr>
303 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_ARRAY">MS: 可変配列のフィールド</a></td><td >Malicious code vulnerability</td></tr> 312 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_ARRAY">MS: 可変配列のフィールド</a></td><td >Malicious code vulnerability</td></tr>
313 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_COLLECTION">MS: 可変コレクションのフィールド</a ></td><td>Malicious code vulnerability</td></tr>
314 <tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_COLLECTION_PKGPROTECT">MS: パッケージプ ロテクテッドにすべき可変コレクションのフィールド</a></td><td>Malicious code vulnerability</td></tr>
304 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_HASHTABLE">MS: 可変 Hashtable のフィール ド</a></td><td>Malicious code vulnerability</td></tr> 315 <tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_HASHTABLE">MS: 可変 Hashtable のフィール ド</a></td><td>Malicious code vulnerability</td></tr>
305 <tr bgcolor="#ffffff"><td><a href="#MS_OOI_PKGPROTECT">MS: インタフェースから移動してパッケージプロテ クテッドにすべきフィールド</a></td><td>Malicious code vulnerability</td></tr> 316 <tr bgcolor="#ffffff"><td><a href="#MS_OOI_PKGPROTECT">MS: インタフェースから移動してパッケージプロテ クテッドにすべきフィールド</a></td><td>Malicious code vulnerability</td></tr>
306 <tr bgcolor="#eeeeee"><td><a href="#MS_PKGPROTECT">MS: パッケージプロテクテッドにすべきフィールド</a> </td><td>Malicious code vulnerability</td></tr> 317 <tr bgcolor="#eeeeee"><td><a href="#MS_PKGPROTECT">MS: パッケージプロテクテッドにすべきフィールド</a> </td><td>Malicious code vulnerability</td></tr>
307 <tr bgcolor="#ffffff"><td><a href="#MS_SHOULD_BE_FINAL">MS: final にすべきフィールド</a>< /td><td>Malicious code vulnerability</td></tr> 318 <tr bgcolor="#ffffff"><td><a href="#MS_SHOULD_BE_FINAL">MS: final にすべきフィールド</a>< /td><td>Malicious code vulnerability</td></tr>
308 <tr bgcolor="#eeeeee"><td><a href="#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: fin al でないフィールドはリファクタリングするべき</a></td><td>Malicious code vulnerability</td></tr> 319 <tr bgcolor="#eeeeee"><td><a href="#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: fin al でないフィールドはリファクタリングするべき</a></td><td>Malicious code vulnerability</td></tr>
309 <tr bgcolor="#ffffff"><td><a href="#AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACT ION">AT: 並行抽象の呼び出しシーケンスはアトミックではないかもしれない</a></td><td>Multithreaded correctness</t d></tr> 320 <tr bgcolor="#ffffff"><td><a href="#AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACT ION">AT: 並行抽象の呼び出しシーケンスはアトミックではないかもしれない</a></td><td>Multithreaded correctness</t d></tr>
310 <tr bgcolor="#eeeeee"><td><a href="#DC_DOUBLECHECK">DC: フィールドのダブルチェックの可能性</a></t d><td>Multithreaded correctness</td></tr> 321 <tr bgcolor="#eeeeee"><td><a href="#DC_DOUBLECHECK">DC: フィールドのダブルチェックの可能性</a></t d><td>Multithreaded correctness</td></tr>
311 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean の 同期化</a></td><td>Multithreaded correctness</td></tr> 322 <tr bgcolor="#ffffff"><td><a href="#DC_PARTIALLY_CONSTRUCTED">DC: 部分的に初期化されたオブジェ クトを暴露する可能性がある</a></td><td>Multithreaded correctness</td></tr>
312 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: デ ッドロックの原因になる可能性があるボクシングされたプリミティブ型の同期化</a></td><td>Multithreaded correctness</td>< /tr> 323 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean の 同期化</a></td><td>Multithreaded correctness</td></tr>
313 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: 正 準化した文字列の同期化</a></td><td>Multithreaded correctness</td></tr> 324 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: デ ッドロックの原因になる可能性があるボクシングされたプリミティブ型の同期化</a></td><td>Multithreaded correctness</td>< /tr>
314 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITI VE">DL: ボクシングされたプリミティブ値の同期化</a></td><td>Multithreaded correctness</td></tr> 325 <tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: 正 準化した文字列の同期化</a></td><td>Multithreaded correctness</td></tr>
315 <tr bgcolor="#ffffff"><td><a href="#DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition で wait メソッドを呼び出している</a></td><td>Multithreaded correctness</td></tr> 326 <tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITI VE">DL: ボクシングされたプリミティブ値の同期化</a></td><td>Multithreaded correctness</td></tr>
316 <tr bgcolor="#eeeeee"><td><a href="#DM_USELESS_THREAD">Dm: デフォルトの空の run メソッドを使用し て作成されたスレッド</a></td><td>Multithreaded correctness</td></tr> 327 <tr bgcolor="#eeeeee"><td><a href="#DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition で wait メソッドを呼び出している</a></td><td>Multithreaded correctness</td></tr>
317 <tr bgcolor="#ffffff"><td><a href="#ESync_EMPTY_SYNC">ESync: 空の synchronized ブロッ ク</a></td><td>Multithreaded correctness</td></tr> 328 <tr bgcolor="#ffffff"><td><a href="#DM_USELESS_THREAD">Dm: デフォルトの空の run メソッドを使用し て作成されたスレッド</a></td><td>Multithreaded correctness</td></tr>
318 <tr bgcolor="#eeeeee"><td><a href="#IS2_INCONSISTENT_SYNC">IS: 一貫性のない同期化</a></td ><td>Multithreaded correctness</td></tr> 329 <tr bgcolor="#eeeeee"><td><a href="#ESync_EMPTY_SYNC">ESync: 空の synchronized ブロッ ク</a></td><td>Multithreaded correctness</td></tr>
319 <tr bgcolor="#ffffff"><td><a href="#IS_FIELD_NOT_GUARDED">IS: 並行アクセスに対してガードされていな いフィールド</a></td><td>Multithreaded correctness</td></tr> 330 <tr bgcolor="#ffffff"><td><a href="#IS2_INCONSISTENT_SYNC">IS: 一貫性のない同期化</a></td ><td>Multithreaded correctness</td></tr>
320 <tr bgcolor="#eeeeee"><td><a href="#JLM_JSR166_LOCK_MONITORENTER">JLM: Lock で同期化 している</a></td><td>Multithreaded correctness</td></tr> 331 <tr bgcolor="#eeeeee"><td><a href="#IS_FIELD_NOT_GUARDED">IS: 並行アクセスに対してガードされていな いフィールド</a></td><td>Multithreaded correctness</td></tr>
321 <tr bgcolor="#ffffff"><td><a href="#JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM: java.util.concurrent のインスタンスで同期化している</a></td><td>Multithreaded correctness</td> </tr> 332 <tr bgcolor="#ffffff"><td><a href="#JLM_JSR166_LOCK_MONITORENTER">JLM: Lock で同期化 している</a></td><td>Multithreaded correctness</td></tr>
322 <tr bgcolor="#eeeeee"><td><a href="#JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">J LM: util.concurrent 抽象でモニタスタイルの wait メソッドを使用している</a></td><td>Multithreaded corre ctness</td></tr> 333 <tr bgcolor="#eeeeee"><td><a href="#JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM: java.util.concurrent のインスタンスで同期化している</a></td><td>Multithreaded correctness</td> </tr>
323 <tr bgcolor="#ffffff"><td><a href="#LI_LAZY_INIT_STATIC">LI: static フィールドの間違った遅延 初期化</a></td><td>Multithreaded correctness</td></tr> 334 <tr bgcolor="#ffffff"><td><a href="#JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">J LM: util.concurrent 抽象でモニタスタイルの wait メソッドを使用している</a></td><td>Multithreaded corre ctness</td></tr>
324 <tr bgcolor="#eeeeee"><td><a href="#LI_LAZY_INIT_UPDATE_STATIC">LI: 更新される static フィールドの間違った遅延初期化</a></td><td>Multithreaded correctness</td></tr> 335 <tr bgcolor="#eeeeee"><td><a href="#LI_LAZY_INIT_STATIC">LI: static フィールドの間違った遅延 初期化</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: フィールドを同期化でガードしようとする無駄な試み</a></td><td>Multithreaded correctness</td></tr> 336 <tr bgcolor="#ffffff"><td><a href="#LI_LAZY_INIT_UPDATE_STATIC">LI: 更新される static フィールドの間違った遅延初期化</a></td><td>Multithreaded correctness</td></tr>
326 <tr bgcolor="#eeeeee"><td><a href="#ML_SYNC_ON_UPDATED_FIELD">ML: 更新されるフィールドで同期化 しているメソッド</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: フィールドを同期化でガードしようとする無駄な試み</a></td><td>Multithreaded correctness</td></tr>
327 <tr bgcolor="#ffffff"><td><a href="#MSF_MUTABLE_SERVLET_FIELD">MSF: 可変サーブレットフィール ド</a></td><td>Multithreaded correctness</td></tr> 338 <tr bgcolor="#ffffff"><td><a href="#ML_SYNC_ON_UPDATED_FIELD">ML: 更新されるフィールドで同期化 しているメソッド</a></td><td>Multithreaded correctness</td></tr>
328 <tr bgcolor="#eeeeee"><td><a href="#MWN_MISMATCHED_NOTIFY">MWN: 不整合な notify メソッド </a></td><td>Multithreaded correctness</td></tr> 339 <tr bgcolor="#eeeeee"><td><a href="#MSF_MUTABLE_SERVLET_FIELD">MSF: 可変サーブレットフィール ド</a></td><td>Multithreaded correctness</td></tr>
329 <tr bgcolor="#ffffff"><td><a href="#MWN_MISMATCHED_WAIT">MWN: 不整合な wait メソッド</a> </td><td>Multithreaded correctness</td></tr> 340 <tr bgcolor="#ffffff"><td><a href="#MWN_MISMATCHED_NOTIFY">MWN: 不整合な notify メソッド </a></td><td>Multithreaded correctness</td></tr>
330 <tr bgcolor="#eeeeee"><td><a href="#NN_NAKED_NOTIFY">NN: 裸の notify メソッド</a></td> <td>Multithreaded correctness</td></tr> 341 <tr bgcolor="#eeeeee"><td><a href="#MWN_MISMATCHED_WAIT">MWN: 不整合な wait メソッド</a> </td><td>Multithreaded correctness</td></tr>
331 <tr bgcolor="#ffffff"><td><a href="#NP_SYNC_AND_NULL_CHECK_FIELD">NP: 同じフィールドでの同 期化と null チェック</a></td><td>Multithreaded correctness</td></tr> 342 <tr bgcolor="#ffffff"><td><a href="#NN_NAKED_NOTIFY">NN: 裸の notify メソッド</a></td> <td>Multithreaded correctness</td></tr>
332 <tr bgcolor="#eeeeee"><td><a href="#NO_NOTIFY_NOT_NOTIFYALL">No: notifyAll メソッドで はなく notify メソッドを使用している</a></td><td>Multithreaded correctness</td></tr> 343 <tr bgcolor="#eeeeee"><td><a href="#NP_SYNC_AND_NULL_CHECK_FIELD">NP: 同じフィールドでの同 期化と null チェック</a></td><td>Multithreaded correctness</td></tr>
333 <tr bgcolor="#ffffff"><td><a href="#RS_READOBJECT_SYNC">RS: readObject メソッドを同期化し ているクラス</a></td><td>Multithreaded correctness</td></tr> 344 <tr bgcolor="#ffffff"><td><a href="#NO_NOTIFY_NOT_NOTIFYALL">No: notifyAll メソッドで はなく notify メソッドを使用している</a></td><td>Multithreaded correctness</td></tr>
334 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent の戻り値は無視されて putIfAbsent に渡した値は再利用された</a></td><td>Multithreaded correc tness</td></tr> 345 <tr bgcolor="#eeeeee"><td><a href="#RS_READOBJECT_SYNC">RS: readObject メソッドを同期化し ているクラス</a></td><td>Multithreaded correctness</td></tr>
335 <tr bgcolor="#ffffff"><td><a href="#RU_INVOKE_RUN">Ru: スレッドで run メソッドを呼び出している</a ></td><td>Multithreaded correctness</td></tr> 346 <tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent の戻り値は無視されて putIfAbsent に渡した値は再利用された</a></td><td>Multithreaded correc tness</td></tr>
336 <tr bgcolor="#eeeeee"><td><a href="#SC_START_IN_CTOR">SC: Thread.start() を呼び出してい るコンストラクタ</a></td><td>Multithreaded correctness</td></tr> 347 <tr bgcolor="#eeeeee"><td><a href="#RU_INVOKE_RUN">Ru: スレッドで run メソッドを呼び出している</a ></td><td>Multithreaded correctness</td></tr>
337 <tr bgcolor="#ffffff"><td><a href="#SP_SPIN_ON_FIELD">SP: スピンロックをしているメソッド</a></t d><td>Multithreaded correctness</td></tr> 348 <tr bgcolor="#ffffff"><td><a href="#SC_START_IN_CTOR">SC: Thread.start() を呼び出してい るコンストラクタ</a></td><td>Multithreaded correctness</td></tr>
338 <tr bgcolor="#eeeeee"><td><a href="#STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">ST CAL: static Calendar の呼び出し</a></td><td>Multithreaded correctness</td></tr> 349 <tr bgcolor="#eeeeee"><td><a href="#SP_SPIN_ON_FIELD">SP: スピンロックをしているメソッド</a></t d><td>Multithreaded correctness</td></tr>
339 <tr bgcolor="#ffffff"><td><a href="#STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE" >STCAL: static DateFormat の呼び出し</a></td><td>Multithreaded correctness</td></tr> 350 <tr bgcolor="#ffffff"><td><a href="#STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">ST CAL: static Calendar の呼び出し</a></td><td>Multithreaded correctness</td></tr>
340 <tr bgcolor="#eeeeee"><td><a href="#STCAL_STATIC_CALENDAR_INSTANCE">STCAL: stati c Calendar フィールド</a></td><td>Multithreaded correctness</td></tr> 351 <tr bgcolor="#eeeeee"><td><a href="#STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE" >STCAL: 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 フィールド</a></td><td>Multithreaded correctness</td></tr>
342 <tr bgcolor="#eeeeee"><td><a href="#SWL_SLEEP_WITH_LOCK_HELD">SWL: ロックを保持して Thre ad.sleep() を呼び出しているメソッド</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: 2つ以上のロックを保持して wait メ ソッドを呼び出している</a></td><td>Multithreaded correctness</td></tr> 354 <tr bgcolor="#ffffff"><td><a href="#SWL_SLEEP_WITH_LOCK_HELD">SWL: ロックを保持して Thre ad.sleep() を呼び出しているメソッド</a></td><td>Multithreaded correctness</td></tr>
344 <tr bgcolor="#eeeeee"><td><a href="#UG_SYNC_SET_UNSYNC_GET">UG: 同期化していない get メソッ ド、同期化している set メソッド</a></td><td>Multithreaded correctness</td></tr> 355 <tr bgcolor="#eeeeee"><td><a href="#TLW_TWO_LOCK_WAIT">TLW: 2つ以上のロックを保持して wait メ ソッドを呼び出している</a></td><td>Multithreaded correctness</td></tr>
345 <tr bgcolor="#ffffff"><td><a href="#UL_UNRELEASED_LOCK">UL: すべての経路でロックが解除されないメソッ ド</a></td><td>Multithreaded correctness</td></tr> 356 <tr bgcolor="#ffffff"><td><a href="#UG_SYNC_SET_UNSYNC_GET">UG: 同期化していない get メソッ ド、同期化している set メソッド</a></td><td>Multithreaded correctness</td></tr>
346 <tr bgcolor="#eeeeee"><td><a href="#UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: すべての例 外経路でロックが解除されないメソッド</a></td><td>Multithreaded correctness</td></tr> 357 <tr bgcolor="#eeeeee"><td><a href="#UL_UNRELEASED_LOCK">UL: すべての経路でロックが解除されないメソッ ド</a></td><td>Multithreaded correctness</td></tr>
347 <tr bgcolor="#ffffff"><td><a href="#UW_UNCOND_WAIT">UW: wait メソッドの無条件呼び出し</a></t d><td>Multithreaded correctness</td></tr> 358 <tr bgcolor="#ffffff"><td><a href="#UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: すべての例 外経路でロックが解除されないメソッド</a></td><td>Multithreaded correctness</td></tr>
348 <tr bgcolor="#eeeeee"><td><a href="#VO_VOLATILE_INCREMENT">VO: volatile フィールドへのイ ンクリメントはアトミックではない</a></td><td>Multithreaded correctness</td></tr> 359 <tr bgcolor="#eeeeee"><td><a href="#UW_UNCOND_WAIT">UW: wait メソッドの無条件呼び出し</a></t d><td>Multithreaded correctness</td></tr>
349 <tr bgcolor="#ffffff"><td><a href="#VO_VOLATILE_REFERENCE_TO_ARRAY">VO: 配列への vol atile 参照は、配列要素を volatile として扱わない</a></td><td>Multithreaded correctness</td></tr> 360 <tr bgcolor="#ffffff"><td><a href="#VO_VOLATILE_INCREMENT">VO: volatile フィールドへのイ ンクリメントはアトミックではない</a></td><td>Multithreaded correctness</td></tr>
350 <tr bgcolor="#eeeeee"><td><a href="#WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL" >WL: クラスリテラルではなく getClass で同期化している</a></td><td>Multithreaded correctness</td></t r> 361 <tr bgcolor="#eeeeee"><td><a href="#VO_VOLATILE_REFERENCE_TO_ARRAY">VO: 配列への vol atile 参照は、配列要素を volatile として扱わない</a></td><td>Multithreaded correctness</td></tr>
351 <tr bgcolor="#ffffff"><td><a href="#WS_WRITEOBJECT_SYNC">WS: writeObject メソッドは同期 化しているがその他のメソッドは同期化していないクラス</a></td><td>Multithreaded correctness</td></tr> 362 <tr bgcolor="#ffffff"><td><a href="#WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL" >WL: クラスリテラルではなく getClass で同期化している</a></td><td>Multithreaded correctness</td></t r>
352 <tr bgcolor="#eeeeee"><td><a href="#WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await() がループの中にない</a></td><td>Multithreaded correctness</td></tr> 363 <tr bgcolor="#eeeeee"><td><a href="#WS_WRITEOBJECT_SYNC">WS: writeObject メソッドは同期 化しているがその他のメソッドは同期化していないクラス</a></td><td>Multithreaded correctness</td></tr>
353 <tr bgcolor="#ffffff"><td><a href="#WA_NOT_IN_LOOP">Wa: wait メソッドがループの中にない</a></ td><td>Multithreaded correctness</td></tr> 364 <tr bgcolor="#ffffff"><td><a href="#WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await() がループの中にない</a></td><td>Multithreaded correctness</td></tr>
354 <tr bgcolor="#eeeeee"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED">Bx: プリミティブ値がボ クシングされて、すぐにアンボクシングされる</a></td><td>Performance</td></tr> 365 <tr bgcolor="#eeeeee"><td><a href="#WA_NOT_IN_LOOP">Wa: wait メソッドがループの中にない</a></ td><td>Multithreaded correctness</td></tr>
355 <tr bgcolor="#ffffff"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COE RCION">Bx: プリミティブ値がプリミティブ型の型変換をするためにボクシングされて、アンボクシングされる</a></td><td>Performance< /td></tr> 366 <tr bgcolor="#ffffff"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED">Bx: プリミティブ値がボ クシングされて、すぐにアンボクシングされる</a></td><td>Performance</td></tr>
367 <tr bgcolor="#eeeeee"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COE RCION">Bx: プリミティブ値がプリミティブ型の型変換をするためにボクシングされて、アンボクシングされる</a></td><td>Performance< /td></tr>
368 <tr bgcolor="#ffffff"><td><a href="#BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR" >Bx: プリミティブ値が3項演算子のためにアンボクシングされて、型変換される</a></td><td>Performance</td></tr>
356 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ボクシングされ た値がアンボクシングされて、すぐに再ボクシングされる</a></td><td>Performance</td></tr> 369 <tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ボクシングされ た値がアンボクシングされて、すぐに再ボクシングされる</a></td><td>Performance</td></tr>
357 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ボクシング/アン ボクシングはプリミティブを解析する</a></td><td>Performance</td></tr> 370 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: プリミティブが比 較でボクシングされている</a></td><td>Performance</td></tr>
358 <tr bgcolor="#eeeeee"><td><a href="#DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString メソ ッドを呼び出すためにプリミティブ型のラッパクラスのインスタンスを作成している</a></td><td>Performance</td></tr> 371 <tr bgcolor="#eeeeee"><td><a href="#DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ボクシング/アン ボクシングはプリミティブを解析する</a></td><td>Performance</td></tr>
359 <tr bgcolor="#ffffff"><td><a href="#DM_FP_NUMBER_CTOR">Bx: 効率が悪い浮動小数点 Number コンス トラクタを呼び出しているメソッド</a></td><td>Performance</td></tr> 372 <tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString メソ ッドを呼び出すためにプリミティブ型のラッパクラスのインスタンスを作成している</a></td><td>Performance</td></tr>
360 <tr bgcolor="#eeeeee"><td><a href="#DM_NUMBER_CTOR">Bx: 効率が悪い Number コンストラクタを呼び出 しているメソッド</a></td><td>Performance</td></tr> 373 <tr bgcolor="#eeeeee"><td><a href="#DM_FP_NUMBER_CTOR">Bx: 効率が悪い浮動小数点 Number コンス トラクタを呼び出しているメソッド</a></td><td>Performance</td></tr>
361 <tr bgcolor="#ffffff"><td><a href="#DMI_BLOCKING_METHODS_ON_URL">Dm: URL の equal s メソッドと hashCode メソッドはブロックする</a></td><td>Performance</td></tr> 374 <tr bgcolor="#ffffff"><td><a href="#DM_NUMBER_CTOR">Bx: 効率が悪い Number コンストラクタを呼び出 しているメソッド</a></td><td>Performance</td></tr>
362 <tr bgcolor="#eeeeee"><td><a href="#DMI_COLLECTION_OF_URLS">Dm: URL の Map や Set はひどい性能になる可能性がある</a></td><td>Performance</td></tr> 375 <tr bgcolor="#eeeeee"><td><a href="#DMI_BLOCKING_METHODS_ON_URL">Dm: URL の equal s メソッドと hashCode メソッドはブロックする</a></td><td>Performance</td></tr>
363 <tr bgcolor="#ffffff"><td><a href="#DM_BOOLEAN_CTOR">Dm: 効率が悪い Boolean コンストラクタを呼 び出しているメソッド</a></td><td>Performance</td></tr> 376 <tr bgcolor="#ffffff"><td><a href="#DMI_COLLECTION_OF_URLS">Dm: URL の Map や Set はひどい性能になる</a></td><td>Performance</td></tr>
364 <tr bgcolor="#eeeeee"><td><a href="#DM_GC">Dm: 明示的なガベージコレクション</a></td><td>Perfor mance</td></tr> 377 <tr bgcolor="#eeeeee"><td><a href="#DM_BOOLEAN_CTOR">Dm: 効率が悪い Boolean コンストラクタを呼 び出しているメソッド</a></td><td>Performance</td></tr>
365 <tr bgcolor="#ffffff"><td><a href="#DM_NEW_FOR_GETCLASS">Dm: クラスオブジェクトを得るためだけにイン スタンスを作成しているメソッド</a></td><td>Performance</td></tr> 378 <tr bgcolor="#ffffff"><td><a href="#DM_GC">Dm: 明示的なガベージコレクション</a></td><td>Perfor mance</td></tr>
366 <tr bgcolor="#eeeeee"><td><a href="#DM_NEXTINT_VIA_NEXTDOUBLE">Dm: 整数の乱数を生成するために は nextDouble メソッド ではなく nextInt メソッドを使用する</a></td><td>Performance</td></tr> 379 <tr bgcolor="#eeeeee"><td><a href="#DM_NEW_FOR_GETCLASS">Dm: クラスオブジェクトを得るためだけにイン スタンスを作成しているメソッド</a></td><td>Performance</td></tr>
367 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_CTOR">Dm: 効率が悪い new String(String) コンストラクタを呼び出しているメソッド</a></td><td>Performance</td></tr> 380 <tr bgcolor="#ffffff"><td><a href="#DM_NEXTINT_VIA_NEXTDOUBLE">Dm: 整数の乱数を生成するために は nextDouble メソッド ではなく nextInt メソッドを使用する</a></td><td>Performance</td></tr>
368 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_TOSTRING">Dm: String の toString メソ ッドを呼び出しているメソッド</a></td><td>Performance</td></tr> 381 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_CTOR">Dm: 効率が悪い new String(String) コンストラクタを呼び出しているメソッド</a></td><td>Performance</td></tr>
369 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_VOID_CTOR">Dm: 効率が悪い new String() コンストラクタを呼び出しているメソッド</a></td><td>Performance</td></tr> 382 <tr bgcolor="#ffffff"><td><a href="#DM_STRING_TOSTRING">Dm: String の toString メソ ッドを呼び出しているメソッド</a></td><td>Performance</td></tr>
370 <tr bgcolor="#eeeeee"><td><a href="#HSC_HUGE_SHARED_STRING_CONSTANT">HSC: 複数のクラス ファイルにわたって複製されている巨大な文字列定数</a></td><td>Performance</td></tr> 383 <tr bgcolor="#eeeeee"><td><a href="#DM_STRING_VOID_CTOR">Dm: 効率が悪い new String() コンストラクタを呼び出しているメソッド</a></td><td>Performance</td></tr>
371 <tr bgcolor="#ffffff"><td><a href="#IIO_INEFFICIENT_INDEX_OF">IIO: String.indexO f(String) の非効率的な使用</a></td><td>Performance</td></tr> 384 <tr bgcolor="#ffffff"><td><a href="#HSC_HUGE_SHARED_STRING_CONSTANT">HSC: 複数のクラス ファイルにわたって複製されている巨大な文字列定数</a></td><td>Performance</td></tr>
372 <tr bgcolor="#eeeeee"><td><a href="#IIO_INEFFICIENT_LAST_INDEX_OF">IIO: String.l astIndexOf(String) の非効率的な使用</a></td><td>Performance</td></tr>
373 <tr bgcolor="#ffffff"><td><a href="#ITA_INEFFICIENT_TO_ARRAY">ITA: 長さが0の配列の引数で t oArray メソッドを使用しているメソッド</a></td><td>Performance</td></tr>
374 <tr bgcolor="#eeeeee"><td><a href="#SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ル ープの中で + を使用して文字列を連結しているメソッド</a></td><td>Performance</td></tr> 385 <tr bgcolor="#eeeeee"><td><a href="#SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ル ープの中で + を使用して文字列を連結しているメソッド</a></td><td>Performance</td></tr>
375 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC">SIC: static 内部クラ スにすべき</a></td><td>Performance</td></tr> 386 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC">SIC: static 内部クラ スにすべき</a></td><td>Performance</td></tr>
376 <tr bgcolor="#eeeeee"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: 名前付き s tatic 内部クラスにリファクタリングできるかもしれない</a></td><td>Performance</td></tr> 387 <tr bgcolor="#eeeeee"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: 名前付き s tatic 内部クラスにリファクタリングできるかもしれない</a></td><td>Performance</td></tr>
377 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static 内部クラスにリファクタリングできるかもしれない</a></td><td>Performance</td></tr> 388 <tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static 内部クラスにリファクタリングできるかもしれない</a></td><td>Performance</td></tr>
378 <tr bgcolor="#eeeeee"><td><a href="#SS_SHOULD_BE_STATIC">SS: 読み出されないフィールド</a></t d><td>Performance</td></tr> 389 <tr bgcolor="#eeeeee"><td><a href="#SS_SHOULD_BE_STATIC">SS: 読み出されないフィールド</a></t d><td>Performance</td></tr>
379 <tr bgcolor="#ffffff"><td><a href="#UM_UNNECESSARY_MATH">UM: 定数値で Math クラスの stat ic メソッドを呼び出しているメソッド</a></td><td>Performance</td></tr> 390 <tr bgcolor="#ffffff"><td><a href="#UM_UNNECESSARY_MATH">UM: 定数値で Math クラスの stat ic メソッドを呼び出しているメソッド</a></td><td>Performance</td></tr>
380 <tr bgcolor="#eeeeee"><td><a href="#UPM_UNCALLED_PRIVATE_METHOD">UPM: private メソ ッドは決して呼び出されない</a></td><td>Performance</td></tr> 391 <tr bgcolor="#eeeeee"><td><a href="#UPM_UNCALLED_PRIVATE_METHOD">UPM: private メソ ッドは決して呼び出されない</a></td><td>Performance</td></tr>
381 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_FIELD">UrF: 読み出されないフィールド</a></td> <td>Performance</td></tr> 392 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_FIELD">UrF: 読み出されないフィールド</a></td> <td>Performance</td></tr>
382 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_FIELD">UuF: 未使用のフィールド</a></td><td >Performance</td></tr> 393 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_FIELD">UuF: 未使用のフィールド</a></td><td >Performance</td></tr>
383 <tr bgcolor="#ffffff"><td><a href="#WMI_WRONG_MAP_ITERATOR">WMI: entrySet イテレータで はなく効率が悪い keySet イテレータを使用している</a></td><td>Performance</td></tr> 394 <tr bgcolor="#ffffff"><td><a href="#WMI_WRONG_MAP_ITERATOR">WMI: entrySet イテレータで はなく効率が悪い keySet イテレータを使用している</a></td><td>Performance</td></tr>
384 <tr bgcolor="#eeeeee"><td><a href="#DMI_CONSTANT_DB_PASSWORD">Dm: ハードコードされた定数データ ベースパスワード</a></td><td>Security</td></tr> 395 <tr bgcolor="#eeeeee"><td><a href="#DMI_CONSTANT_DB_PASSWORD">Dm: ハードコードされた定数データ ベースパスワード</a></td><td>Security</td></tr>
385 <tr bgcolor="#ffffff"><td><a href="#DMI_EMPTY_DB_PASSWORD">Dm: 空のデータベースパスワード</a> </td><td>Security</td></tr> 396 <tr bgcolor="#ffffff"><td><a href="#DMI_EMPTY_DB_PASSWORD">Dm: 空のデータベースパスワード</a> </td><td>Security</td></tr>
386 <tr bgcolor="#eeeeee"><td><a href="#HRS_REQUEST_PARAMETER_TO_COOKIE">HRS: 信頼できない 入力から形成された HTTP cookie</a></td><td>Security</td></tr> 397 <tr bgcolor="#eeeeee"><td><a href="#HRS_REQUEST_PARAMETER_TO_COOKIE">HRS: 信頼できない 入力から形成された HTTP cookie</a></td><td>Security</td></tr>
387 <tr bgcolor="#ffffff"><td><a href="#HRS_REQUEST_PARAMETER_TO_HTTP_HEADER">HRS: H TTP レスポンススプリッティング脆弱性</a></td><td>Security</td></tr> 398 <tr bgcolor="#ffffff"><td><a href="#HRS_REQUEST_PARAMETER_TO_HTTP_HEADER">HRS: H TTP レスポンススプリッティング脆弱性</a></td><td>Security</td></tr>
388 <tr bgcolor="#eeeeee"><td><a href="#PT_ABSOLUTE_PATH_TRAVERSAL">PT: サーブレットの絶対パスト ラバーサル</a></td><td>Security</td></tr> 399 <tr bgcolor="#eeeeee"><td><a href="#PT_ABSOLUTE_PATH_TRAVERSAL">PT: サーブレットの絶対パスト ラバーサル</a></td><td>Security</td></tr>
389 <tr bgcolor="#ffffff"><td><a href="#PT_RELATIVE_PATH_TRAVERSAL">PT: サーブレットの相対パスト ラバーサル</a></td><td>Security</td></tr> 400 <tr bgcolor="#ffffff"><td><a href="#PT_RELATIVE_PATH_TRAVERSAL">PT: サーブレットの相対パスト ラバーサル</a></td><td>Security</td></tr>
390 <tr bgcolor="#eeeeee"><td><a href="#SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQ L: SQL の Statement の execute メソッドに定数でない文字列を渡している</a></td><td>Security</td></tr> 401 <tr bgcolor="#eeeeee"><td><a href="#SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQ L: SQL の Statement の execute または addBatch メソッドに定数でない文字列を渡している</a></td><td>Secur ity</td></tr>
391 <tr bgcolor="#ffffff"><td><a href="#SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCON STANT_STRING">SQL: PreparedStatement が定数でない文字列から生成されている</a></td><td>Security</td ></tr> 402 <tr bgcolor="#ffffff"><td><a href="#SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCON STANT_STRING">SQL: PreparedStatement が定数でない文字列から生成されている</a></td><td>Security</td ></tr>
392 <tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: 反射 型クロスサイトスクリプティング脆弱性がある JSP</a></td><td>Security</td></tr> 403 <tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: 反射 型クロスサイトスクリプティング脆弱性がある JSP</a></td><td>Security</td></tr>
393 <tr bgcolor="#ffffff"><td><a href="#XSS_REQUEST_PARAMETER_TO_SEND_ERROR">XSS: 反射 型クロスサイトスクリプティング脆弱性がエラーページにあるサーブレット</a></td><td>Security</td></tr> 404 <tr bgcolor="#ffffff"><td><a href="#XSS_REQUEST_PARAMETER_TO_SEND_ERROR">XSS: 反射 型クロスサイトスクリプティング脆弱性がエラーページにあるサーブレット</a></td><td>Security</td></tr>
394 <tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER">XSS : 反射型クロスサイトスクリプティング脆弱性があるサーブレット</a></td><td>Security</td></tr> 405 <tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER">XSS : 反射型クロスサイトスクリプティング脆弱性があるサーブレット</a></td><td>Security</td></tr>
395 <tr bgcolor="#ffffff"><td><a href="#BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: 抽象コレ クションへの疑わしいキャスト</a></td><td>Dodgy code</td></tr> 406 <tr bgcolor="#ffffff"><td><a href="#BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: 抽象コレ クションへの疑わしいキャスト</a></td><td>Dodgy code</td></tr>
396 <tr bgcolor="#eeeeee"><td><a href="#BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: 具象コレ クションへの疑わしいキャスト</a></td><td>Dodgy code</td></tr> 407 <tr bgcolor="#eeeeee"><td><a href="#BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: 具象コレ クションへの疑わしいキャスト</a></td><td>Dodgy code</td></tr>
397 <tr bgcolor="#ffffff"><td><a href="#BC_UNCONFIRMED_CAST">BC: 未チェック/未確認のキャスト</a>< /td><td>Dodgy code</td></tr> 408 <tr bgcolor="#ffffff"><td><a href="#BC_UNCONFIRMED_CAST">BC: 未チェック/未確認のキャスト</a>< /td><td>Dodgy code</td></tr>
398 <tr bgcolor="#eeeeee"><td><a href="#BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: メソッ ドからの戻り値の未チェック/未確認のキャスト</a></td><td>Dodgy code</td></tr> 409 <tr bgcolor="#eeeeee"><td><a href="#BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: メソッ ドからの戻り値の未チェック/未確認のキャスト</a></td><td>Dodgy code</td></tr>
399 <tr bgcolor="#ffffff"><td><a href="#BC_VACUOUS_INSTANCEOF">BC: 常に true を返す insta nceof</a></td><td>Dodgy code</td></tr> 410 <tr bgcolor="#ffffff"><td><a href="#BC_VACUOUS_INSTANCEOF">BC: 常に true を返す insta nceof</a></td><td>Dodgy code</td></tr>
400 <tr bgcolor="#eeeeee"><td><a href="#ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSH IFT: 符号なし右シフトを short/byte にキャストしている</a></td><td>Dodgy code</td></tr> 411 <tr bgcolor="#eeeeee"><td><a href="#ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSH IFT: 符号なし右シフトを short/byte にキャストしている</a></td><td>Dodgy code</td></tr>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RC N: 2つの null 値の冗長な比較</a></td><td>Dodgy code</td></tr> 452 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RC N: 2つの null 値の冗長な比較</a></td><td>Dodgy code</td></tr>
442 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RC N: null でないことがわかっている値の冗長な null チェック</a></td><td>Dodgy code</td></tr> 453 <tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RC N: null でないことがわかっている値の冗長な null チェック</a></td><td>Dodgy code</td></tr>
443 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN: null とわかっている値の冗長な null チェック</a></td><td>Dodgy code</td></tr> 454 <tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN: null とわかっている値の冗長な null チェック</a></td><td>Dodgy code</td></tr>
444 <tr bgcolor="#eeeeee"><td><a href="#REC_CATCH_EXCEPTION">REC: 例外がスローされないのに例外をキャッ チしている</a></td><td>Dodgy code</td></tr> 455 <tr bgcolor="#eeeeee"><td><a href="#REC_CATCH_EXCEPTION">REC: 例外がスローされないのに例外をキャッ チしている</a></td><td>Dodgy code</td></tr>
445 <tr bgcolor="#ffffff"><td><a href="#RI_REDUNDANT_INTERFACES">RI: スーパークラスと同じインタフェ ースを実装しているクラス</a></td><td>Dodgy code</td></tr> 456 <tr bgcolor="#ffffff"><td><a href="#RI_REDUNDANT_INTERFACES">RI: スーパークラスと同じインタフェ ースを実装しているクラス</a></td><td>Dodgy code</td></tr>
446 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_FOR_POSITIVE_INDEXOF">RV: String.in dexOf の結果が正かどうか確かめている</a></td><td>Dodgy code</td></tr> 457 <tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_FOR_POSITIVE_INDEXOF">RV: String.in dexOf の結果が正かどうか確かめている</a></td><td>Dodgy code</td></tr>
447 <tr bgcolor="#ffffff"><td><a href="#RV_DONT_JUST_NULL_CHECK_READLINE">RV: readLi ne メソッドの結果を null でないのか確かめた後で捨てている</a></td><td>Dodgy code</td></tr> 458 <tr bgcolor="#ffffff"><td><a href="#RV_DONT_JUST_NULL_CHECK_READLINE">RV: readLi ne メソッドの結果を null でないのか確かめた後で捨てている</a></td><td>Dodgy code</td></tr>
448 <tr bgcolor="#eeeeee"><td><a href="#RV_REM_OF_HASHCODE">RV: ハッシュコードの剰余は負かもしれない</ a></td><td>Dodgy code</td></tr> 459 <tr bgcolor="#eeeeee"><td><a href="#RV_REM_OF_HASHCODE">RV: ハッシュコードの剰余は負かもしれない</ a></td><td>Dodgy code</td></tr>
449 <tr bgcolor="#ffffff"><td><a href="#RV_REM_OF_RANDOM_INT">RV: 符号付き32ビット整数の乱数の剰余< /a></td><td>Dodgy code</td></tr> 460 <tr bgcolor="#ffffff"><td><a href="#RV_REM_OF_RANDOM_INT">RV: 符号付き32ビット整数の乱数の剰余< /a></td><td>Dodgy code</td></tr>
450 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED_INFERRED">RV: メソッドは戻 り値を無視しています、これは間違いではないですか?</a></td><td>Dodgy code</td></tr> 461 <tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED_INFERRED">RV: メソッドは戻 り値を無視しています、これは間違いではないですか?</a></td><td>Dodgy code</td></tr>
451 <tr bgcolor="#ffffff"><td><a href="#SA_FIELD_DOUBLE_ASSIGNMENT">SA: フィールドの二重代入</ a></td><td>Dodgy code</td></tr> 462 <tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV: 副作用がないメソッドの戻り値は無視される</a></td><td>Dodgy code</td></tr>
452 <tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_DOUBLE_ASSIGNMENT">SA: ローカル変数の二重代入< /a></td><td>Dodgy code</td></tr> 463 <tr bgcolor="#eeeeee"><td><a href="#SA_FIELD_DOUBLE_ASSIGNMENT">SA: フィールドの二重代入</ a></td><td>Dodgy code</td></tr>
453 <tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT">SA: ローカル変数の自己代入</a ></td><td>Dodgy code</td></tr> 464 <tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_DOUBLE_ASSIGNMENT">SA: ローカル変数の二重代入< /a></td><td>Dodgy code</td></tr>
454 <tr bgcolor="#eeeeee"><td><a href="#SF_SWITCH_FALLTHROUGH">SF: 1つの case が次の case へと通り抜ける switch 文を発見した</a></td><td>Dodgy code</td></tr> 465 <tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT">SA: ローカル変数の自己代入</a ></td><td>Dodgy code</td></tr>
455 <tr bgcolor="#ffffff"><td><a href="#SF_SWITCH_NO_DEFAULT">SF: default がない switch 文を発見した</a></td><td>Dodgy code</td></tr> 466 <tr bgcolor="#ffffff"><td><a href="#SF_SWITCH_FALLTHROUGH">SF: 1つの case が次の case へと通り抜ける switch 文を発見した</a></td><td>Dodgy code</td></tr>
456 <tr bgcolor="#eeeeee"><td><a href="#ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: インスタンスメソッドから static フィールドへの書き込み</a></td><td>Dodgy code</td></tr> 467 <tr bgcolor="#eeeeee"><td><a href="#SF_SWITCH_NO_DEFAULT">SF: default がない switch 文を発見した</a></td><td>Dodgy code</td></tr>
457 <tr bgcolor="#ffffff"><td><a href="#SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: サ ブクラスで継承できない private な readResolve メソッド</a></td><td>Dodgy code</td></tr> 468 <tr bgcolor="#ffffff"><td><a href="#ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: インスタンスメソッドから static フィールドへの書き込み</a></td><td>Dodgy code</td></tr>
458 <tr bgcolor="#eeeeee"><td><a href="#SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" >Se: Serializable でないクラスの transient フィールド</a></td><td>Dodgy code</td></tr> 469 <tr bgcolor="#eeeeee"><td><a href="#SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: サ ブクラスで継承できない private な readResolve メソッド</a></td><td>Dodgy code</td></tr>
459 <tr bgcolor="#ffffff"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALW AYS_SINK">TQ: 値は型修飾子を必要としているが、不明としてマークされている</a></td><td>Dodgy code</td></tr> 470 <tr bgcolor="#ffffff"><td><a href="#SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" >Se: Serializable でないクラスの transient フィールド</a></td><td>Dodgy code</td></tr>
460 <tr bgcolor="#eeeeee"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEV ER_SINK">TQ: 値は型修飾子を必要としないが、不明としてマークされている</a></td><td>Dodgy code</td></tr> 471 <tr bgcolor="#eeeeee"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALW AYS_SINK">TQ: 値は型修飾子を必要としているが、不明としてマークされている</a></td><td>Dodgy code</td></tr>
472 <tr bgcolor="#ffffff"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEV ER_SINK">TQ: 値は型修飾子を必要としないが、不明としてマークされている</a></td><td>Dodgy code</td></tr>
473 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_CONDITION">UC: 条件は効果がない</a></td>< td>Dodgy code</td></tr>
474 <tr bgcolor="#ffffff"><td><a href="#UC_USELESS_CONDITION_TYPE">UC: 条件は変数型のために効果が ない</a></td><td>Dodgy code</td></tr>
475 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_OBJECT">UC: 役に立たないオブジェクトを作成した</a> </td><td>Dodgy code</td></tr>
476 <tr bgcolor="#ffffff"><td><a href="#UC_USELESS_OBJECT_STACK">UC: 役に立たないオブジェクトをスタ ックで作成した</a></td><td>Dodgy code</td></tr>
477 <tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_VOID_METHOD">UC: 役に立たない空ではない void メソッド</a></td><td>Dodgy code</td></tr>
461 <tr bgcolor="#ffffff"><td><a href="#UCF_USELESS_CONTROL_FLOW">UCF: 役に立たない制御フロー</ a></td><td>Dodgy code</td></tr> 478 <tr bgcolor="#ffffff"><td><a href="#UCF_USELESS_CONTROL_FLOW">UCF: 役に立たない制御フロー</ a></td><td>Dodgy code</td></tr>
462 <tr bgcolor="#eeeeee"><td><a href="#UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: 次の行 へ続くだけの役に立たない制御フロー</a></td><td>Dodgy code</td></tr> 479 <tr bgcolor="#eeeeee"><td><a href="#UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: 次の行 へ続くだけの役に立たない制御フロー</a></td><td>Dodgy code</td></tr>
463 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: 読 み出されない public または protected フィールド</a></td><td>Dodgy code</td></tr> 480 <tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: 読 み出されない public または protected フィールド</a></td><td>Dodgy code</td></tr>
464 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: 未 使用の public または protected フィールド</a></td><td>Dodgy code</td></tr> 481 <tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: 未 使用の public または protected フィールド</a></td><td>Dodgy code</td></tr>
465 <tr bgcolor="#ffffff"><td><a href="#UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">Uw F: コンストラクタで初期化されていないフィールドを null チェックなしで null 値を利用している</a></td><td>Dodgy code</td ></tr> 482 <tr bgcolor="#ffffff"><td><a href="#UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">Uw F: コンストラクタで初期化されていないフィールドを null チェックなしで null 値を利用している</a></td><td>Dodgy code</td ></tr>
466 <tr bgcolor="#eeeeee"><td><a href="#UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF : 書き込まてれいない public または protected フィールド</a></td><td>Dodgy code</td></tr> 483 <tr bgcolor="#eeeeee"><td><a href="#UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF : 書き込まてれいない public または protected フィールド</a></td><td>Dodgy code</td></tr>
467 <tr bgcolor="#ffffff"><td><a href="#XFB_XML_FACTORY_BYPASS">XFB: XMLインタフェースの特定の実 装のインスタンスを作成しているメソッド</a></td><td>Dodgy code</td></tr> 484 <tr bgcolor="#ffffff"><td><a href="#XFB_XML_FACTORY_BYPASS">XFB: XMLインタフェースの特定の実 装のインスタンスを作成しているメソッド</a></td><td>Dodgy 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 メソッドは引数の型を 仮定するべきではない (BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS)</a></h3> 487 <h3><a name="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">BC: equals メソッドは引数の型を 仮定するべきではない (BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS)</a></h3>
471 488
472 489
473 <p> 490 <p>
474 <code>equals(Object o)</code> メソッドは、<code>o</code> の型についてどんな仮定もするべきではありません。 491 <code>equals(Object o)</code> メソッドは、<code>o</code> の型についてどんな仮定もするべきではありません。
475 <code>o</code> が <code>this</code> と同じ型でないなら単に false を返すべきです。 492 <code>o</code> が <code>this</code> と同じ型でないなら単に false を返すべきです。
476 </p> 493 </p>
477 494
478 495
479 <h3><a name="BIT_SIGNED_CHECK">BIT: ビット演算の符号をチェックする (BIT_SIGNED_CHECK)</a></h3> 496 <h3><a name="BIT_SIGNED_CHECK">BIT: ビット演算の符号をチェックする (BIT_SIGNED_CHECK)</a></h3>
480 497
481 498
482 <p> 499 <p>
483 このメソッドは、<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> のような式を比較しています。 500 このメソッドは、<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> のような式を比較しています。
484 ビット演算をより大きい演算子で比較することは、予想外の結果 (もちろん、<code>SWT.SELECTED</code> の値による) の原因になる可能性があ ります。 501 ビット演算をより大きい演算子で比較することは、予想外の結果 (もちろん、<code>SWT.SELECTED</code> の値による) の原因になる可能性があ ります。
485 <code>SWT.SELECTED</code> が負数であるなら、これはバグの候補です。 502 <code>SWT.SELECTED</code> が負数であるなら、これはバグの候補です。
486 <code>SWT.SELECTED</code> が負ではないとしても、'&gt; 0' の代わりに '!= 0' を使うことは良いプラクティスと思われます 503 <code>SWT.SELECTED</code> が負ではないとしても、'&gt; 0' の代わりに '!= 0' を使用することは良いプラクティスと思われま
487 </p> 504 </p>
488 <p> 505 <p>
489 Boris Bokowski 506 Boris Bokowski
490 </p> 507 </p>
491 508
492 509
493 <h3><a name="CN_IDIOM">CN: Cloneable を実装したクラスが clone メソッドを定義していないか、使用していない (CN_I DIOM)</a></h3> 510 <h3><a name="CN_IDIOM">CN: Cloneable を実装したクラスが clone メソッドを定義していないか、使用していない (CN_I DIOM)</a></h3>
494 511
495 512
496 <p> 513 <p>
(...skipping 20 matching lines...) Expand all
517 <p> 534 <p>
518 このクラスは、<code>Cloneable</code> を実装していないのに <code>clone</code> メソッドを定義しています。 535 このクラスは、<code>Cloneable</code> を実装していないのに <code>clone</code> メソッドを定義しています。
519 これが OK (たとえば、サブクラスのクローンの実装を自分自身で制御したい場合です) という状況もありますが意図したことなのか確認してください。 536 これが OK (たとえば、サブクラスのクローンの実装を自分自身で制御したい場合です) という状況もありますが意図したことなのか確認してください。
520 </p> 537 </p>
521 538
522 539
523 <h3><a name="CNT_ROUGH_CONSTANT_VALUE">CNT: 既知の定数の雑な値を見つける (CNT_ROUGH_CONSTANT_V ALUE)</a></h3> 540 <h3><a name="CNT_ROUGH_CONSTANT_VALUE">CNT: 既知の定数の雑な値を見つける (CNT_ROUGH_CONSTANT_V ALUE)</a></h3>
524 541
525 542
526 <p> 543 <p>
527 コードの明確さともっと良い正確さのために定義済みライブラリ定数を使うことを推奨します 544 コードの明確さともっと良い正確さのために定義済みライブラリ定数を使用することを推奨します
528 </p> 545 </p>
529 546
530 547
531 <h3><a name="CO_ABSTRACT_SELF">Co: 抽象クラスは共変な compareTo メソッドを定義している (CO_ABSTRACT_ SELF)</a></h3> 548 <h3><a name="CO_ABSTRACT_SELF">Co: 抽象クラスは共変な compareTo メソッドを定義している (CO_ABSTRACT_ SELF)</a></h3>
532 549
533 550
534 <p> 551 <p>
535 このクラスは、共変な <code>compareTo</code> メソッドを定義しています。 552 このクラスは、共変な <code>compareTo</code> メソッドを定義しています。
536 <code>Comparable</code> インタフェースの <code>compareTo</code> メソッドを正しく実装するためには <code>c ompareTo</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。 553 <code>Comparable</code> インタフェースの <code>compareTo</code> メソッドを正しく実装するためには <code>c ompareTo</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。
537 </p> 554 </p>
538 555
539 556
557 <h3><a name="CO_COMPARETO_INCORRECT_FLOATING">Co: compareTo()/compare() は間違って fl oat または double 値を処理する (CO_COMPARETO_INCORRECT_FLOATING)</a></h3>
558
559
560 <p>
561 このメソッドはこのようなパターンを使用して double または float 値を比較しています : val1 &gt; val2 ? 1 : val1 &lt ; val2 ? -1 : 0。
562 このパターンは 正しくないソート結果や壊れたコレクションの原因になるかもしれない -0.0 や NaN 値のために間違って働きます (もし比較された値がキーと して使われるなら)。
563 すべての特殊なケースを正確に処理するために Double.compare または Float.compare メソッドの使用を検討してください。
564 </p>
565
566
567 <h3><a name="CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() は Integer .MIN_VALUE を返す (CO_COMPARETO_RESULTS_MIN_VALUE)</a></h3>
568
569
570 <p>
571 いくつかの状況下では、この <code>compareTo</code> または <code>compare</code> メソッドは Integer.MIN_ VALUE を返します。ひどいバッドプラクティスです。
572 <code>compareTo</code> メソッドの戻り値で重要なことは結果の符号だけです。
573 しかし、結果の符号を無効にすることを期待して、<code>compareTo</code> メソッドの戻り値を無効にすることがあります。
574 返された値が Integer.MIN_VALUE の場合を除いてです。 Integer.MIN_VALUE よりも-1を返してください。
575 </p>
576
577
540 <h3><a name="CO_SELF_NO_OBJECT">Co: 共変な compareTo メソッドの定義 (CO_SELF_NO_OBJECT)</a ></h3> 578 <h3><a name="CO_SELF_NO_OBJECT">Co: 共変な compareTo メソッドの定義 (CO_SELF_NO_OBJECT)</a ></h3>
541 579
542 580
543 <p> 581 <p>
544 このクラスは、共変な <code>compareTo</code> メソッドを定義しています。 582 このクラスは、共変な <code>compareTo</code> メソッドを定義しています。
545 <code>Comparable</code> インタフェースの <code>compareTo</code> メソッドを正しく実装するためには <code>c ompareTo</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。 583 <code>Comparable</code> インタフェースの <code>compareTo</code> メソッドを正しく実装するためには <code>c ompareTo</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。
546 </p> 584 </p>
547 585
548 586
549 <h3><a name="DE_MIGHT_DROP">DE: 例外を捨てているかもしれないメソッド (DE_MIGHT_DROP)</a></h3> 587 <h3><a name="DE_MIGHT_DROP">DE: 例外を捨てているかもしれないメソッド (DE_MIGHT_DROP)</a></h3>
550 588
551 589
552 <p> 590 <p>
553 このメソッドは、例外を捨てているかもしれません。 591 このメソッドは、例外を捨てているかもしれません。
554 一般にキャッチした例外は何らかの方法で処理、または報告するべきです、あるいはメソッドからスローするべきです 592 一般的にキャッチした例外は何らかの方法で処理、または報告するべきです、またはメソッドからスローするべきです
555 </p> 593 </p>
556 594
557 595
558 <h3><a name="DE_MIGHT_IGNORE">DE: 例外を無視しているかもしれないメソッド (DE_MIGHT_IGNORE)</a></h3> 596 <h3><a name="DE_MIGHT_IGNORE">DE: 例外を無視しているかもしれないメソッド (DE_MIGHT_IGNORE)</a></h3>
559 597
560 598
561 <p> 599 <p>
562 このメソッドは例外を無視しているかもしれません。 600 このメソッドは例外を無視しているかもしれません。
563 一般に例外は何らかの方法で処理、または報告するべきです、あるいはメソッドからスローするべきです 601 一般的に例外は何らかの方法で処理、または報告するべきです、またはメソッドからスローするべきです
564 </p> 602 </p>
565 603
566 604
567 <h3><a name="DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: エントリセットの要素を加えることは、Entr y オブジェクトの再利用のために失敗するかもしれない (DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS)</a></h3> 605 <h3><a name="DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: エントリセットの要素を加えることは、Entr y オブジェクトの再利用のために失敗するかもしれない (DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS)</a></h3>
568 606
569 607
570 <p> 608 <p>
571 entrySet メソッドは、一つの Entry オブジェクトを再利用し、反復中に返される基底 Map のビューを返すことが許可されています。 609 entrySet メソッドは、一つの Entry オブジェクトを再利用し、反復中に返される基底 Map のビューを返すことが許可されています。
572 Java 1.6 の時点で、IdentityHashMap と EnumMap の両方がそうしました。 610 Java 1.6 の時点で、IdentityHashMap と EnumMap の両方がそうしました。
573 そのような Map を通して繰り返すとき、エントリ値は次の繰り返しへ進むまでが有効です。 611 そのような Map を通して繰り返すとき、エントリ値は次の繰り返しへ進むまでが有効です。
574 たとえば、addAll メソッドにそのような entrySet を渡そうと試みるのは、ひどく間違っているでしょう。 612 たとえば、addAll メソッドにそのような entrySet を渡そうと試みるのは、ひどく間違っているでしょう。
575 </p> 613 </p>
576 614
577 615
578 <h3><a name="DMI_RANDOM_USED_ONLY_ONCE">DMI: Random オブジェクトが作成され1度しか使われない (DMI_RA NDOM_USED_ONLY_ONCE)</a></h3> 616 <h3><a name="DMI_RANDOM_USED_ONLY_ONCE">DMI: Random オブジェクトが作成され1度しか使われない (DMI_RA NDOM_USED_ONLY_ONCE)</a></h3>
579 617
580 618
581 <p> 619 <p>
582 このコードは、<code>java.util.Random</code> オブジェクトを作成して1つの乱数を生成するために使用して捨てています。 620 このコードは、<code>java.util.Random</code> オブジェクトを作成して1つの乱数を生成するために使用して捨てています。
583 これはあまり良くない品質の乱数を作り出し、効率が悪いです。 621 これはあまり良くない品質の乱数を作り出し、効率が悪いです。
584 できれば、<code>Random</code> オブジェクトを1つだけ作成して保存されるようにコードを書き直してください。 622 できれば、<code>Random</code> オブジェクトを1つだけ作成して保存されるようにコードを書き直してください。
585 そして、新しい乱数が必要なたびに既存の <code>Random</code> オブジェクトでメソッドを呼び出してください 623 そして、毎回新しい乱数は既存の <code>Random</code> オブジェクトを呼び出して取得することが必要です
586 </p> 624 </p>
587 <p> 625 <p>
588 生成された乱数が推測可能でないことが重要なら、乱数ごとに新しい <code>Random</code> オブジェクトを作成してはいけません (値はあまりに簡単に 推測可能です)。 626 生成された乱数が推測可能でないことが重要なら、乱数ごとに新しい <code>Random</code> オブジェクトを作成してはいけません (値はあまりに簡単に 推測可能です)。
589 その代わりに <code>java.security.SecureRandom</code> の使用を強く検討するべきです (そして必要とされる乱数ごとに新しい <code>SecureRandom</code> のオブジェクトを作成することを回避します)。 627 その代わりに <code>java.security.SecureRandom</code> の使用を強く検討するべきです (そして必要とされる乱数ごとに新しい <code>SecureRandom</code> のオブジェクトを作成することを回避します)。
590 </p> 628 </p>
591 629
592 630
593 <h3><a name="DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI: コレクションを消去するために remove All メソッドを使用しない (DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION)</a></h3> 631 <h3><a name="DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI: コレクションを消去するために remove All メソッドを使用しない (DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION)</a></h3>
594 632
595 633
596 <p> 634 <p>
597 コレクション <code>c</code> からすべての要素を除去したいなら、<code>c.removeAll(c)</code> ではなく <code>c. clear</code> を使用してください。 635 コレクション <code>c</code> からすべての要素を除去したいなら、<code>c.removeAll(c)</code> ではなく <code>c. clear</code> を使用してください。
598 コレクションを消去するために <code>c.removeAll(c)</code> を呼び出すことは、それほど明確ではなく、タイプミスからの誤りに影響されやす く、効率的ではなく、いくつかのコレクションでは、<code>ConcurrentModificationException</code> をスローするかもしれま せん。 636 コレクションを消去するために <code>c.removeAll(c)</code> を呼び出すことは、それほど明確ではなく、タイプミスからの誤りに影響されやす く、効率的ではなく、いくつかのコレクションでは、<code>ConcurrentModificationException</code> をスローするかもしれま せん。
599 </p> 637 </p>
600 638
601 639
602 <h3><a name="DM_EXIT">Dm: System.exit(...) を呼び出しているメソッド (DM_EXIT)</a></h3> 640 <h3><a name="DM_EXIT">Dm: System.exit(...) を呼び出しているメソッド (DM_EXIT)</a></h3>
603 641
604 642
605 <p> 643 <p>
606 <code>System.exit(...)</code> を呼び出すことは、Java 仮想マシン全体をシャットダウンさせてしまいます。 644 <code>System.exit(...)</code> を呼び出すことは、Java 仮想マシン全体をシャットダウンさせてしまいます。
607 それが適切な場合にだけ使用するべきです。 645 それが適切な場合にだけ使用するべきです。
608 <code>System.exit(...)</code> の呼び出しはコードが他のコードによって呼び出されることを困難か不可能にします 646 <code>System.exit(...)</code> の呼び出しは、他のコードによる呼び出しを困難か不可能にします
609 その代わりに RuntimeException をスローすることを検討してください。 647 その代わりに RuntimeException をスローすることを検討してください。
610 </p> 648 </p>
611 649
612 650
613 <h3><a name="DM_RUN_FINALIZERS_ON_EXIT">Dm: 危険なメソッド runFinalizersOnExit を呼び出している メソッド (DM_RUN_FINALIZERS_ON_EXIT)</a></h3> 651 <h3><a name="DM_RUN_FINALIZERS_ON_EXIT">Dm: 危険なメソッド runFinalizersOnExit を呼び出している メソッド (DM_RUN_FINALIZERS_ON_EXIT)</a></h3>
614 652
615 653
616 <p> 654 <p>
617 どんな理由があるにせよ決して <code>System.runFinalizersOnExit</code> と <code>Runtime.runFinali zersOnExit</code> を呼び出さないでください。 655 どんな理由があるにせよ決して <code>System.runFinalizersOnExit</code> と <code>Runtime.runFinali zersOnExit</code> を呼び出さないでください。
618 Java ライブラリで最も危険なメソッドの1つです。 -- Joshua Bloch 656 Java ライブラリで最も危険なメソッドの1つです。 -- Joshua Bloch
619 </p> 657 </p>
620 658
621 659
622 <h3><a name="ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: String パラメータを == や != を使 用して比較している (ES_COMPARING_PARAMETER_STRING_WITH_EQ)</a></h3> 660 <h3><a name="ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: String パラメータを == や != を使 用して比較している (ES_COMPARING_PARAMETER_STRING_WITH_EQ)</a></h3>
623 661
624 662
625 <p> 663 <p>
626 このコードは、参照等価性のために == や != を使用して <code>java.lang.String</code> パラメータを比較しています。 664 このコードは、参照等価性のために == や != を使用して <code>java.lang.String</code> パラメータを比較しています。
627 文字列定数または正準化された文字列だけをメソッドに渡すことを呼び出し元に要求することは必要以上に脆弱で測定可能な性能の向上をもたらしません。 665 文字列定数または正準化された文字列だけをメソッドに渡すことを呼び出し元に要求することは必要以上に脆弱で測定可能な性能の向上をもたらしません。
628 その代わりに <code>equals(Object)</code> メソッドを使うことを検討してください 666 その代わりに <code>equals(Object)</code> メソッドを使用することを検討してください
629 </p> 667 </p>
630 668
631 669
632 <h3><a name="ES_COMPARING_STRINGS_WITH_EQ">ES: String オブジェクトを == や != を使用して比較してい る (ES_COMPARING_STRINGS_WITH_EQ)</a></h3> 670 <h3><a name="ES_COMPARING_STRINGS_WITH_EQ">ES: String オブジェクトを == や != を使用して比較してい る (ES_COMPARING_STRINGS_WITH_EQ)</a></h3>
633 671
634 672
635 <p> 673 <p>
636 このコードは、参照等価性のために == や != を使用して <code>java.lang.String</code> オブジェクトを比較しています。 674 このコードは、参照等価性のために == や != を使用して <code>java.lang.String</code> オブジェクトを比較しています。
637 両方の文字列がソースファイルの定数か、<code>String.intern()</code> を使用して正準化されていないかぎり、同じ文字列は2つの異なる S tring オブジェクトによって表されるかもしれません。 675 両方の文字列がソースファイルの定数か、<code>String.intern()</code> を使用して正準化されていないかぎり、同じ文字列は2つの異なる S tring オブジェクトによって表されるかもしれません。
638 その代わりに <code>equals(Object)</code> メソッドを使うことを検討してください 676 その代わりに <code>equals(Object)</code> メソッドを使用することを検討してください
639 </p> 677 </p>
640 678
641 679
642 <h3><a name="EQ_ABSTRACT_SELF">Eq: 抽象クラスは共変な equals メソッドを宣言している (EQ_ABSTRACT_SEL F)</a></h3> 680 <h3><a name="EQ_ABSTRACT_SELF">Eq: 抽象クラスは共変な equals メソッドを宣言している (EQ_ABSTRACT_SEL F)</a></h3>
643 681
644 682
645 <p> 683 <p>
646 このクラスは、共変な <code>equals</code> メソッドを定義しています。 684 このクラスは、共変な <code>equals</code> メソッドを定義しています。
647 <code>java.lang.Object</code> の <code>equals</code> メソッドを正しくオーバーライドするためには <code> equals</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。 685 <code>java.lang.Object</code> の <code>equals</code> メソッドを正しくオーバーライドするためには <code> equals</code> メソッドのパラメータの型は、<code>java.lang.Object</code> でなければなりません。
648 </p> 686 </p>
649 687
650 688
651 <h3><a name="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">Eq: equals メソッドは互換性の ないオペランドをチェックしている (EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)</a></h3> 689 <h3><a name="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">Eq: equals メソッドは互換性の ないオペランドをチェックしている (EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)</a></h3>
652 690
653 691
654 <p> 692 <p>
655 この <code>equals</code> メソッドは、引数が互換性のない型 (すなわちスーパタイプでもなく、<code>equals</code> メソッド を定義しているクラスのスーパータイプでもサブタイプでもないクラス) なのか確かめています。 693 この <code>equals</code> メソッドは、引数が互換性のない型 (すなわちスーパタイプでもなく、<code>equals</code> メソッド を定義しているクラスのスーパータイプでもサブタイプでもないクラス) なのか確かめています。
656 たとえば、<code>Foo</code> クラスの <code>equals</code> メソッドはそのように見えるかもしれません。 694 たとえば、<code>Foo</code> クラスの <code>equals</code> メソッドはそのように見えるかもしれません。
657 </p> 695 </p>
658 <blockquote><pre> 696 <blockquote><pre>
659 public boolean equals(Object o) { 697 public boolean equals(Object o) {
660 if (o instanceof Foo) 698 if (o instanceof Foo)
661 return name.equals(((Foo)o).name); 699 return name.equals(((Foo)o).name);
662 else if (o instanceof String) 700 else if (o instanceof String)
663 return name.equals(o); 701 return name.equals(o);
664 else return false; 702 else return false;
665 } 703 }
666 </pre></blockquote> 704 </pre></blockquote>
667 <p> 705 <p>
668 これは対称的で推移的である <code>equals</code> メソッドを実現するのはとても難しいので、間違ったプラクティスと見なされています 706 これは対称的で推移的である <code>equals</code> メソッドを実現するのはとても難しいので、バッドプラクティスと見なされています
669 プロパティがなければまったく予想していない振る舞いが起こりえます。 707 プロパティがなければまったく予想していない振る舞いが起こりえます。
670 </p> 708 </p>
671 709
672 710
673 <h3><a name="EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: compareTo(...) メソッドを定義して Object .equals() を使用しているクラス (EQ_COMPARETO_USE_OBJECT_EQUALS)</a></h3> 711 <h3><a name="EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: compareTo(...) メソッドを定義して Object .equals() を使用しているクラス (EQ_COMPARETO_USE_OBJECT_EQUALS)</a></h3>
674 712
675 713
676 <p> 714 <p>
677 このクラスは、<code>compareTo(...)</code> メソッドを定義していますが、<code>equals</code> メソッドは <code >java.lang.Object</code> から継承しています。 715 このクラスは、<code>compareTo(...)</code> メソッドを定義していますが、<code>equals</code> メソッドは <code >java.lang.Object</code> から継承しています。
678 一般に、<code>equals</code> メソッドが true を返す場合に限り、<code>compareTo</code> メソッドは0を返すべきです 716 一般的に<code>equals</code> メソッドが true を返す場合に限り、<code>compareTo</code> メソッドは0を返すべきです
679 これが違反されるなら奇妙で予測できない失敗が PriorityQueue などのクラスで発生します。 717 これが違反されるなら奇妙で予測できない失敗が PriorityQueue などのクラスで発生します。
680 J2SE 5.0では、<code>PriorityQueue.remove()</code> は <code>compareTo</code> メソッドを使用し ますが、Java SE 6では、<code>equals</code> メソッドを使用します。 718 J2SE 5.0では、<code>PriorityQueue.remove()</code> は <code>compareTo</code> メソッドを使用し ますが、Java SE 6では、<code>equals</code> メソッドを使用します。
681 </p> 719 </p>
682 <p> 720 <p>
683 Comparable インタフェースの compareTo メソッドの JavaDoc を以下に引用します。 721 Comparable インタフェースの compareTo メソッドの JavaDoc を以下に引用します。
684 </p> 722 </p>
685 <blockquote><p> 723 <blockquote><p>
686 必須というわけではありませんが、<code>(x.compareTo(y)==0) == (x.equals(y))</code> であることが強く推奨されます 。 724 必須というわけではありませんが、<code>(x.compareTo(y)==0) == (x.equals(y))</code> であることが強く推奨されます 。
687 一般に、<code>Comparable</code> インタフェースを実装しているクラスで、この条件に違反するクラスは明確にこの事実を示す必要があります。 725 一般的に<code>Comparable</code> インタフェースを実装しているクラスで、この条件に違反するクラスは明確にこの事実を示す必要があります。
688 「注:このクラスは <code>equals</code> と一貫性のない自然順序付けを持ちます」などと明示することをお勧めします。 726 「注:このクラスは <code>equals</code> と一貫性のない自然順序付けを持ちます」などと明示することをお勧めします。
689 </p></blockquote> 727 </blockquote></p>
690 728
691 729
692 <h3><a name="EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals メソッドはサブタイプのために失敗する (EQ_G ETCLASS_AND_CLASS_CONSTANT)</a></h3> 730 <h3><a name="EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals メソッドはサブタイプのために失敗する (EQ_G ETCLASS_AND_CLASS_CONSTANT)</a></h3>
693 731
694 732
695 <p> 733 <p>
696 このクラスは、サブクラスによる継承によって壊れる <code>equlas</code> メソッドがあります。 734 このクラスは、サブクラスによる継承によって壊れる <code>equlas</code> メソッドがあります。
697 <code>equals</code> メソッドは、クラスリテラルを引数のクラスと比較しています (たとえば、<code>Foo</code> クラスで <co de>Foo.class == o.getClass()</code> のような判定を行っています)。 735 <code>equals</code> メソッドは、クラスリテラルを引数のクラスと比較しています (たとえば、<code>Foo</code> クラスで <co de>Foo.class == o.getClass()</code> のような判定を行っています)。
698 <code>this.getClass() == o.getClass()</code> の方がより良いです。 736 <code>this.getClass() == o.getClass()</code> の方がより良いです。
699 </p> 737 </p>
(...skipping 20 matching lines...) Expand all
720 758
721 759
722 <p> 760 <p>
723 このメソッドには明示的にオブジェクトで <code>finalize</code> メソッドの呼び出しがあります。 761 このメソッドには明示的にオブジェクトで <code>finalize</code> メソッドの呼び出しがあります。
724 ファイナライザは Java 仮想マシンによって1度だけ実行されることになっているので、これは間違った考えです。 762 ファイナライザは Java 仮想マシンによって1度だけ実行されることになっているので、これは間違った考えです。
725 </p> 763 </p>
726 <p> 764 <p>
727 参照によってつながった複数のオブジェクトがファイナライズ可能になると、Java 仮想マシンはすべてのオブジェクトの <code>finalize</code> メソッドを呼び出します。 765 参照によってつながった複数のオブジェクトがファイナライズ可能になると、Java 仮想マシンはすべてのオブジェクトの <code>finalize</code> メソッドを呼び出します。
728 おそらく異なるスレッドで同時にです。 766 おそらく異なるスレッドで同時にです。
729 したがって、クラス <i>X</i> の <code>finalize</code> メソッドの中から <i>X</i> によって参照されているオブジェクトの <code>finalize</code> メソッドを呼び出すのは、とりわけ間違った考えです。 767 したがって、クラス <i>X</i> の <code>finalize</code> メソッドの中から <i>X</i> によって参照されているオブジェクトの <code>finalize</code> メソッドを呼び出すのは、とりわけ間違った考えです。
730 なぜなら、オブジェクトがすでに別のスレッドによってファイナライズされているかもしれないからです 768 なぜなら、オブジェクトが既に別のスレッドによってファイナライズされているかもしれないからです
731 </p> 769 </p>
732 770
733 771
734 <h3><a name="FI_FINALIZER_NULLS_FIELDS">FI: ファイナライザはフィールドを null にする (FI_FINALIZE R_NULLS_FIELDS)</a></h3> 772 <h3><a name="FI_FINALIZER_NULLS_FIELDS">FI: ファイナライザはフィールドを null にする (FI_FINALIZE R_NULLS_FIELDS)</a></h3>
735 773
736 774
737 <p> 775 <p>
738 このファイナライザは、フィールドを null にしています。 776 このファイナライザは、フィールドを null にしています。
739 これは通常誤りでガベージコレクタを助けません。オブジェクトはいずれにしろガベージされます。 777 これは通常誤りでガベージコレクタを助けません。オブジェクトはいずれにしろガベージされます。
740 </p> 778 </p>
741 779
742 780
743 <h3><a name="FI_FINALIZER_ONLY_NULLS_FIELDS">FI: ファイナライザはフィールドを null にするだけ (FI_F INALIZER_ONLY_NULLS_FIELDS)</a></h3> 781 <h3><a name="FI_FINALIZER_ONLY_NULLS_FIELDS">FI: ファイナライザはフィールドを null にするだけ (FI_F INALIZER_ONLY_NULLS_FIELDS)</a></h3>
744 782
745 783
746 <p> 784 <p>
747 このファイナライザは、フィールドを null にすること以外に何もしません。 785 このファイナライザは、フィールドを null にすること以外に何もしません。
748 これはまったく無意味であり、オブジェクトがガベージされ、ファイナライズされ、再びガベージされることを要求しています。 786 これはまったく無意味であり、オブジェクトがガベージされ、ファイナライズされ、再びガベージされることを要求しています。
749 <code>finalize</code> メソッドを削除するべきです 787 <code>finalize</code> メソッドを除去するべきです
750 </p> 788 </p>
751 789
752 790
753 <h3><a name="FI_MISSING_SUPER_CALL">FI: ファイナライザはスーパークラスのファイナライザを呼び出していない (FI_MIS SING_SUPER_CALL)</a></h3> 791 <h3><a name="FI_MISSING_SUPER_CALL">FI: ファイナライザはスーパークラスのファイナライザを呼び出していない (FI_MIS SING_SUPER_CALL)</a></h3>
754 792
755 793
756 <p> 794 <p>
757 この <code>finalize</code> メソッドは、スーパークラスの <code>finalize</code> メソッドを呼び出していません。 795 この <code>finalize</code> メソッドは、スーパークラスの <code>finalize</code> メソッドを呼び出していません。
758 したがって、スーパークラスのために定義されたどんなファイナライザアクションも実行されません。 796 したがって、スーパークラスのために定義されたどんなファイナライザアクションも実行されません。
759 <code>super.finalize()</code> の呼び出しを追加してください。 797 <code>super.finalize()</code> の呼び出しを追加してください。
(...skipping 17 matching lines...) Expand all
777 この <code>finalize</code> メソッドは、スーパークラスの <code>finalize</code> メソッドを呼び出しているだけです。 815 この <code>finalize</code> メソッドは、スーパークラスの <code>finalize</code> メソッドを呼び出しているだけです。
778 冗長なので削除してください。 816 冗長なので削除してください。
779 </p> 817 </p>
780 818
781 819
782 <h3><a name="VA_FORMAT_STRING_USES_NEWLINE">FS: 書式文字列は \n よりも %n を使用するべき (VA_FOR MAT_STRING_USES_NEWLINE)</a></h3> 820 <h3><a name="VA_FORMAT_STRING_USES_NEWLINE">FS: 書式文字列は \n よりも %n を使用するべき (VA_FOR MAT_STRING_USES_NEWLINE)</a></h3>
783 821
784 822
785 <p> 823 <p>
786 この書式文字列には改行文字 (\n) が含まれています。 824 この書式文字列には改行文字 (\n) が含まれています。
787 一般に書式文字列には %n を使用することがより望ましいです。%n は、プラットホーム特有の行セパレータを作り出します。 825 一般的に書式文字列には %n を使用することがより望ましいです。%n は、プラットホーム特有の行セパレータを作り出します。
788 </p> 826 </p>
789 827
790 828
791 <h3><a name="GC_UNCHECKED_TYPE_IN_GENERIC_CALL">GC: 検査されない型への総称呼び出し (GC_UNCHECKE D_TYPE_IN_GENERIC_CALL)</a></h3> 829 <h3><a name="GC_UNCHECKED_TYPE_IN_GENERIC_CALL">GC: 検査されない型への総称呼び出し (GC_UNCHECKE D_TYPE_IN_GENERIC_CALL)</a></h3>
792 830
793 831
794 <p> 832 <p>
795 総称型パラメータからの特定の型が予想される Object 型をコンパイルするとき、総称型コレクションメソッドへの呼び出しは引数を渡します。 833 総称型パラメータからの特定の型が予想される Object 型をコンパイルするとき、総称型コレクションメソッドへの呼び出しは引数を渡します。
796 したがって、標準の Java 型システムも静的解析もパラメータとして渡されているオブジェクトが適切な型かどうかに関する有効な情報を提供できません 834 したがって、標準の Java 型システムも静的解析もパラメータとして渡されているオブジェクトが適切な型かどうかに関する有用な情報を提供できません
797 </p> 835 </p>
798 836
799 837
800 <h3><a name="HE_EQUALS_NO_HASHCODE">HE: equals メソッドは定義していますが hashCode メソッドは定義してい ないクラス (HE_EQUALS_NO_HASHCODE)</a></h3> 838 <h3><a name="HE_EQUALS_NO_HASHCODE">HE: equals メソッドは定義していますが hashCode メソッドは定義してい ないクラス (HE_EQUALS_NO_HASHCODE)</a></h3>
801 839
802 840
803 <p> 841 <p>
804 このクラスは、<code>equals(Object)</code> メソッドをオーバーライドしていますが、<code>hashCode</code> メソッド はオーバーライドしていません。 842 このクラスは、<code>equals(Object)</code> メソッドをオーバーライドしていますが、<code>hashCode</code> メソッド はオーバーライドしていません。
805 したがって、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という <code>hashCode</code> メソッドの汎用規約に違反するかも しれません。 843 したがって、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という <code>hashCode</code> メソッドの汎用規約に違反するかも しれません。
806 </p> 844 </p>
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 918
881 static CircularClassInitialization foo = InnerClassSingleton.singleton; 919 static CircularClassInitialization foo = InnerClassSingleton.singleton;
882 } 920 }
883 </pre></blockquote> 921 </pre></blockquote>
884 922
885 923
886 <h3><a name="IMSE_DONT_CATCH_IMSE">IMSE: 疑わしい IllegalMonitorStateException のキャッチ (IMSE_DONT_CATCH_IMSE)</a></h3> 924 <h3><a name="IMSE_DONT_CATCH_IMSE">IMSE: 疑わしい IllegalMonitorStateException のキャッチ (IMSE_DONT_CATCH_IMSE)</a></h3>
887 925
888 926
889 <p> 927 <p>
890 <code>IllegalMonitorStateException</code> は、一般に設計上の欠陥 (ロックを保持していないオブジェクトで <code> wait</code> メソッドまたは <code>notify</code> メソッドを呼び出す) の場合にだけスローされます。 928 <code>IllegalMonitorStateException</code> は、一般的に設計上の欠陥 (ロックを保持していないオブジェクトで <code >wait</code> メソッドまたは <code>notify</code> メソッドを呼び出す) の場合にだけスローされます。
891 </p> 929 </p>
892 930
893 931
894 <h3><a name="ISC_INSTANTIATE_STATIC_CLASS">ISC: static メソッドだけを提供するクラスの不必要なインスタンス 化 (ISC_INSTANTIATE_STATIC_CLASS)</a></h3> 932 <h3><a name="ISC_INSTANTIATE_STATIC_CLASS">ISC: static メソッドだけを提供するクラスの不必要なインスタンス 化 (ISC_INSTANTIATE_STATIC_CLASS)</a></h3>
895 933
896 934
897 <p> 935 <p>
898 このクラスは、static メソッドだけを提供するクラスのオブジェクトを作成しています。 936 このクラスは、static メソッドだけを提供するクラスのオブジェクトを作成しています。
899 このオブジェクトは作成する必要はありません。修飾子として直接クラス名を使用する static メソッドにアクセスしてください。 937 このオブジェクトは作成する必要はありません。修飾子として直接クラス名を使用する static メソッドにアクセスしてください。
900 </p> 938 </p>
(...skipping 20 matching lines...) Expand all
921 959
922 <h3><a name="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: 不変クラスのフィールドは final にすべき (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS)</a></h3> 960 <h3><a name="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: 不変クラスのフィールドは final にすべき (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS)</a></h3>
923 961
924 962
925 <p> 963 <p>
926 クラスは、net.jcip.annotations.Immutable または javax.annotation.concurrent.Immutable でア ノテートされています。 964 クラスは、net.jcip.annotations.Immutable または javax.annotation.concurrent.Immutable でア ノテートされています。
927 アノテーションのルールは、すべてのフィールドが final であることを義務づけます。 965 アノテーションのルールは、すべてのフィールドが final であることを義務づけます。
928 </p> 966 </p>
929 967
930 968
969 <h3><a name="ME_ENUM_FIELD_SETTER">ME: public 列挙型メソッドが無条件にフィールドを設定するPublic enum method unconditionally sets its field (ME_ENUM_FIELD_SETTER)</a></h3>
970
971
972 <p>
973 無条件に列挙型フィールドを設定している public 列挙型で public メソッドを宣言しています。
974 したがって、フィールドは悪意のあるコードや偶然別のパッケージによって変更できます。
975 可変列挙型フィールドが遅延初期化で使用されるかもしれないとしても外界へ暴露するバッドプラクティスです。
976 このメソッドを除去するかパッケージプライベートとして宣言することを考えてください。
977 </p>
978
979
980 <h3><a name="ME_MUTABLE_ENUM_FIELD">ME: 列挙型フィールドは public で可変である (ME_MUTABLE_ENUM _FIELD)</a></h3>
981
982
983 <p>
984 可変 public フィールドが public 列挙型の中に定義されています。
985 したがって、フィールドは悪意のあるコードや偶然別のパッケージによって変更できます。
986 可変列挙型フィールドが遅延初期化で使用されるかもしれないとしても外界へ暴露するバッドプラクティスです。
987 このメソッドを final およびパッケージプライベートとして宣言することを考えてください。
988 </p>
989
990
931 <h3><a name="NP_BOOLEAN_RETURN_NULL">NP: 戻り型が Boolean のメソッドが明示的に null を返している (NP _BOOLEAN_RETURN_NULL)</a></h3> 991 <h3><a name="NP_BOOLEAN_RETURN_NULL">NP: 戻り型が Boolean のメソッドが明示的に null を返している (NP _BOOLEAN_RETURN_NULL)</a></h3>
932 992
933 993
934 <p> 994 <p>
935 Boolean.TRUE、Boolean.FALSE、null を返すメソッドはいつ事故が起きてもおかしくないです。 995 Boolean.TRUE、Boolean.FALSE、null を返すメソッドはいつ事故が起きてもおかしくないです。
936 まるで論理型の値を返すかのように、このメソッドは呼び出される可能性があります 996 このメソッドは、まるで論理型の値を返すかのように呼び出されます
937 コンパイラは Boolean 値のオートアンボクシングを挿入します。 997 コンパイラは Boolean 値のオートアンボクシングを挿入します。
938 null 値が返されるなら NullPointerException が発生することになります。 998 null 値が返されるなら NullPointerException が発生することになります。
939 </p> 999 </p>
940 1000
941 1001
942 <h3><a name="NP_CLONE_COULD_RETURN_NULL">NP: null を返すかもしれない clone メソッド (NP_CLONE _COULD_RETURN_NULL)</a></h3> 1002 <h3><a name="NP_CLONE_COULD_RETURN_NULL">NP: null を返すかもしれない clone メソッド (NP_CLONE _COULD_RETURN_NULL)</a></h3>
943 1003
944 1004
945 <p> 1005 <p>
946 この <code>clone</code> メソッドは、いくつかの条件で null を返すと思われます。 1006 この <code>clone</code> メソッドは、いくつかの条件で null を返すと思われます。
(...skipping 29 matching lines...) Expand all
976 クラス名は単純でわかりやすいようにしてください。 1036 クラス名は単純でわかりやすいようにしてください。
977 頭文字や略語 (URLやHTMLなどのように略語がロング形式よりもはるかに広く使われている場合を除く) の使用は避けてください。 1037 頭文字や略語 (URLやHTMLなどのように略語がロング形式よりもはるかに広く使われている場合を除く) の使用は避けてください。
978 </p> 1038 </p>
979 1039
980 1040
981 <h3><a name="NM_CLASS_NOT_EXCEPTION">Nm: 例外クラスのように命名されているが、クラスは Exception から派生され ていない (NM_CLASS_NOT_EXCEPTION)</a></h3> 1041 <h3><a name="NM_CLASS_NOT_EXCEPTION">Nm: 例外クラスのように命名されているが、クラスは Exception から派生され ていない (NM_CLASS_NOT_EXCEPTION)</a></h3>
982 1042
983 1043
984 <p> 1044 <p>
985 このクラスは、例外クラスから派生されていないのにクラス名が「Exception」で終わっています。 1045 このクラスは、例外クラスから派生されていないのにクラス名が「Exception」で終わっています。
986 これは、このクラスのユーザに紛らわしいです 1046 これはこのクラスのユーザに紛らわしいです
987 </p> 1047 </p>
988 1048
989 1049
990 <h3><a name="NM_CONFUSING">Nm: 紛らわしい名前のメソッド (NM_CONFUSING)</a></h3> 1050 <h3><a name="NM_CONFUSING">Nm: 紛らわしい名前のメソッド (NM_CONFUSING)</a></h3>
991 1051
992 1052
993 <p> 1053 <p>
994 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。 1054 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。
995 </p> 1055 </p>
996 1056
(...skipping 29 matching lines...) Expand all
1026 1086
1027 <p> 1087 <p>
1028 メソッド名は、最初の文字は小文字にし、それに続く各単語の最初の文字を大文字にした動詞にすべきです。 1088 メソッド名は、最初の文字は小文字にし、それに続く各単語の最初の文字を大文字にした動詞にすべきです。
1029 </p> 1089 </p>
1030 1090
1031 1091
1032 <h3><a name="NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: クラス名は実装されたインタフェースの単純名を遮るべきではな い (NM_SAME_SIMPLE_NAME_AS_INTERFACE)</a></h3> 1092 <h3><a name="NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: クラス名は実装されたインタフェースの単純名を遮るべきではな い (NM_SAME_SIMPLE_NAME_AS_INTERFACE)</a></h3>
1033 1093
1034 1094
1035 <p> 1095 <p>
1036 このクラスまたはインタフェースは、インタフェースが異なるパッケージであるということを除いて実装された/拡張されたインタフェースと同一の単純名です (たとえば、 <code>alpha.Foo</code> が <code>beta.Foo</code> を継承しているような状況です)。 1096 このクラスまたはインタフェースは、インタフェースが異なるパッケージであるということを除いて実装された/拡張されたインタフェースと同一の単純名です (たとえば、< code>alpha.Foo</code> が <code>beta.Foo</code> を継承しているような状況です)。
1037 これは非常に紛らわしく、参照関係を解決するために import 文を見なければならなかったり、スーパークラスに存在するメソッドを誤ってオーバーライドしてしまった りする状況を作り出します 1097 これは非常に紛らわしく、参照関係を解決するために import 文を見なければならなかったり、スーパークラスのメソッドをオーバーライドしないで誤ってメソッドを定 義する状況を作り出します
1038 </p> 1098 </p>
1039 1099
1040 1100
1041 <h3><a name="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: クラス名はスーパークラスの単純名を遮るべきではない (N M_SAME_SIMPLE_NAME_AS_SUPERCLASS)</a></h3> 1101 <h3><a name="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: クラス名はスーパークラスの単純名を遮るべきではない (N M_SAME_SIMPLE_NAME_AS_SUPERCLASS)</a></h3>
1042 1102
1043 1103
1044 <p> 1104 <p>
1045 このクラスは、スーパークラスが異なるパッケージであるということを除いて、スーパークラスと同一の単純名をです (たとえば、<code>alpha.Foo</cod e> が <code>beta.Foo</code> を拡張します)。 1105 このクラスは、スーパークラスが異なるパッケージであるということを除いて、スーパークラスと同一の単純名をです (たとえば、<code>alpha.Foo</cod e> が <code>beta.Foo</code> を拡張します)。
1046 これは非常に紛らわしく、参照関係を解決するために import 文を見なければならなかったり、スーパークラスに存在するメソッドを誤ってオーバーライドしてしまった りする状況を作り出します 1106 これは非常に紛らわしく、参照関係を解決するために import 文を見なければならなかったり、スーパークラスのメソッドをオーバーライドしないで誤ってメソッドを定 義する状況を作り出します
1047 </p> 1107 </p>
1048 1108
1049 1109
1050 <h3><a name="NM_VERY_CONFUSING_INTENTIONAL">Nm: 非常に紛らわしい名前のメソッド (多分意図的) (NM_VERY _CONFUSING_INTENTIONAL)</a></h3> 1110 <h3><a name="NM_VERY_CONFUSING_INTENTIONAL">Nm: 非常に紛らわしい名前のメソッド (多分意図的) (NM_VERY _CONFUSING_INTENTIONAL)</a></h3>
1051 1111
1052 1112
1053 <p> 1113 <p>
1054 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。 1114 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。
1055 大文字の使い方が同一ならメソッドの1つが他のメソッドをオーバーライドするので、非常に紛らわしいです。 1115 大文字の使い方が同一ならメソッドの1つが他のメソッドをオーバーライドするので、非常に紛らわしいです。
1056 他のメソッドの存在から、これらのメソッドの両方の存在が意図的で、確実に混乱させていると思われます。 1116 他のメソッドの存在から、これらのメソッドの両方の存在が意図的で、確実に混乱させていると思われます。
1057 APIの凍結によって両方とも持たざるを得ない場合を除き、それらのうちの1つを削除しようと努力するべきです 1117 APIの凍結によって両方とも持たざるを得ない場合を除き、それらのうちの1つを除去しようと努力するべきです
1058 </p> 1118 </p>
1059 1119
1060 1120
1061 <h3><a name="NM_WRONG_PACKAGE_INTENTIONAL">Nm: パラメータの間違ったパッケージのためにスーパークラスのメソッドをオ ーバーライドしていないメソッド (NM_WRONG_PACKAGE_INTENTIONAL)</a></h3> 1121 <h3><a name="NM_WRONG_PACKAGE_INTENTIONAL">Nm: パラメータの間違ったパッケージのためにスーパークラスのメソッドをオ ーバーライドしていないメソッド (NM_WRONG_PACKAGE_INTENTIONAL)</a></h3>
1062 1122
1063 1123
1064 <p> 1124 <p>
1065 パラメータの型が正確にスーパークラスで対応するパラメータの型と合致していないので、サブクラスのメソッドはスーパークラスの類似したメソッドをオーバーライドしていま せん。<br> 1125 パラメータの型が正確にスーパークラスで対応するパラメータの型と合致していないので、サブクラスのメソッドはスーパークラスの類似したメソッドをオーバーライドしていま せん。<br>
1066 たとえば以下のようなコードです。 1126 たとえば以下のようなコードです。
1067 </p> 1127 </p>
(...skipping 21 matching lines...) Expand all
1089 類似しているが同一ではないシグネチャのメソッドを除去するか、非推奨にすることを強く検討するべきです。 1149 類似しているが同一ではないシグネチャのメソッドを除去するか、非推奨にすることを強く検討するべきです。
1090 </p> 1150 </p>
1091 1151
1092 1152
1093 <h3><a name="ODR_OPEN_DATABASE_RESOURCE">ODR: データベースリソースのクローズに失敗するかもしれないメソッド (OD R_OPEN_DATABASE_RESOURCE)</a></h3> 1153 <h3><a name="ODR_OPEN_DATABASE_RESOURCE">ODR: データベースリソースのクローズに失敗するかもしれないメソッド (OD R_OPEN_DATABASE_RESOURCE)</a></h3>
1094 1154
1095 1155
1096 <p> 1156 <p>
1097 このメソッドは、データベースリソース (たとえば、データベースコネクションや行セット) を作成していますが、どんなフィールドにも代入していないか、他のメソッドに も渡していないか、戻り値にもしていません。 1157 このメソッドは、データベースリソース (たとえば、データベースコネクションや行セット) を作成していますが、どんなフィールドにも代入していないか、他のメソッドに も渡していないか、戻り値にもしていません。
1098 そして、メソッドからのすべての経路でオブジェクトをクローズするように見えません。 1158 そして、メソッドからのすべての経路でオブジェクトをクローズするように見えません。
1099 メソッドからのすべての経路でデータベースリソースのクローズ失敗は良くない性能になるかもしれません 1159 メソッドからのすべての経路でデータベースリソースのクローズが失敗すると性能低下になることがあります
1100 データベースとの通信で問題があるアプリケーションの原因になる可能性があります。 1160 データベースとの通信で問題があるアプリケーションの原因になる可能性があります。
1101 </p> 1161 </p>
1102 1162
1103 1163
1104 <h3><a name="ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH">ODR: 例外経路でデータベースリソースのクロー ズに失敗するかもしれないメソッド (ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH)</a></h3> 1164 <h3><a name="ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH">ODR: 例外経路でデータベースリソースのクロー ズに失敗するかもしれないメソッド (ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH)</a></h3>
1105 1165
1106 1166
1107 <p> 1167 <p>
1108 このメソッドは、データベースリソース (たとえば、データベースコネクションや行セット) を作成していますが、どんなフィールドにも代入していないか、他のメソッドに も渡していないか、戻り値にもしていません。 1168 このメソッドは、データベースリソース (たとえば、データベースコネクションや行セット) を作成していますが、どんなフィールドにも代入していないか、他のメソッドに も渡していないか、戻り値にもしていません。
1109 そして、メソッドからのすべての例外経路でオブジェクトをクローズするように見えません。 1169 そして、メソッドからのすべての例外経路でオブジェクトをクローズするように見えません。
1110 メソッドからのすべての経路でデータベースリソースのクローズ失敗は良くない性能になるかもしれません 1170 メソッドからのすべての経路でデータベースリソースのクローズが失敗すると性能低下になることがあります
1111 データベースとの通信で問題があるアプリケーションの原因になる可能性があります。 1171 データベースとの通信で問題があるアプリケーションの原因になる可能性があります。
1112 </p> 1172 </p>
1113 1173
1114 1174
1115 <h3><a name="OS_OPEN_STREAM">OS: ストリームのクローズに失敗するかもしれないメソッド (OS_OPEN_STREAM)</a>< /h3> 1175 <h3><a name="OS_OPEN_STREAM">OS: ストリームのクローズに失敗するかもしれないメソッド (OS_OPEN_STREAM)</a>< /h3>
1116 1176
1117 1177
1118 <p> 1178 <p>
1119 このメソッドは、入出力ストリームオブジェクトを作成していますが、どんなフィールドにも代入していないしクローズするかもしれない別のメソッドにも渡していなくて、戻り 値にしてもいません。そして、メソッドからのすべての経路でクローズするように見えません。 1179 このメソッドは、入出力ストリームオブジェクトを作成していますが、どんなフィールドにも代入していないしクローズするかもしれない別のメソッドにも渡していなくて、戻り 値にしてもいません。そして、メソッドからのすべての経路でクローズするように見えません。
1120 これは、ファイルディスクリプタリークになるかもしれません 1180 これはファイルディスクリプタリークの原因になることがあります
1121 ストリームがクローズされることを確実にするために <code>finally</code> ブロックを使うことは、一般に良い考えです 1181 ストリームがクローズされることを確実にするために <code>finally</code> ブロックを使用することは一般的に良い考えです
1122 </p> 1182 </p>
1123 1183
1124 1184
1125 <h3><a name="OS_OPEN_STREAM_EXCEPTION_PATH">OS: 例外経路でストリームのクローズに失敗するかもしれないメソッド ( OS_OPEN_STREAM_EXCEPTION_PATH)</a></h3> 1185 <h3><a name="OS_OPEN_STREAM_EXCEPTION_PATH">OS: 例外経路でストリームのクローズに失敗するかもしれないメソッド ( OS_OPEN_STREAM_EXCEPTION_PATH)</a></h3>
1126 1186
1127 1187
1128 <p> 1188 <p>
1129 このメソッドは、入出力ストリームオブジェクトを作成していますが、どんなフィールドにも代入していないしクローズするかもしれない別のメソッドにも渡していないくて、戻 り値にしてもいません。そして、メソッドからのすべての可能性がある例外経路でクローズするように見えません。 1189 このメソッドは、入出力ストリームオブジェクトを作成していますが、どんなフィールドにも代入していないしクローズするかもしれない別のメソッドにも渡していないくて、戻 り値にしてもいません。そして、メソッドからのすべての可能性がある例外経路でクローズするように見えません。
1130 これはファイルディスクリプターリークになるかもしれません 1190 これはファイルディスクリプターリークの原因になることがあります
1131 ストリームがクローズされることを確実にするために <code>finally</code> ブロックを使うことは、一般に良い考えです 1191 ストリームがクローズされることを確実にするために <code>finally</code> ブロックを使用することは一般的に良い考えです
1132 </p> 1192 </p>
1133 1193
1134 1194
1135 <h3><a name="PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS">PZ: 繰り返しでエントリオブジェクトを再利用しな い (PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS)</a></h3> 1195 <h3><a name="PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS">PZ: 繰り返しでエントリオブジェクトを再利用しな い (PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS)</a></h3>
1136 1196
1137 1197
1138 <p> 1198 <p>
1139 このクラスは、Iterator と Map.Entry で基底 Map のビューを返すことを許可された両方の entrySet メソッドがあります。 1199 このクラスは、Iterator と Map.Entry で基底 Map のビューを返すことを許可された両方の entrySet メソッドがあります。
1140 この巧妙なアイデアは、Map 実装で使用されましたが、厄介なコーディング間違いの可能性を取り込みました。 1200 この巧妙なアイデアは、Map 実装で使用されましたが、厄介なコーディング間違いの可能性を取り込みました。
1141 Map <code>m</code> が entrySet のためのそのような反復子を返すならば、<code>c.addAll(m.entrySet())</c ode> はひどく間違っているでしょう。 1201 Map <code>m</code> が entrySet のためのそのような反復子を返すならば、<code>c.addAll(m.entrySet())</c ode> はひどく間違っているでしょう。
1142 OpenJDK 1.7 の すべての Map 実装はこれを回避するために書き直されました。 1202 OpenJDK 1.7 の すべての Map 実装はこれを回避するために書き直されました。
1143 </p> 1203 </p>
1144 1204
1145 1205
1146 <h3><a name="RC_REF_COMPARISON_BAD_PRACTICE">RC: 定数への疑わしい参照比較 (RC_REF_COMPARISON _BAD_PRACTICE)</a></h3> 1206 <h3><a name="RC_REF_COMPARISON_BAD_PRACTICE">RC: 定数への疑わしい参照比較 (RC_REF_COMPARISON _BAD_PRACTICE)</a></h3>
1147 1207
1148 1208
1149 <p> 1209 <p>
1150 このメソッドは、 参照値を == または != 演算子を使用して定数と比較しています。 1210 このメソッドは、 参照値を == または != 演算子を使用して定数と比較しています。
1151 この型のインスタンスを比較する正しい方法は、一般に <code>equals</code> メソッドです。 1211 一般的にこの型のインスタンスを比較する正しい方法は <code>equals</code> メソッドです。
1152 等価で識別可能なインスタンスを作成する可能性がありますが異なるオブジェクトなので == で比較しないでください。 1212 等価で識別可能なインスタンスを作成する可能性がありますが異なるオブジェクトなので == で比較しないでください。
1153 参照によって一般に比較されるべきではないクラスの例は、<code>java.lang.Integer</code> 、<code>java.lang.Float </code> などです。 1213 一般的に参照によって比較されるべきではないクラスの例は、<code>java.lang.Integer</code> 、<code>java.lang.Floa t</code> などです。
1154 </p> 1214 </p>
1155 1215
1156 1216
1157 <h3><a name="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN">RC: Boolean 値の疑わしい参照比較 (RC_ REF_COMPARISON_BAD_PRACTICE_BOOLEAN)</a></h3> 1217 <h3><a name="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN">RC: Boolean 値の疑わしい参照比較 (RC_ REF_COMPARISON_BAD_PRACTICE_BOOLEAN)</a></h3>
1158 1218
1159 1219
1160 <p> 1220 <p>
1161 このメソッドは、== または != 演算子を使用して2つの Boolean 値を比較しています。 1221 このメソッドは、== または != 演算子を使用して2つの Boolean 値を比較しています。
1162 一般には2つの Boolean 値 (<code>Boolean.TRUE</code> と <code>Boolean.FALSE</code>) だけですが 1222 一般的には2つの Boolean 値 (<code>Boolean.TRUE</code> と <code>Boolean.FALSE</code>) だけです が、
1163 <code>new Boolean(b)</code> コンストラクタを使用して他の Boolean オブジェクトを作成する可能性があります。 1223 <code>new Boolean(b)</code> コンストラクタを使用して他の Boolean オブジェクトを作成する可能性があります。
1164 そのようなオブジェクトを回避することは最高です。 1224 そのようなオブジェクトを回避することは最高です。
1165 しかし、それらが存在するなら、Boolean オブジェクトの等価性をチェックするために <code>.equals(...)</code> ではなく == また は != を使用しているなら異なる結果をもたらします。 1225 しかし、それらが存在するなら、Boolean オブジェクトの等価性をチェックするために <code>.equals(...)</code> ではなく == また は != を使用しているなら異なる結果をもたらします。
1166 </p> 1226 </p>
1167 1227
1168 1228
1169 <h3><a name="RR_NOT_CHECKED">RR: InputStream.read() の戻り値を無視しているメソッド (RR_NOT_CHEC KED)</a></h3> 1229 <h3><a name="RR_NOT_CHECKED">RR: InputStream.read() の戻り値を無視しているメソッド (RR_NOT_CHEC KED)</a></h3>
1170 1230
1171 1231
1172 <p> 1232 <p>
(...skipping 12 matching lines...) Expand all
1185 これは潜在的なバグで、多くのプログラムでは、入力ストリームからのスキップは、通常要求した完全なデータ量をスキップをしますが、散発的に失敗することがあります。 1245 これは潜在的なバグで、多くのプログラムでは、入力ストリームからのスキップは、通常要求した完全なデータ量をスキップをしますが、散発的に失敗することがあります。
1186 しかしながら、バッファードストリーム での <code>skip</code> メソッドはバッファのデータをスキップするので要求されたバイト数のスキップは常に失 敗します。 1246 しかしながら、バッファードストリーム での <code>skip</code> メソッドはバッファのデータをスキップするので要求されたバイト数のスキップは常に失 敗します。
1187 </p> 1247 </p>
1188 1248
1189 1249
1190 <h3><a name="RV_NEGATING_RESULT_OF_COMPARETO">RV: compareTo()/compare() の結果を無効にす る (RV_NEGATING_RESULT_OF_COMPARETO)</a></h3> 1250 <h3><a name="RV_NEGATING_RESULT_OF_COMPARETO">RV: compareTo()/compare() の結果を無効にす る (RV_NEGATING_RESULT_OF_COMPARETO)</a></h3>
1191 1251
1192 1252
1193 <p> 1253 <p>
1194 このコードは、<code>compareTo</code> または <code>compare</code> メソッドの戻り値を無効にしています。 1254 このコードは、<code>compareTo</code> または <code>compare</code> メソッドの戻り値を無効にしています。
1195 これは疑わしいか間違ったプログラミングプラクティスです。戻り値が Integer.MIN_VALUE なので、戻り値を無効にすることは結果の符号を無効にしません 1255 これは疑わしいかバッドプログラミングプラクティスです。戻り値が Integer.MIN_VALUE なので、戻り値を無効にすることは結果の符号を無効にしません。
1196 結果を無効にするのではなくオペランドの順序を逆にすることによって、同じ意図した結果を得ることができます。 1256 結果を無効にするのではなくオペランドの順序を逆にすることによって、同じ意図した結果を得ることができます。
1197 </p> 1257 </p>
1198 1258
1199 1259
1200 <h3><a name="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE">RV: 例外的戻り値を無視しているメソッド (RV_RET URN_VALUE_IGNORED_BAD_PRACTICE)</a></h3> 1260 <h3><a name="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE">RV: 例外的戻り値を無視しているメソッド (RV_RET URN_VALUE_IGNORED_BAD_PRACTICE)</a></h3>
1201 1261
1202 1262
1203 <p> 1263 <p>
1204 このメソッドはチェックされていない値を返しています。 1264 このメソッドはチェックされていない値を返しています。
1205 戻り値は異常か予想外の実行結果を示す可能性があるのでチェックするべきです。 1265 戻り値は異常か予想外の実行結果を示す可能性があるのでチェックするべきです。
1206 たとえば、<code>File.delete()</code> はファイルをうまく削除できなかったなら、例外をスローするのではなく false を返します。 1266 たとえば、<code>File.delete()</code> はファイルをうまく削除できなかったなら、例外をスローするのではなく false を返します。
1207 結果をチェックしないなら例外的戻り値を返すメソッドの呼び出しで予想外の振る舞いの合図に気づきません。 1267 結果をチェックしないなら例外的戻り値を返すメソッドの呼び出しで予想外の振る舞いの合図に気づきません。
1208 </p> 1268 </p>
1209 1269
1210 1270
1211 <h3><a name="SI_INSTANCE_BEFORE_FINALS_ASSIGNED">SI: スタティックイニシャライザは、すべての static final フィールドが代入される前にインスタンスを作成する (SI_INSTANCE_BEFORE_FINALS_ASSIGNED)</a></h3> 1271 <h3><a name="SI_INSTANCE_BEFORE_FINALS_ASSIGNED">SI: スタティックイニシャライザは、すべての static final フィールドが代入される前にインスタンスを作成する (SI_INSTANCE_BEFORE_FINALS_ASSIGNED)</a></h3>
1212 1272
1213 1273
1214 <p> 1274 <p>
1215 すべての static final フィールドが初期化される前に、スタティックイニシャライザがクラスのインスタンスを作成します 1275 すべての static final フィールドが初期化される前にスタティックイニシャライザがクラスのインスタンスを作成します
1216 </p> 1276 </p>
1217 1277
1218 1278
1219 <h3><a name="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">SW: Swing メソッドは AWT イベントデ ィスパッチスレッドから呼び出す必要がある (SW_SWING_METHODS_INVOKED_IN_SWING_THREAD)</a></h3> 1279 <h3><a name="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">SW: Swing メソッドは AWT イベントデ ィスパッチスレッドから呼び出す必要がある (SW_SWING_METHODS_INVOKED_IN_SWING_THREAD)</a></h3>
1220 1280
1221 1281
1222 <p> 1282 <p>
1223 (<a href="http://web.archive.org/web/20090526170426/http://java.sun.com/develope r/JDCTechTips/2003/tt1208.html">From JDC Tech Tip</a>)<br> 1283 (<a href="http://web.archive.org/web/20090526170426/http://java.sun.com/develope r/JDCTechTips/2003/tt1208.html">From JDC Tech Tip</a>)<br>
1224 に解説されているとおり、Swing のメソッド、<code>show</code> メソッド、<code>setVisible</code> メソッド、<cod e>pack</code> メソッドは、フレームのために関連したピアを作成します 1284 に解説されているとおり、Swing のメソッド、<code>show</code> メソッド、<code>setVisible</code> メソッド、<cod e>pack</code> メソッドは、フレームのための関連したピアを作成します
1225 ピアの作成で、システムはイベントディスパッチスレッドを作成します。 1285 ピアの作成で、システムはイベントディスパッチスレッドを作成します。
1226 これが問題になることがあります。なぜなら <code>pack</code> メソッドと <code>validate</code> メソッドがまだ処理中でもイ ベントディスパッチスレッドがリスナに通知できるからです。 1286 これが問題になることがあります。なぜなら <code>pack</code> メソッドと <code>validate</code> メソッドがまだ処理中でもイ ベントディスパッチスレッドがリスナに通知できるからです。
1227 この状況は、2つのスレッドが Swing コンポーネントにアクセスする可能性があり、デッドロックや、その他のスレッドに関する問題になる可能性がある重大な欠陥です 。 1287 この状況は、2つのスレッドが Swing コンポーネントにアクセスする可能性があり、デッドロックや、その他のスレッドに関する問題になる可能性がある重大な欠陥です 。
1228 <code>pack</code> メソッドの呼び出しはコンポーネントを実体化させます。実体化しているときに、イベントディスパッチスレッドがリスナへの通知を開始 する可能性があります。 1288 <code>pack</code> メソッドの呼び出しはコンポーネントを実体化させます。実体化しているときに、イベントディスパッチスレッドがリスナへの通知を開始 する可能性があります。
1229 </p> 1289 </p>
1230 1290
1231 1291
1232 <h3><a name="SE_BAD_FIELD">Se: 直列化可能クラスの非 transient で非直列化可能なインスタンスフィールド (SE_BAD_ FIELD)</a></h3> 1292 <h3><a name="SE_BAD_FIELD">Se: 直列化可能クラスの非 transient で非直列化可能なインスタンスフィールド (SE_BAD_ FIELD)</a></h3>
1233 1293
1234 1294
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 コンパレータが <code>TreeMap</code> のような順序付きコレクションを構築するために使われるなら、コンパレータが直列化可能な場合だけ、<cod e>TreeMap</code> は直列化可能です。 1331 コンパレータが <code>TreeMap</code> のような順序付きコレクションを構築するために使われるなら、コンパレータが直列化可能な場合だけ、<cod e>TreeMap</code> は直列化可能です。
1272 大部分のコンパレータがほとんど状態を持たないとしても直列化可能にすることは簡単で良い防衛的なプログラミングです。 1332 大部分のコンパレータがほとんど状態を持たないとしても直列化可能にすることは簡単で良い防衛的なプログラミングです。
1273 </p> 1333 </p>
1274 1334
1275 1335
1276 <h3><a name="SE_INNER_CLASS">Se: 直列化可能な内部クラス (SE_INNER_CLASS)</a></h3> 1336 <h3><a name="SE_INNER_CLASS">Se: 直列化可能な内部クラス (SE_INNER_CLASS)</a></h3>
1277 1337
1278 1338
1279 <p> 1339 <p>
1280 この直列化可能なクラスは内部クラスです。内部クラスを直列化しようとすると関連した外部クラスのインスタンスも直列化します。 1340 この直列化可能なクラスは内部クラスです。内部クラスを直列化しようとすると関連した外部クラスのインスタンスも直列化します。
1281 外部クラスのインスタンスは直列化可能なので失敗しませんが、意図したことよりもっとずっと多くのデータを直列化するかもしれません 1341 外部クラスのインスタンスは直列化可能なので失敗しません。しかし、意図していたよりももっと多くのデータを直列化するかもしれません
1282 できれば、内部クラスを static にして問題を解決するべきです。 1342 できれば、内部クラスを static にして問題を解決するべきです。
1283 </p> 1343 </p>
1284 1344
1285 1345
1286 <h3><a name="SE_NONFINAL_SERIALVERSIONID">Se: serialVersionUID が final ではない (SE_ NONFINAL_SERIALVERSIONID)</a></h3> 1346 <h3><a name="SE_NONFINAL_SERIALVERSIONID">Se: serialVersionUID が final ではない (SE_ NONFINAL_SERIALVERSIONID)</a></h3>
1287 1347
1288 1348
1289 <p> 1349 <p>
1290 このクラスは、final でない <code>serialVersionUID</code> フィールドを定義しています。 1350 このクラスは、final でない <code>serialVersionUID</code> フィールドを定義しています。
1291 直列化を目的としてバージョン UID を指定することを意図しているならフィールドは final とすべきです。 1351 直列化を目的としてバージョン UID を指定することを意図しているならフィールドは final とすべきです。
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 1395
1336 <p> 1396 <p>
1337 <code>readResolve</code> メソッドが直列化機構で認識されるためには戻り値の型が <code>Object</code> で宣言されなけれ ばなりません。 1397 <code>readResolve</code> メソッドが直列化機構で認識されるためには戻り値の型が <code>Object</code> で宣言されなけれ ばなりません。
1338 </p> 1398 </p>
1339 1399
1340 1400
1341 <h3><a name="SE_TRANSIENT_FIELD_NOT_RESTORED">Se: 直列化復元によって設定されない transient フィール ド (SE_TRANSIENT_FIELD_NOT_RESTORED)</a></h3> 1401 <h3><a name="SE_TRANSIENT_FIELD_NOT_RESTORED">Se: 直列化復元によって設定されない transient フィール ド (SE_TRANSIENT_FIELD_NOT_RESTORED)</a></h3>
1342 1402
1343 1403
1344 <p> 1404 <p>
1345 このクラスには複数の場所で更新されるフィールドがあります。したがって、このクラスの状態の一部であると思われます 1405 このクラスには複数の場所で更新されるフィールドがあります。したがって、このクラスの状態の一部だと思われます
1346 しかしながら、フィールドは transient と宣言しているので、 readObject/readResolve で値が設定されません。 1406 しかしながら、フィールドは transient と宣言しているので、 readObject/readResolve で値が設定されません。
1347 クラスの直列化復元されたインスタンスにはデフォルト値が設定されます。 1407 クラスの直列化復元されたインスタンスにはデフォルト値が設定されます。
1348 </p> 1408 </p>
1349 1409
1350 1410
1351 <h3><a name="SE_NO_SERIALVERSIONID">SnVI: Serializable なクラスが serialVersionUID を定 義していない (SE_NO_SERIALVERSIONID)</a></h3> 1411 <h3><a name="SE_NO_SERIALVERSIONID">SnVI: Serializable なクラスが serialVersionUID を定 義していない (SE_NO_SERIALVERSIONID)</a></h3>
1352 1412
1353 1413
1354 <p> 1414 <p>
1355 このクラスは <code>Serializable</code> インタフェースを実装していますが、<code>serialVersionUID</code> フィールドを定義していません。 1415 このクラスは <code>Serializable</code> インタフェースを実装していますが、<code>serialVersionUID</code> フィールドを定義していません。
1356 .class オブジェクトへの参照を追加するのと同じくらい簡単な変更でクラスに合成フィールドを追加します。 1416 .class オブジェクトへの参照を追加するのと同じくらい簡単な変更でクラスに合成フィールドを追加します。
1357 それは、残念ながら暗黙の <code>serialVersionUID</code> を変えます (たとえば、<code>String.class</code> への参照を追加すると、<code>class$java$lang$String</code> という static フィールドを生成します)。 1417 それは、残念ながら暗黙の <code>serialVersionUID</code> を変えます (たとえば、<code>String.class</code> への参照を追加すると、<code>class$java$lang$String</code> という static フィールドを生成します)。
1358 また、バイトコードコンパイラへの異なるソースコードは、クラスオブジェクトまたは内部クラスに参照のために生成される合成変数のために異なる命名規則を使用するかもしれ ません 1418 また、バイトコードコンパイラへの異なるソースコードは、クラスオブジェクトまたは内部クラスを参照するために生成される合成変数のために異なる命名規則を使用するかもし れません
1359 バージョンを横断する Serializable の相互運用性を保証するために、明示的に、serialVersionUID を追加することを検討してください。 1419 バージョンを横断する Serializable の相互運用性を保証するために明示的に serialVersionUID を追加することを検討してください。
1360 </p> 1420 </p>
1361 1421
1362 1422
1363 <h3><a name="UI_INHERITANCE_UNSAFE_GETRESOURCE">UI: クラスが拡張されるなら getResource の使い方 は安全ではないかもしれない (UI_INHERITANCE_UNSAFE_GETRESOURCE)</a></h3> 1423 <h3><a name="UI_INHERITANCE_UNSAFE_GETRESOURCE">UI: クラスが拡張されるなら getResource の使い方 は安全ではないかもしれない (UI_INHERITANCE_UNSAFE_GETRESOURCE)</a></h3>
1364 1424
1365 1425
1366 <p> 1426 <p>
1367 このクラスが別のパッケージによって拡張されるなら、<code>this.getClass().getResource(...)</code> の呼び出しは予想外 の結果をもたらす可能性があります。 1427 このクラスが別のパッケージによって拡張されるなら、<code>this.getClass().getResource(...)</code> の呼び出しは予想外 の結果をもたらす可能性があります。
1368 </p> 1428 </p>
1369 1429
1370 1430
1371 <h3><a name="BC_IMPOSSIBLE_CAST">BC: 不可能なキャスト (BC_IMPOSSIBLE_CAST)</a></h3> 1431 <h3><a name="BC_IMPOSSIBLE_CAST">BC: 不可能なキャスト (BC_IMPOSSIBLE_CAST)</a></h3>
1372 1432
1373 1433
1374 <p> 1434 <p>
1375 このキャストは、常に ClassCastException をスローします。 1435 このキャストは、常に ClassCastException をスローします。
1376 FindBugs は、instanceof チェックから型情報を調査して、メソッドからの戻り値とフィールドからロードされた値の型について、より多くの正確な情報を 使用します。 1436 FindBugs は、instanceof チェックから型情報を調査して、メソッドからの戻り値とフィールドからロードされた値の型について、より多くの正確な情報を 使用します。
1377 したがって、宣言された変数の型にはより多くの正確な情報があるかもしれないしれません。 1437 したがって、宣言された変数の型にはより多くの正確な情報があるかもしれないしれません。
1378 そして、キャストが常に実行時例外をスローするのか判定するために使用する可能性があります 1438 また、キャストが常に実行時例外をスローするのかを決定するために利用する可能性があります
1379 </p> 1439 </p>
1380 1440
1381 1441
1382 <h3><a name="BC_IMPOSSIBLE_DOWNCAST">BC: 不可能なダウンキャスト (BC_IMPOSSIBLE_DOWNCAST)</a ></h3> 1442 <h3><a name="BC_IMPOSSIBLE_DOWNCAST">BC: 不可能なダウンキャスト (BC_IMPOSSIBLE_DOWNCAST)</a ></h3>
1383 1443
1384 1444
1385 <p> 1445 <p>
1386 このキャストは、常に ClassCastException をスローします。 1446 このキャストは、常に ClassCastException をスローします。
1387 解析はキャストしている値の正確な型がわかっていると信じています。 1447 解析はキャストしている値の正確な型がわかっていると信じています。
1388 そして、サブタイプへダウンキャストしようとする試みは、ClassCastException のスローによって常に失敗します。 1448 そして、サブタイプへダウンキャストしようとする試みは、ClassCastException のスローによって常に失敗します。
1389 </p> 1449 </p>
1390 1450
1391 1451
1392 <h3><a name="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArray メソッドの結果の不可能なダウンキャスト (BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY)</a></h3> 1452 <h3><a name="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArray メソッドの結果の不可能なダウンキャスト (BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY)</a></h3>
1393 1453
1394 1454
1395 <p> 1455 <p>
1396 このコードは、以下のように、<code>Object[]</code> より特定の型のコレクションで <code>toArray</code> メソッドを呼び出 す結果をキャストしています。 1456 このコードは、以下のように、<code>Object[]</code> より特定の型のコレクションで <code>toArray</code> メソッドを呼び出 す結果をキャストしています。
1397 </p> 1457 </p>
1398 <blockquote><pre> 1458 <blockquote><pre>
1399 String[] getAsArray(Collection&lt;String&gt; c) { 1459 String[] getAsArray(Collection&lt;String&gt; c) {
1400 return (String[]) c.toArray(); 1460 return (String[]) c.toArray();
1401 } 1461 }
1402 </pre></blockquote> 1462 </pre></blockquote>
1403 <p> 1463 <p>
1404 これは通常ClassCastException をスローして失敗します。 1464 これは通常 ClassCastException をスローして失敗します。
1405 ほとんどすべてのコレクションの <code>toArray</code> メソッドは、<code>Object[]</code> を返します。 1465 ほとんどすべてのコレクションの <code>toArray</code> メソッドは、<code>Object[]</code> を返します。
1406 Collection オブジェクトは宣言された総称型コレクションの参照がないので、本当に何もできません。 1466 Collection オブジェクトは宣言された総称型コレクションの参照がないので、本当に何もできません。
1407 コレクションから特定の型の配列を得る正しい方法は、<code>c.toArray(new String[]);</code> または <code>c.toArr ay(new String[c.size()]);</code> (後者はわずかにより効率的です) を使うことです 1467 コレクションから特定の型の配列を得る正しい方法は、<code>c.toArray(new String[]);</code> または <code>c.toArr ay(new String[c.size()]);</code> (後者はわずかにより効率的です) を使用することです
1408 これに対する1つの共通の知られている例外があります。 1468 これに対する1つの共通の知られている例外があります。
1409 <code>Arrays.asList(...)</code>によって返されるリストの <code>toArray()</code> メソッドは、共変な配列を返 します 1469 <code>Arrays.asList(...)</code>によって返されるリストの <code>toArray()</code> メソッドは共変型配列を返し ます
1410 たとえば、<code>Arrays.asArray(new String[] { "a" }).toArray()</code> は <code>String []</code> を返します。 1470 たとえば、<code>Arrays.asArray(new String[] { "a" }).toArray()</code> は <code>String []</code> を返します。
1411 FindBugs はそのようなケースを検出して抑止しようとしますが、いくつか見落とすかもしれません 1471 FindBugs はそのようなケースを検出して抑止しようとしますが、見落としているかもしれません
1412 </p> 1472 </p>
1413 1473
1414 1474
1415 <h3><a name="BC_IMPOSSIBLE_INSTANCEOF">BC: 常に false を返す instanceof (BC_IMPOSSIBL E_INSTANCEOF)</a></h3> 1475 <h3><a name="BC_IMPOSSIBLE_INSTANCEOF">BC: 常に false を返す instanceof (BC_IMPOSSIBL E_INSTANCEOF)</a></h3>
1416 1476
1417 1477
1418 <p> 1478 <p>
1419 この instanceof は常に false を返します。これは安全で、誤解や論理エラーを指摘していないことを確認してください。 1479 この instanceof は常に false を返します。これは安全で、誤解や論理エラーを指摘していないことを確認してください。
1420 </p> 1480 </p>
1421 1481
(...skipping 23 matching lines...) Expand all
1445 for(int i = 0; i &lt; 4; i++) 1505 for(int i = 0; i &lt; 4; i++)
1446 result = ((result &lt;&lt; 8) + (b[i] &amp; 0xff)); 1506 result = ((result &lt;&lt; 8) + (b[i] &amp; 0xff));
1447 </pre></blockquote> 1507 </pre></blockquote>
1448 1508
1449 1509
1450 <h3><a name="BIT_AND">BIT: 互換性のないビットマスク (BIT_AND)</a></h3> 1510 <h3><a name="BIT_AND">BIT: 互換性のないビットマスク (BIT_AND)</a></h3>
1451 1511
1452 1512
1453 <p> 1513 <p>
1454 このメソッドは、<i>(e &amp; C)</i> 形式の式を <i>D</i> と比較しています。 1514 このメソッドは、<i>(e &amp; C)</i> 形式の式を <i>D</i> と比較しています。
1455 定数 <i>C</i> <i>D</i> の特定の値と常に等しくないことを比較します。論理エラーかタイプミスかもしれません。 1515 定数 <i>C</i> の特定の値と <i>D</i> ために常に等しくないことを比較します。論理エラーかタイプミスかもしれません。
1456 </p> 1516 </p>
1457 1517
1458 1518
1459 <h3><a name="BIT_AND_ZZ">BIT: ((...) & 0) == 0 なのか確かめている (BIT_AND_ZZ)</a></h3> 1519 <h3><a name="BIT_AND_ZZ">BIT: ((...) & 0) == 0 なのか確かめている (BIT_AND_ZZ)</a></h3>
1460 1520
1461 1521
1462 <p> 1522 <p>
1463 このメソッドは、<i>(e &amp; 0)</i> 形式の式を0と比較しています。それは、常に等価であることを比較します。論理エラーかタイプミスかもしれません 。 1523 このメソッドは、<i>(e &amp; 0)</i> 形式の式を0と比較しています。それは、常に等価であることを比較します。論理エラーかタイプミスかもしれません 。
1464 </p> 1524 </p>
1465 1525
1466 1526
1467 <h3><a name="BIT_IOR">BIT: 互換性のないビットマスク (BIT_IOR)</a></h3> 1527 <h3><a name="BIT_IOR">BIT: 互換性のないビットマスク (BIT_IOR)</a></h3>
1468 1528
1469 1529
1470 <p> 1530 <p>
1471 このメソッドは、<code>(e | C)</code> 形式の式を <code>D</code> と比較しています。 1531 このメソッドは、<code>(e | C)</code> 形式の式を <code>D</code> と比較しています。
1472 定数 <i>C</i> <i>D</i> の特定の値と常に等しくないことを比較します。論理エラーかタイプミスかもしれません。 1532 定数 <i>C</i> の特定の値と <i>D</i> のために常に等しくないことを比較します。論理エラーかタイプミスかもしれません。
1473 </p> 1533 </p>
1474 <p> 1534 <p>
1475 典型的に、このバグは、ビットセットで帰属関係のテストを実行したいコードで発生します。 1535 典型的に、このバグは、ビットセットで帰属関係のテストを実行したいコードで発生します。
1476 しかし、ビット論理積演算子 ("&amp;") の代わりにビット論理和演算子 ("|") を使用しています。 1536 しかし、ビット論理積演算子 ("&amp;") の代わりにビット論理和演算子 ("|") を使用しています。
1477 </p> 1537 </p>
1478 1538
1479 1539
1480 <h3><a name="BIT_IOR_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット論理和 (BIT_IOR_OF_SIGNED_BYT E)</a></h3> 1540 <h3><a name="BIT_IOR_OF_SIGNED_BYTE">BIT: 符号付きバイト値のビット論理和 (BIT_IOR_OF_SIGNED_BYT E)</a></h3>
1481 1541
1482 1542
(...skipping 23 matching lines...) Expand all
1506 </pre></blockquote> 1566 </pre></blockquote>
1507 1567
1508 1568
1509 <h3><a name="BIT_SIGNED_CHECK_HIGH_BIT">BIT: ビット演算の符号をチェックする (BIT_SIGNED_CHECK_H IGH_BIT)</a></h3> 1569 <h3><a name="BIT_SIGNED_CHECK_HIGH_BIT">BIT: ビット演算の符号をチェックする (BIT_SIGNED_CHECK_H IGH_BIT)</a></h3>
1510 1570
1511 1571
1512 <p> 1572 <p>
1513 このメソッドは、<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> のような式を比較しています。 1573 このメソッドは、<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> のような式を比較しています。
1514 ビット演算をより大きい演算子で比較することは、予想外の結果 (もちろん、<code>SWT.SELECTED</code> の値による) の原因になる可能性があ ります。 1574 ビット演算をより大きい演算子で比較することは、予想外の結果 (もちろん、<code>SWT.SELECTED</code> の値による) の原因になる可能性があ ります。
1515 <code>SWT.SELECTED</code> が負数であるなら、これはバグの候補です。 1575 <code>SWT.SELECTED</code> が負数であるなら、これはバグの候補です。
1516 <code>SWT.SELECTED</code> が負ではないとしても、'&gt; 0' の代わりに '!= 0' を使うことは良いプラクティスと思われます 1576 <code>SWT.SELECTED</code> が負ではないとしても、'&gt; 0' の代わりに '!= 0' を使用することは良いプラクティスと思われま
1517 </p> 1577 </p>
1518 <p> 1578 <p>
1519 Boris Bokowski 1579 Boris Bokowski
1520 </p> 1580 </p>
1521 1581
1522 1582
1523 <h3><a name="BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: スーパークラスの Adapter で実装されるメソッドを誤ってオ ーバーライドしているクラス (BOA_BADLY_OVERRIDDEN_ADAPTER)</a></h3> 1583 <h3><a name="BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: スーパークラスの Adapter で実装されるメソッドを誤ってオ ーバーライドしているクラス (BOA_BADLY_OVERRIDDEN_ADAPTER)</a></h3>
1524 1584
1525 1585
1526 <p> 1586 <p>
1527 このメソッドは、スーパークラスで実装されているメソッドをオーバーライドしています。 1587 このメソッドは、スーパークラスで実装されているメソッドをオーバーライドしています。
1528 スーパークラスは、java.awt.event や javax.swing.event パッケージで定義されているリスナを実装する Adapter です。 1588 スーパークラスは、java.awt.event や javax.swing.event パッケージで定義されているリスナを実装する Adapter です。
1529 その結果、イベントが発生するときこのメソッドは呼び出されません。 1589 その結果、イベントが発生するときこのメソッドは呼び出されません。
1530 </p> 1590 </p>
1531 1591
1532 1592
1593 <h3><a name="BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: シフト演算の正しくない構文解析の可能性がある (BSHIFT_W RONG_ADD_PRIORITY)</a></h3>
1594
1595
1596 <p>
1597 コードは (x &lt;&lt; 8 + y) のような操作を行います。
1598 これは正しいかもしれませんが、おそらく (x &lt;&lt; 8) + y を行うことを意図していました。
1599 しかし、シフト演算は優先順位が低いので、実際には x &lt;&lt; (8 + y) として構文解析されます。
1600 </p>
1601
1602
1533 <h3><a name="ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32ビット int の-31から31の範囲を超えた量によるシフト (I CAST_BAD_SHIFT_AMOUNT)</a></h3> 1603 <h3><a name="ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32ビット int の-31から31の範囲を超えた量によるシフト (I CAST_BAD_SHIFT_AMOUNT)</a></h3>
1534 1604
1535 1605
1536 <p> 1606 <p>
1537 このコードは、32ビット int の-31から31の範囲を超えた量でシフトを実行しています。 1607 このコードは、32ビット int の-31から31の範囲を超えた量でシフトを実行しています。
1538 これの効果は、どのくらいシフトするのかを決めるために整数値の下位5ビット (32で割った余り) を使うことです (たとえば、40ビットでシフトすることは8ビット でシフトすることと同じで、32ビットでシフトすることは0ビットでシフトすることと同じです)。 1608 これの効果は、どのくらいシフトするのかを決めるために整数値の下位5ビット (32で割った余り) を使用することです (たとえば、40ビットでシフトすることは8ビ ットでシフトすることと同じで、32ビットでシフトすることは0ビットでシフトすることと同じです)。
1539 これは、おそらく期待されたことではなく、少なくとも紛らわしいです。 1609 これはおそらく期待されたことではなく、少なくとも紛らわしいです。
1540 </p> 1610 </p>
1541 1611
1542 1612
1543 <h3><a name="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: プリミティブ値が3項演算子のためにア ンボクシングされて、型変換される (BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR)</a></h3> 1613 <h3><a name="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: return 文に無駄なインクリメントがある (DL S_DEAD_LOCAL_INCREMENT_IN_RETURN)</a></h3>
1544 1614
1545 1615
1546 <p> 1616 <p>
1547 ラップされたプリミティブ値は、3項演算子 (<code> b ? e1 : e2</code>) の評価の一部として、別のプリミティブ型にアンボクシングされて変 換されます。
1548 Java 言語仕様では、<code>e1</code> と <code>e2</code> がラップされた数値なら値はアンボクシングされ、共通の型へと変換/型変 換されます
1549 (たとえば、<code>e1</code> が <code>Integer</code> で、<code>e2</code> が <code>Float</co de> なら <code>e1</code> はアンボクシング (<code>int</code> に変換) され、<code>float</code> に変換 され、ボクシング (<code>Float</code> に変換) されます)。
1550 JLS セクション15.25を参照してください。
1551 </p>
1552
1553
1554 <h3><a name="CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() は Integer .MIN_VALUE を返す (CO_COMPARETO_RESULTS_MIN_VALUE)</a></h3>
1555
1556
1557 <p>
1558 いくつかの状況下では、この <code>compareTo</code> または <code>compare</code> メソッドは Integer.MIN_ VALUE を返します。それは、非常に間違ったプラクティスです。
1559 <code>compareTo</code> メソッドの戻り値で重要なことは結果の符号だけです。
1560 しかし、結果の符号を無効にすることを期待して、<code>compareTo</code> メソッドの戻り値を無効にすることがあります。
1561 戻り値が Integer.MIN_VALUE である場合を除き、Integer.MIN_VALUE よりも-1を返します。
1562 </p>
1563
1564
1565 <h3><a name="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: return 文に役に立たないインクリメントがある (DLS_DEAD_LOCAL_INCREMENT_IN_RETURN)</a></h3>
1566
1567
1568 <p>
1569 <code>return x++;</code> のような return 文があります。 1617 <code>return x++;</code> のような return 文があります。
1570 接頭辞インクリメント/デクリメントは 式の値に影響を与えないので、インクリメント/デクリメントは効果がありません。 1618 接頭辞インクリメント/デクリメントは 式の値に影響を与えないので、インクリメント/デクリメントは効果がありません。
1571 この文が正しいのか確かめてください。 1619 この文が正しいのか確かめてください。
1572 </p> 1620 </p>
1573 1621
1574 1622
1575 <h3><a name="DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: クラスリテラルの無効な代入 (DLS_DEAD_STORE _OF_CLASS_LITERAL)</a></h3> 1623 <h3><a name="DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: クラスリテラルの無効な代入 (DLS_DEAD_STORE _OF_CLASS_LITERAL)</a></h3>
1576 1624
1577 1625
1578 <p> 1626 <p>
1579 この命令は変数にクラスリテラルを代入していますが、決して使われません。<br> 1627 この命令は変数にクラスリテラルを代入していますが、決して使われません。<br>
1580 <a href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">The behavior of t his differs in Java 1.4 and in Java 5</a><br> 1628 <a href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">The behavior of t his differs in Java 1.4 and in Java 5</a><br>
1581 J2SE 1.4 およびそれ以前のバージョンでは、<code>Foo.class</code> への参照は <code>Foo</code> のためのスタティッ クイニシャライザがすでに実行されていないなら実行することを強制します 1629 J2SE 1.4 およびそれ以前のバージョンでは、<code>Foo.class</code> への参照は <code>Foo</code> のためのスタティッ クイニシャライザが既に実行されていないなら実行することを強制します
1582 J2SE 5.0 ではそうしません。 1630 J2SE 5.0 ではそうしません。
1583 </p> 1631 </p>
1584 <p> 1632 <p>
1585 より多くの詳細と例と J2SE 5.0 のクラスの強制的な初期化の方法の提案は Sun の <a href="//java.sun.com/j2se/1.5.0 /compatibility.html#literal">article on Java SE compatibility</a> を参照してください。 1633 より多くの詳細と例と J2SE 5.0 のクラスの強制的な初期化の方法の提案は Sun の <a href="//java.sun.com/j2se/1.5.0 /compatibility.html#literal">article on Java SE compatibility</a> を参照してください。
1586 </p> 1634 </p>
1587 1635
1588 1636
1589 <h3><a name="DLS_OVERWRITTEN_INCREMENT">DLS: 上書きされたインクリメント (DLS_OVERWRITTEN_INCR EMENT)</a></h3> 1637 <h3><a name="DLS_OVERWRITTEN_INCREMENT">DLS: 上書きされたインクリメント (DLS_OVERWRITTEN_INCR EMENT)</a></h3>
1590 1638
1591 1639
(...skipping 18 matching lines...) Expand all
1610 <p> 1658 <p>
1611 このコードは、メソッドに0から11の範囲外の月定数値を渡しています。 1659 このコードは、メソッドに0から11の範囲外の月定数値を渡しています。
1612 </p> 1660 </p>
1613 1661
1614 1662
1615 <h3><a name="DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: 正確に表されない double から構築され た BigDecimal (DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE)</a></h3> 1663 <h3><a name="DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: 正確に表されない double から構築され た BigDecimal (DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE)</a></h3>
1616 1664
1617 1665
1618 <p> 1666 <p>
1619 このコードは、10進数の数にうまく変換されない double 値から BigDecimal を作成しています。 1667 このコードは、10進数の数にうまく変換されない double 値から BigDecimal を作成しています。
1620 たとえば、Java で <code>new BigDecimal(0.1)</code> と書くと、0.1と正確に等しい BigDecimal (スケールが1で スケールなしの値が1) が作成されると思うかもしれませんが 1668 たとえば、Java で <code>new BigDecimal(0.1)</code> と書くと、0.1と正確に等しい BigDecimal (スケールが1で スケールなしの値が1) が作成されると思うかもしれませんが
1621 実際には0.1000000000000000055511151231257827021181583404541015625と等しくなります。 1669 実際には0.1000000000000000055511151231257827021181583404541015625と等しくなります。
1622 </p> 1670 </p>
1623 <p> 1671 <p>
1624 おそらく <code>BigDecimal.valueOf(double d)</code> メソッドの使用が望ましいです。BigDecimal(たとえば、<c ode>BigDecimal.valueOf(0.1)</code> は0.1を与えます) を作成するためには double の文字列表現を使用します。 1672 おそらく <code>BigDecimal.valueOf(double d)</code> メソッドの使用が望ましいです。BigDecimal(たとえば、<c ode>BigDecimal.valueOf(0.1)</code> は0.1を与えます) を作成するためには double の文字列表現を使用します。
1625 </p> 1673 </p>
1626 1674
1627 1675
1628 <h3><a name="DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext メソッドで next メソッドを呼び出している (DMI_CALLING_NEXT_FROM_HASNEXT)</a></h3> 1676 <h3><a name="DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext メソッドで next メソッドを呼び出している (DMI_CALLING_NEXT_FROM_HASNEXT)</a></h3>
1629 1677
1630 1678
1631 <p> 1679 <p>
1632 <code>hasNext</code> メソッドは、<code>next</code> メソッドを呼び出しています。 1680 <code>hasNext</code> メソッドは、<code>next</code> メソッドを呼び出しています。
1633 <code>hasNext</code> メソッドは、イテレータの状態を変更することになっていないので、ほぼ確実に間違っています。 1681 <code>hasNext</code> メソッドは、イテレータの状態を変更することになっていないので、ほぼ確実に間違っています。
1634 <code>next</code> メソッドがイテレータの状態を変更することになっています。 1682 <code>next</code> メソッドがイテレータの状態を変更することになっています。
1635 </p> 1683 </p>
1636 1684
1637 1685
1638 <h3><a name="DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES">DMI: コレクションは自分自身を含める べきではない (DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES)</a></h3> 1686 <h3><a name="DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES">DMI: コレクションは自分自身を含める べきではない (DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES)</a></h3>
1639 1687
1640 1688
1641 <p> 1689 <p>
1642 この総称型コレクションメソッドへの呼び出しはコレクションに自分自身が含まれている (たとえば、<code>s.contains(s)</code> が true だとして) 場合にだけ意味があります 1690 この総称型コレクションメソッドへの呼び出しはコレクションに自分自身が含まれている場合 (たとえば、<code>s.contains(s)</code> が tr ue) にだけ意味があります
1643 これは true である可能性が低くて、もし true なら問題の原因になります (たとえば、無限再帰になっているハッシュコードの計算)。 1691 これが本当だとは思えないし、もし本当なら問題の原因になります (たとえば、無限再帰になっているハッシュコードの計算)。
1644 間違ったパラメータが渡されている可能性が高いです。 1692 間違ったパラメータが渡されている可能性が高いです。
1645 </p> 1693 </p>
1646 1694
1647 1695
1648 <h3><a name="DMI_DOH">DMI: D'oh! 無意味なメソッド呼び出し (DMI_DOH)</a></h3> 1696 <h3><a name="DMI_DOH">DMI: D'oh! 無意味なメソッド呼び出し (DMI_DOH)</a></h3>
1649 1697
1650 1698
1651 <p> 1699 <p>
1652 この部分的なメソッド呼び出しは、検査から明らかな理由で意味がありません。 1700 この部分的なメソッド呼び出しは、検査から明らかな理由で意味がありません。
1653 </p> 1701 </p>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1687 1735
1688 <p> 1736 <p>
1689 アノテーションは、<code>@Retention(RetentionPolicy.RUNTIME)</code> でアノテートされなければ、リフレクション ( たとえば、<code>isAnnotationPresent(...)</code> メソッド) を使用して観測することができません。 1737 アノテーションは、<code>@Retention(RetentionPolicy.RUNTIME)</code> でアノテートされなければ、リフレクション ( たとえば、<code>isAnnotationPresent(...)</code> メソッド) を使用して観測することができません。
1690 </p> 1738 </p>
1691 1739
1692 1740
1693 <h3><a name="DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_ EXECUTOR">Dm: ScheduledThreadPoolExecutor の最大プールサイズを変えようとする無駄な試み (DMI_FUTILE_ATT EMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR)</a></h3> 1741 <h3><a name="DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_ EXECUTOR">Dm: ScheduledThreadPoolExecutor の最大プールサイズを変えようとする無駄な試み (DMI_FUTILE_ATT EMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR)</a></h3>
1694 1742
1695 1743
1696 <p> 1744 <p>
1697 <code>ScheduledThreadPoolExecutor</code> は <code>ThreadPoolExecutor</code> から継承さ れますが継承されたチューニングメソッドの一部は有効ではありません 1745 <code>ScheduledThreadPoolExecutor</code> は <code>ThreadPoolExecutor</code> から継承さ れますが継承されたチューニングメソッドの一部は有用ではありません
1698 特に、corePoolSize スレッドとアンバウンド形式のキューを使用する固定サイズプールとして動作するので、maximumPoolSize の調整は有効な効 果がありません。<br> 1746 特に、corePoolSize スレッドとアンバウンド形式のキューを使用する固定サイズプールとして動作するので、maximumPoolSize の調整は有用な効 果がありません。<br>
1699 (<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/Sched uledThreadPoolExecutor.html">Javadoc</a>) 1747 (<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/Sched uledThreadPoolExecutor.html">Javadoc</a>)
1700 </p> 1748 </p>
1701 1749
1702 1750
1703 <h3><a name="DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS">Dm: コアプー ルサイズが0の ScheduledThreadPoolExecutor の作成 (DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH _ZERO_CORE_THREADS)</a></h3> 1751 <h3><a name="DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS">Dm: コアプー ルサイズが0の ScheduledThreadPoolExecutor の作成 (DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH _ZERO_CORE_THREADS)</a></h3>
1704 1752
1705 1753
1706 <p> 1754 <p>
1707 コアプールサイズが0の <code>ScheduledThreadPoolExecutor</code> は決して何も実行しません。 1755 コアプールサイズが0の <code>ScheduledThreadPoolExecutor</code> は決して何も実行しません。
1708 最大プールサイズへの変更は無視されます。<br> 1756 最大プールサイズへの変更は無視されます。<br>
1709 (<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/Sched uledThreadPoolExecutor.html#ScheduledThreadPoolExecutor(int)">Javadoc</a>) 1757 (<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/Sched uledThreadPoolExecutor.html#ScheduledThreadPoolExecutor(int)">Javadoc</a>)
1710 </p> 1758 </p>
1711 1759
1712 1760
1713 <h3><a name="DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: EasyMock メソッドへの役に立たない/無意味な 呼び出し (DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD)</a></h3> 1761 <h3><a name="DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: EasyMock メソッドへの役に立たない/無意味な 呼び出し (DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD)</a></h3>
1714 1762
1715 1763
1716 <p> 1764 <p>
1717 この呼び出しは EasyMock メソッドにどんなオブジェクトも渡さないので何もしません。 1765 この呼び出しは EasyMock メソッドにどんなオブジェクトも渡さないので何もしません。
1718 </p> 1766 </p>
1719 1767
1720 1768
1769 <h3><a name="DM_INVALID_MIN_MAX">Dm: Math.max と Math.min の間違った組み合わせ (DM_INVALID_ MIN_MAX)</a></h3>
1770
1771
1772 <p>
1773 このコードは、<code>Math.min(0, Math.max(100, value))</code> のような構文を使用して境界値を制限しようとしています 。
1774 しかしながら、定数の順序が間違っています。 <code>Math.min(100, Math.max(0, value))</code> とすべきです。
1775 結果としてこのコードは常に同じ結果 (もし値が NaN なら NaN) を作り出します。
1776 </p>
1777
1778
1721 <h3><a name="EC_ARRAY_AND_NONARRAY">EC: equals メソッドを使用して配列と非配列を比較している (EC_ARRAY_ AND_NONARRAY)</a></h3> 1779 <h3><a name="EC_ARRAY_AND_NONARRAY">EC: equals メソッドを使用して配列と非配列を比較している (EC_ARRAY_ AND_NONARRAY)</a></h3>
1722 1780
1723 1781
1724 <p> 1782 <p>
1725 このメソッドは、配列と配列であると思われない参照を比較するために <code>.equals(Object o)</code> を呼び出しています。 1783 このメソッドは、配列と配列だと思われない参照を比較するために <code>.equals(Object o)</code> を呼び出しています。
1726 比較されているものが違う型なら不等であることが保証されているので、比較はほぼ間違いなく誤りです。 1784 比較されているものが違う型なら等しくないことであることが保証されているので、比較はほぼ間違いなく誤りです。
1727 たとえそれらが両方とも配列であるとしても、配列の <code>equals</code> メソッドは2つの配列が同じオブジェクトであると決定するだけです 1785 たとえそれらが両方とも配列だったとしても、配列の <code>equals</code> メソッドは2つの配列が同じオブジェクトだと決定するだけです
1728 配列のコンテンツを比較するためには <code>java.util.Arrays.equals(Object[], Object[])</code> を使用して ください。 1786 配列のコンテンツを比較するためには <code>java.util.Arrays.equals(Object[], Object[])</code> を使用して ください。
1729 </p> 1787 </p>
1730 1788
1731 1789
1732 <h3><a name="EC_BAD_ARRAY_COMPARE">EC: 配列の equals メソッド呼び出しは == と等価である (EC_BAD_AR RAY_COMPARE)</a></h3> 1790 <h3><a name="EC_BAD_ARRAY_COMPARE">EC: 配列の equals メソッド呼び出しは == と等価である (EC_BAD_AR RAY_COMPARE)</a></h3>
1733 1791
1734 1792
1735 <p> 1793 <p>
1736 このメソッドは、配列で <code>.equals(Object o)</code> を呼び出しています。 1794 このメソッドは、配列で <code>.equals(Object o)</code> を呼び出しています。
1737 配列は、<code>Object</code> の <code>equals</code> メソッドをオーバーライドしないので、配列で <code>equals </code> メソッドを呼び出すことはアドレスを比較することと同じです。 1795 配列は、<code>Object</code> の <code>equals</code> メソッドをオーバーライドしないので、配列で <code>equals </code> メソッドを呼び出すことはアドレスを比較することと同じです。
1738 配列のコンテンツを比較するためには <code>java.util.Arrays.equals(Object[], Object[])</code> を使用して ください。 1796 配列のコンテンツを比較するためには <code>java.util.Arrays.equals(Object[], Object[])</code> を使用して ください。
1739 配列のアドレスを比較するために、明示的に、<code>==</code> を使用して参照等価性をチェックすることは、それほど紛らわしくないでしょう。 1797 配列のアドレスを比較するために明示的に <code>==</code> を使用して参照等価性をチェックすることは、それほど紛らわしくないでしょう。
1740 </p> 1798 </p>
1741 1799
1742 1800
1743 <h3><a name="EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(...) メソッドを使用して互換性のない配列を比較 している (EC_INCOMPATIBLE_ARRAY_COMPARE)</a></h3> 1801 <h3><a name="EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(...) メソッドを使用して互換性のない配列を比較 している (EC_INCOMPATIBLE_ARRAY_COMPARE)</a></h3>
1744 1802
1745 1803
1746 <p> 1804 <p>
1747 このメソッドは、互換性のない型の配列を比較するために <code>.equals(Object o)</code> を呼び出しています (たとえば、<code> String[]</code> と <code>StringBuffer[]</code>、<code>String[]</code> と <code>int[ ]</code>) 。 1805 このメソッドは、互換性のない型の配列を比較するために <code>.equals(Object o)</code> を呼び出しています (たとえば、<code> String[]</code> と <code>StringBuffer[]</code>、<code>String[]</code> と <code>int[ ]</code>) 。
1748 それらは、決して等価ではありません。 1806 それらは、決して等価ではありません。
1749 さらに、<code>equals(...)</code> が配列を比較するのに使用されるとき、それらが同じ配列であるかどうか確かめるだけで、配列のコンテンツは無 視します。 1807 さらに、<code>equals(...)</code> が配列を比較するのに使用されるとき、それらが同じ配列であるかどうか確かめるだけで、配列のコンテンツは無 視します。
1750 </p> 1808 </p>
1751 1809
1752 1810
1753 <h3><a name="EC_NULL_ARG">EC: equals(null) の呼び出し (EC_NULL_ARG)</a></h3> 1811 <h3><a name="EC_NULL_ARG">EC: equals(null) の呼び出し (EC_NULL_ARG)</a></h3>
1754 1812
1755 1813
1756 <p> 1814 <p>
1757 このメソッドは、 null 値の引数を渡して <code>equals(Object)</code> を呼び出しています。 1815 このメソッドは、 null 値の引数を渡して <code>equals(Object)</code> を呼び出しています。
1758 <code>equals</code> メソッドの規約によると、この呼び出しは常に false を返すはずです。 1816 <code>equals</code> メソッドの規約によると、この呼び出しは常に false を返すはずです。
1759 </p> 1817 </p>
1760 1818
1761 1819
1762 <h3><a name="EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals メソッドを呼び出して無関係のクラスとインタフ ェースを比較している (EC_UNRELATED_CLASS_AND_INTERFACE)</a></h3> 1820 <h3><a name="EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals メソッドを呼び出して無関係のクラスとインタフ ェースを比較している (EC_UNRELATED_CLASS_AND_INTERFACE)</a></h3>
1763 1821
1764 1822
1765 <p> 1823 <p>
1766 このメソッドは、一方がクラスで他方がインタフェースである2つの参照で <code>equals(Object)</code> メソッドを呼び出しています。 1824 このメソッドは、一方がクラスで他方がインタフェースである2つの参照で <code>equals(Object)</code> メソッドを呼び出しています。
1767 クラスは、そのクラスの非抽象サブクラスも含めてインタフェースを実装していません。 1825 クラスは、そのクラスの非抽象サブクラスも含めてインタフェースを実装していません。
1768 したがって比較されている2つのオブジェクトは実行時に同じクラスのメンバである可能性が低いです (いくつかのアプリケーションクラスが解析できなかったか、動的クラス ローディングが実行時に起こることができた場合を除く)。 1826 したがって比較されている2つのオブジェクトは実行時に同じクラスのメンバである可能性が低いです (いくつかのアプリケーションクラスが解析できなかったか、動的クラス ローディングが実行時に起こることができた場合を除く)。
1769 <code>equals</code> メソッドの規約によると、異なるクラスのオブジェクトは常に不等として比較するべきです 1827 <code>equals</code> メソッドの規約によると、異なるクラスのオブジェクトは常に等しくないとして比較するべきです
1770 したがって、<code>java.lang.Object.equals(Object)</code> によって定義される規約によれば、この比較の結果は実行時に常 に false になります。 1828 したがって、<code>java.lang.Object.equals(Object)</code> によって定義される規約によれば、この比較の結果は実行時に常 に false になります。
1771 </p> 1829 </p>
1772 1830
1773 1831
1774 <h3><a name="EC_UNRELATED_INTERFACES">EC: equals メソッドを呼び出して異なる型のインタフェースを比較している ( EC_UNRELATED_INTERFACES)</a></h3> 1832 <h3><a name="EC_UNRELATED_INTERFACES">EC: equals メソッドを呼び出して異なる型のインタフェースを比較している ( EC_UNRELATED_INTERFACES)</a></h3>
1775 1833
1776 1834
1777 <p> 1835 <p>
1778 このメソッドは、どちらも他方のサブタイプでない無関係なインタフェース型の2つの参照で <code>equals(Object)</code> メソッドを呼び出し ています。 1836 このメソッドは、どちらも他方のサブタイプでない無関係なインタフェース型の2つの参照で <code>equals(Object)</code> メソッドを呼び出し ています。
1779 そして、両方のインタフェースを実装する既知の非抽象クラスがありません。 1837 そして、両方のインタフェースを実装する既知の非抽象クラスがありません。
1780 したがって比較されている2つのオブジェクトは実行時に同じクラスのメンバである可能性が低いです (いくつかのアプリケーションクラスが解析できなかったか、動的クラス ローディングが実行時に起こることができた場合を除く)。 1838 したがって比較されている2つのオブジェクトは実行時に同じクラスのメンバである可能性が低いです (いくつかのアプリケーションクラスが解析できなかったか、動的クラス ローディングが実行時に起こることができた場合を除く)。
1781 <code>equals</code> メソッドの規約によると、異なるクラスのオブジェクトは常に不等として比較するべきです 1839 <code>equals</code> メソッドの規約によると、異なるクラスのオブジェクトは常に等しくないとして比較するべきです
1782 したがって、<code>java.lang.Object.equals(Object)</code> によって定義される規約によれば、この比較の結果は実行時に常 に false になります。 1840 したがって、<code>java.lang.Object.equals(Object)</code> によって定義される規約によれば、この比較の結果は実行時に常 に false になります。
1783 </p> 1841 </p>
1784 1842
1785 1843
1786 <h3><a name="EC_UNRELATED_TYPES">EC: equals メソッドを呼び出して異なる型を比較している (EC_UNRELATED_ TYPES)</a></h3> 1844 <h3><a name="EC_UNRELATED_TYPES">EC: equals メソッドを呼び出して異なる型を比較している (EC_UNRELATED_ TYPES)</a></h3>
1787 1845
1788 1846
1789 <p> 1847 <p>
1790 このメソッドは、共通のサブクラスがない異なるクラス型の2つのオブジェクト参照で <code>equals(Object)</code> メソッドを呼び出していま す。 1848 このメソッドは、異なるクラス型の2つの参照で <code>equals(Object)</code> メソッドを呼び出していて、解析が実行時に異なるクラスのオ ブジェクトになることを示唆しています。
1791 したがって比較されている2つのオブジェクトは実行時に同じクラスのメンバである可能性が低いです (いくつかのアプリケーションクラスが解析できなかったか、動的クラス ローディングが実行時に起こることができた場合を除く)。 1849 さらに、呼び出されるであろう equals メソッドの検査では、この呼び出しは常に false を返すか、
1792 <code>equals</code> メソッドの規約によると、異なるクラスのオブジェクトは常に不等として比較するべきです。 1850 あるいは equals メソッドが対称 (Object クラスの equals のための契約に必要な性質) ではないことのどちらかを示唆しています。
1793 したがって、<code>java.lang.Object.equals(Object)</code> によって定義される規約によれば、この比較の結果は実行時に常 に false になります。
1794 </p> 1851 </p>
1795 1852
1796 1853
1797 <h3><a name="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">EC: 参照等価性を使用して異なる型を比較してい る (EC_UNRELATED_TYPES_USING_POINTER_EQUALITY)</a></h3> 1854 <h3><a name="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">EC: 参照等価性を使用して異なる型を比較してい る (EC_UNRELATED_TYPES_USING_POINTER_EQUALITY)</a></h3>
1798 1855
1799 1856
1800 <p> 1857 <p>
1801 このメソッドは異なる型と思われる2つの参照を比較するために参照等価性を使用しています。 1858 このメソッドは異なる型と思われる2つの参照を比較するために参照等価性を使用しています。
1802 この比較の結果は、常に false です。 1859 この比較の結果は、常に false です。
1803 </p> 1860 </p>
1804 1861
1805 1862
1806 <h3><a name="EQ_ALWAYS_FALSE">Eq: equals メソッドは常に false を戻す (EQ_ALWAYS_FALSE)</a> </h3> 1863 <h3><a name="EQ_ALWAYS_FALSE">Eq: equals メソッドは常に false を戻す (EQ_ALWAYS_FALSE)</a> </h3>
1807 1864
1808 1865
1809 <p> 1866 <p>
1810 このクラスでは、常に false を返す <code>equlas</code> メソッドを定義しています。 1867 このクラスでは、常に false を返す <code>equlas</code> メソッドを定義しています。
1811 これは、オブジェクトがそれ自身と等価ではないことを意味していて、このクラスの有効な Map や Set を作成できません。 1868 これはオブジェクトがそれ自身と等価ではないことを意味していて、このクラスの有用な Map や Set を作成できません。
1812 より根本的に、<code>equals</code> メソッドの要件の一つである反射性を満たしていないことになります。 1869 より根本的に、<code>equals</code> メソッドの要件の一つである反射性を満たしていないことになります。
1813 </p> 1870 </p>
1814 <p> 1871 <p>
1815 おそらく意図されたことは、オブジェクトはそれ自身と等価であるというオブジェクト同一性です。 1872 おそらく意図されたことは、オブジェクトはそれ自身と等価であるというオブジェクト同一性です。
1816 これは <code>Object</code> クラスから継承される振る舞いです。 1873 これは <code>Object</code> クラスから継承される振る舞いです。
1817 異なるスーパークラスから継承される <code>equals</code> メソッドをオーバーライドする必要があるなら以下のようなコードが使えます。 1874 異なるスーパークラスから継承される <code>equals</code> メソッドをオーバーライドする必要があるなら以下のようなコードが使えます。
1818 </p> 1875 </p>
1819 <blockquote><pre> 1876 <blockquote><pre>
1820 public boolean equals(Object o) { 1877 public boolean equals(Object o) {
1821 return this == o; 1878 return this == o;
(...skipping 18 matching lines...) Expand all
1840 異なるクラスローダによってロードされたクラスなら、同じ名前で異なるクラスがある可能性があります。 1897 異なるクラスローダによってロードされたクラスなら、同じ名前で異なるクラスがある可能性があります。
1841 クラスオブジェクトが同じなのか確かめてください。 1898 クラスオブジェクトが同じなのか確かめてください。
1842 </p> 1899 </p>
1843 1900
1844 1901
1845 <h3><a name="EQ_DONT_DEFINE_EQUALS_FOR_ENUM">Eq: 列挙型は共変な equals メソッドを定義している (EQ_ DONT_DEFINE_EQUALS_FOR_ENUM)</a></h3> 1902 <h3><a name="EQ_DONT_DEFINE_EQUALS_FOR_ENUM">Eq: 列挙型は共変な equals メソッドを定義している (EQ_ DONT_DEFINE_EQUALS_FOR_ENUM)</a></h3>
1846 1903
1847 1904
1848 <p> 1905 <p>
1849 このクラスは列挙を定義していて、列挙の等価性はオブジェクト同一性を使用して定義されています。 1906 このクラスは列挙を定義していて、列挙の等価性はオブジェクト同一性を使用して定義されています。
1850 列挙値のために共変な <code>equals</code> メソッドを定義することは、非常に間違ったプラクティスです 1907 列挙値のために共変な <code>equals</code> メソッドを定義することは、ひどいバッドプラクティスです
1851 2つの異なる列挙値が一般にの <code>equals</code> メソッドでは「等価ではない」と判定され、共変な <code>equals</code> メ ソッドでは「等価」と判定されるからです。 1908 2つの異なる列挙値が <code>equals</code> メソッドでは「等価ではない」と判定され、共変な <code>equals</code> メソッドで は「等価」と判定されるからです。
1852 共変な <code>equals</code> メソッドを定義しないでください。 1909 共変な <code>equals</code> メソッドを定義しないでください。
1853 </p> 1910 </p>
1854 1911
1855 1912
1856 <h3><a name="EQ_OTHER_NO_OBJECT">Eq: equals(Object) メソッドをオーバーライドしていない equals メソッ ドの定義 (EQ_OTHER_NO_OBJECT)</a></h3> 1913 <h3><a name="EQ_OTHER_NO_OBJECT">Eq: equals(Object) メソッドをオーバーライドしていない equals メソッ ドの定義 (EQ_OTHER_NO_OBJECT)</a></h3>
1857 1914
1858 1915
1859 <p> 1916 <p>
1860 このクラスは、<code>equals</code> メソッドを定義していますが、<code>java.lang.Object</code> クラスの <cod e>equals(Object)</code> メソッドをオーバーライドしていません。 1917 このクラスは、<code>equals</code> メソッドを定義していますが、<code>java.lang.Object</code> クラスの <cod e>equals(Object)</code> メソッドをオーバーライドしていません。
1861 その代わりに、スーパークラスから <code>equals(Object)</code> メソッドを継承して、<code>boolean equals(Obje ct)</code> メソッドを定義するべきです。 1918 その代わりに、スーパークラスから <code>equals(Object)</code> メソッドを継承して、<code>boolean equals(Obje ct)</code> メソッドを定義するべきです。
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 </p> 1950 </p>
1894 1951
1895 1952
1896 <h3><a name="FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER">FE: NaN への等価性のための絶望的なテスト (FE_TEST _IF_EQUAL_TO_NOT_A_NUMBER)</a></h3> 1953 <h3><a name="FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER">FE: NaN への等価性のための絶望的なテスト (FE_TEST _IF_EQUAL_TO_NOT_A_NUMBER)</a></h3>
1897 1954
1898 1955
1899 <p> 1956 <p>
1900 このコードは、浮動小数点が特別な非数値と等価であるか確かめています (たとえば <code>if (x == Double.NaN)</code>)。 1957 このコードは、浮動小数点が特別な非数値と等価であるか確かめています (たとえば <code>if (x == Double.NaN)</code>)。
1901 しかしながら、<code>NaN</code> の特別な意味のため、値は <code>NaN</code> と等価ではありません。 1958 しかしながら、<code>NaN</code> の特別な意味のため、値は <code>NaN</code> と等価ではありません。
1902 したがって、<code>x == Double.NaN</code> は常に false と評価します。 1959 したがって、<code>x == Double.NaN</code> は常に false と評価します。
1903 <code>x</code> という値が特別な非数値であるかどうか確かめるためには <code>Double.isNaN(x)</code> を使用します ( るいは <code>x</code> が浮動小数点精度であるなら <code>Float.isNaN(x)</code>)。 1960 <code>x</code> という値が特別な非数値であるかどうか確かめるためには <code>Double.isNaN(x)</code> を使用します ( たは <code>x</code> が浮動小数点精度であるなら <code>Float.isNaN(x)</code>)。
1904 </p> 1961 </p>
1905 1962
1906 1963
1907 <h3><a name="VA_FORMAT_STRING_BAD_ARGUMENT">FS: 書式指示子へ渡している引数に互換性がない (VA_FORMAT_ STRING_BAD_ARGUMENT)</a></h3> 1964 <h3><a name="VA_FORMAT_STRING_BAD_ARGUMENT">FS: 書式指示子へ渡している引数に互換性がない (VA_FORMAT_ STRING_BAD_ARGUMENT)</a></h3>
1908 1965
1909 1966
1910 <p> 1967 <p>
1911 書式指示子は、対応する引数と互換性がありません。 1968 書式指示子は、対応する引数と互換性がありません。
1912 たとえば、<code>System.out.println("%d\n", "hello");</code> の %d 書式指示子は数値の引数を必要としますが数 値ではなく文字列が渡されています。 1969 たとえば、<code>System.out.println("%d\n", "hello");</code> の %d 書式指示子は数値の引数を必要としますが数 値ではなく文字列が渡されています。
1913 この文が実行されると実行時例外が発生します。 1970 この文が実行されると実行時例外が発生します。
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 </p> 2026 </p>
1970 2027
1971 2028
1972 <h3><a name="GC_UNRELATED_TYPES">GC: 型パラメータとメソッド引数に関係がない (GC_UNRELATED_TYPES)</a ></h3> 2029 <h3><a name="GC_UNRELATED_TYPES">GC: 型パラメータとメソッド引数に関係がない (GC_UNRELATED_TYPES)</a ></h3>
1973 2030
1974 2031
1975 <p> 2032 <p>
1976 総称型コレクションメソッドへの呼び出しにコレクションのパラメータとは互換性のないクラスの引数があります (すなわち、引数の型は総称型引数に対応するスーパタイプで もサブタイプでもありません)。 2033 総称型コレクションメソッドへの呼び出しにコレクションのパラメータとは互換性のないクラスの引数があります (すなわち、引数の型は総称型引数に対応するスーパタイプで もサブタイプでもありません)。
1977 したがって、コレクションにはここで使用されたメソッド引数と等価であるどんなオブジェクトも含まれていません。 2034 したがって、コレクションにはここで使用されたメソッド引数と等価であるどんなオブジェクトも含まれていません。
1978 多分間違った値がメソッドに渡されています。 2035 多分間違った値がメソッドに渡されています。
1979 一般に、2つの無関係なクラスのインスタンスは等価ではありません 2036 一般的に2つの無関係なクラスのインスタンスは等価ではありません
1980 たとえば、<code>Foo</code> と <code>Bar</code> クラスがサブタイプによって関係がないなら、<code>Foo</code> の インスタンスは <code>Bar</code> のインスタンスと等価のはずがありません。 2037 たとえば、<code>Foo</code> と <code>Bar</code> クラスがサブタイプによって関係がないなら、<code>Foo</code> の インスタンスは <code>Bar</code> のインスタンスと等価のはずがありません。
1981 その他の問題で対称的ではない <code>equals</code> メソッドになる可能性が高いです。 2038 その他の問題で対称的ではない <code>equals</code> メソッドになる可能性が高いです。
1982 たとえば、<code>Foo</code> が <code>String</code> と等価であるように <code>Foo</code> クラスを定義するな ら、<code>String</code> は <code>String</code> だけと等価であるので、<code>equals</code> メソッドは 対称的ではありません。 2039 たとえば、<code>Foo</code> が <code>String</code> と等価であるように <code>Foo</code> クラスを定義するな ら、<code>String</code> は <code>String</code> だけと等価であるので、<code>equals</code> メソッドは 対称的ではありません。
1983 </p> 2040 </p>
1984 <p> 2041 <p>
1985 まれに、非対称 <code>equals</code> メソッドを定義して、まだ、何とかそれらのコードを機能させています。 2042 まれに、非対称 <code>equals</code> メソッドを定義して、まだ、何とかそれらのコードを機能させています。
1986 APIのどれも文書化していないか、保証もしていないが、<code>Collection&lt;String&gt;</code> に <code>Foo</co de> があるかどうか調べたいなら、 2043 APIのどれも文書化していないか、保証もしていないが、<code>Collection&lt;String&gt;</code> に <code>Foo</co de> があるかどうか調べたいなら、
1987 引数の <code>equals</code> メソッド (たとえば、<code>Foo</code>クラスの <code>equals</code> メソッド ) を使用して等価性をチェックします。 2044 引数の <code>equals</code> メソッド (たとえば、<code>Foo</code>クラスの <code>equals</code> メソッド ) を使用して等価性をチェックします。
1988 </p> 2045 </p>
1989 2046
(...skipping 17 matching lines...) Expand all
2007 このクラスのインスタンスはハッシュデータ構造で使われています。最重要問題を修正する必要があります。 2064 このクラスのインスタンスはハッシュデータ構造で使われています。最重要問題を修正する必要があります。
2008 </p> 2065 </p>
2009 2066
2010 2067
2011 <h3><a name="ICAST_INT_2_LONG_AS_INSTANT">ICAST: int 値を long に変換して絶対時間として使用している (ICAST_INT_2_LONG_AS_INSTANT)</a></h3> 2068 <h3><a name="ICAST_INT_2_LONG_AS_INSTANT">ICAST: int 値を long に変換して絶対時間として使用している (ICAST_INT_2_LONG_AS_INSTANT)</a></h3>
2012 2069
2013 2070
2014 <p> 2071 <p>
2015 このコードは、32ビット int 値を64ビット long 値に変換して、絶対時間値を必要とするメソッドパラメータに渡しています。 2072 このコードは、32ビット int 値を64ビット long 値に変換して、絶対時間値を必要とするメソッドパラメータに渡しています。
2016 絶対時間値は、「エポック」(すなわち、1970年1月1日、00:00:00 GMT)としてわかっている標準的な基準時間からのミリ秒数です。<br> 2073 絶対時間値は、「エポック」(すなわち、1970年1月1日、00:00:00 GMT)としてわかっている標準的な基準時間からのミリ秒数です。<br>
2017 たとえば、次のメソッドDate にエポックから秒を変換することを意図した)は、ひどく壊れています 2074 たとえば、次のメソッド (エポックからの秒を Date へ変換することを意図した) はひどく壊れています
2018 </p> 2075 </p>
2019 <blockquote><pre> 2076 <blockquote><pre>
2020 Date getDate(int seconds) { return new Date(seconds * 1000); } 2077 Date getDate(int seconds) { return new Date(seconds * 1000); }
2021 </pre></blockquote> 2078 </pre></blockquote>
2022 <p> 2079 <p>
2023 乗算は32ビット演算を使用して、64ビット値に変換されます。 2080 乗算は32ビット演算を使用して、64ビット値に変換されます。
2024 32ビット値は、64ビットに変換されて、絶対時間値を表すために使用されるとき、1969年12月と1970年1月の日付しか表せません。 2081 32ビット値は、64ビットに変換されて、絶対時間値を表すために使用されるとき、1969年12月と1970年1月の日付しか表せません。
2025 </p> 2082 </p>
2026 <p> 2083 <p>
2027 上記のメソッドのための正しい実装は、以下のとおりです 2084 上記のメソッドの正しい実装は以下のとおりです
2028 </p> 2085 </p>
2029 <blockquote><pre> 2086 <blockquote><pre>
2030 // 失敗、2037年後の日付 2087 // 失敗、2037年後の日付
2031 Date getDate(int seconds) { return new Date(seconds * 1000L); } 2088 Date getDate(int seconds) { return new Date(seconds * 1000L); }
2032 2089
2033 // より良い、すべての日付で動作する 2090 // より良い、すべての日付で動作する
2034 Date getDate(long seconds) { return new Date(seconds * 1000); } 2091 Date getDate(long seconds) { return new Date(seconds * 1000); }
2035 </pre></blockquote> 2092 </pre></blockquote>
2036 2093
2037 2094
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2131 2188
2132 <p> 2189 <p>
2133 このループは、例外をスローする以外の方法で終了させることができないように思われます。 2190 このループは、例外をスローする以外の方法で終了させることができないように思われます。
2134 </p> 2191 </p>
2135 2192
2136 2193
2137 <h3><a name="IL_INFINITE_RECURSIVE_LOOP">IL: 明らかな無限再帰ループ (IL_INFINITE_RECURSIVE_ LOOP)</a></h3> 2194 <h3><a name="IL_INFINITE_RECURSIVE_LOOP">IL: 明らかな無限再帰ループ (IL_INFINITE_RECURSIVE_ LOOP)</a></h3>
2138 2195
2139 2196
2140 <p> 2197 <p>
2141 このメソッドは、無条件で自分自身を呼び出します。これは、スタックオーバーフローになる無限再帰ループを示しています 2198 このメソッドは、無条件で自分自身を呼び出します。これはスタックオーバーフローになる無限再帰ループを示しています
2142 </p> 2199 </p>
2143 2200
2144 2201
2145 <h3><a name="IM_MULTIPLYING_RESULT_OF_IREM">IM: 整数剰余の結果の整数乗算 (IM_MULTIPLYING_RES ULT_OF_IREM)</a></h3> 2202 <h3><a name="IM_MULTIPLYING_RESULT_OF_IREM">IM: 整数剰余の結果の整数乗算 (IM_MULTIPLYING_RES ULT_OF_IREM)</a></h3>
2146 2203
2147 2204
2148 <p> 2205 <p>
2149 このコードは、整数剰余の結果に整数定数を乗算しています。 2206 このコードは、整数剰余の結果に整数定数を乗算しています。
2150 紛らわしい演算子の優先順位がないことを確実にしてください。 2207 紛らわしい演算子の優先順位がないことを確実にしてください。
2151 たとえば、i % 60 * 1000 は、i % (60 * 1000) ではなく (i % 60) * 1000 となります。 2208 たとえば、i % 60 * 1000 は、i % (60 * 1000) ではなく (i % 60) * 1000 となります。
2152 </p> 2209 </p>
2153 2210
2154 2211
2155 <h3><a name="INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int 値と long 定数との間違った比較 (INT _BAD_COMPARISON_WITH_INT_VALUE)</a></h3> 2212 <h3><a name="INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int 値と long 定数との間違った比較 (INT _BAD_COMPARISON_WITH_INT_VALUE)</a></h3>
2156 2213
2157 2214
2158 <p> 2215 <p>
2159 このコードは、int 値と int 値として表現できる値の範囲外にある long 定数を比較しています。 2216 このコードは、int 値と int 値として表される値の範囲外の long 定数を比較しています。
2160 この比較は無意味で、おそらく間違っています。 2217 この比較は無意味で、おそらく間違っています。
2161 </p> 2218 </p>
2162 2219
2163 2220
2164 <h3><a name="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: 負でない値と負の定数との間違った比較 (INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE)</a></h3> 2221 <h3><a name="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: 負でない値と負の定数またはゼロとの間違 った比較 (INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE)</a></h3>
2165 2222
2166 2223
2167 <p> 2224 <p>
2168 このコードは、負でないことが保証されている値と負の定数とを比較しています 2225 このコードは、負でないことが保証されている値と負の定数またはゼロとを比較しています
2169 </p> 2226 </p>
2170 2227
2171 2228
2172 <h3><a name="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: 符号付きバイトの間違った比較 (INT_BAD_C OMPARISON_WITH_SIGNED_BYTE)</a></h3> 2229 <h3><a name="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: 符号付きバイトの間違った比較 (INT_BAD_C OMPARISON_WITH_SIGNED_BYTE)</a></h3>
2173 2230
2174 2231
2175 <p> 2232 <p>
2176 符号付バイトのとりうる値の範囲は-128~127です。その範囲外で符号付バイトを値と比較することは無意味で間違っていそうです。 2233 符号付バイトのとりうる値の範囲は-128~127です。その範囲外で符号付バイトを値と比較することは無意味で間違っていそうです。
2177 符号付きバイト <code>b</code> を範囲が0~255の符号なしバイトに変換するには <code>0xff &amp; b</code> を使用してく ださい。 2234 符号付きバイト <code>b</code> を範囲が0~255の符号なしバイトに変換するには <code>0xff &amp; b</code> を使用してく ださい。
2178 </p> 2235 </p>
2179 2236
2180 2237
2181 <h3><a name="IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: オブジェクト出力ストリームへの追加は失敗に終わる (IO_APPENDING_TO_OBJECT_OUTPUT_STREAM)</a></h3> 2238 <h3><a name="IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: オブジェクト出力ストリームへの追加は失敗に終わる (IO_APPENDING_TO_OBJECT_OUTPUT_STREAM)</a></h3>
2182 2239
2183 2240
2184 <p> 2241 <p>
2185 このコードは、ファイルを追加モードで開いて、オブジェクト出力ストリームの中で結果をラップしています。 2242 このコードは、ファイルを追加モードで開いて、オブジェクト出力ストリームの中で結果をラップしています。
2186 これは、ファイルに格納された既存のオブジェクト出力ストリームに追加できないでしょう 2243 これはファイルに格納された既存のオブジェクト出力ストリームに追加できないでしょう
2187 オブジェクト出力ストリームに追加したいなら、オブジェクト出力ストリームを開いておく必要があります。 2244 オブジェクト出力ストリームに追加したいなら、オブジェクト出力ストリームを開いておく必要があります。
2188 </p> 2245 </p>
2189 <p> 2246 <p>
2190 追加モードでファイルを開き、オブジェクト出力ストリームで書き込むことができる唯一の状況は、 2247 追加モードでファイルを開き、オブジェクト出力ストリームで書き込むことができる唯一の状況は、
2191 ファイルを読み出すときにランダムアクセスモードで開き、追加を開始するところまでバイトオフセットをシークすると計画した場合です。 2248 ファイルを読み出すときにランダムアクセスモードで開き、追加を開始するところまでバイトオフセットをシークすると計画した場合です。
2192 </p> 2249 </p>
2193 2250
2194 2251
2195 <h3><a name="IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: メソッドで読み取られずに上書きされているパラメータ (IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN)</a></h3> 2252 <h3><a name="IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: メソッドで読み取られずに上書きされているパラメータ (IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN)</a></h3>
2196 2253
(...skipping 11 matching lines...) Expand all
2208 このクラスは、スーパークラスの可視インスタンスフィールドと同じ名前でフィールドを定義しています。 2265 このクラスは、スーパークラスの可視インスタンスフィールドと同じ名前でフィールドを定義しています。
2209 これは紛らわしくて、メソッドがフィールドを更新するかアクセスするなら、間違いを指摘するかもしれません。 2266 これは紛らわしくて、メソッドがフィールドを更新するかアクセスするなら、間違いを指摘するかもしれません。
2210 </p> 2267 </p>
2211 2268
2212 2269
2213 <h3><a name="MF_METHOD_MASKS_FIELD">MF: フィールドを隠す変数を定義しているメソッド (MF_METHOD_MASKS_F IELD)</a></h3> 2270 <h3><a name="MF_METHOD_MASKS_FIELD">MF: フィールドを隠す変数を定義しているメソッド (MF_METHOD_MASKS_F IELD)</a></h3>
2214 2271
2215 2272
2216 <p> 2273 <p>
2217 このメソッドは、このクラスまたはスーパークラスのフィールドと同じ名前でローカル変数を定義しています。 2274 このメソッドは、このクラスまたはスーパークラスのフィールドと同じ名前でローカル変数を定義しています。
2218 これはフィールドから初期化されていない値を読み出したり初期化されていないフィールドをそのままにしておくメソッドの原因になるかもしれません 2275 フィールドから初期化されていない値を読み出す、初期化されていないフィールドをそのままにしておくか、または両方を引き起こすかもしれません
2219 </p> 2276 </p>
2220 2277
2221 2278
2222 <h3><a name="NP_ALWAYS_NULL">NP: null 値を利用している (NP_ALWAYS_NULL)</a></h3> 2279 <h3><a name="NP_ALWAYS_NULL">NP: null 値を利用している (NP_ALWAYS_NULL)</a></h3>
2223 2280
2224 2281
2225 <p> 2282 <p>
2226 ここで null 値を利用しようとしています。 2283 ここで null 値を利用しようとしています。
2227 コードが実行されると NullPointerException が発生します。 2284 コードが実行されると NullPointerException が発生します。
2228 </p> 2285 </p>
2229 2286
2230 2287
2231 <h3><a name="NP_ALWAYS_NULL_EXCEPTION">NP: null 値を例外経路で利用している (NP_ALWAYS_NULL_EX CEPTION)</a></h3> 2288 <h3><a name="NP_ALWAYS_NULL_EXCEPTION">NP: null 値を例外経路で利用している (NP_ALWAYS_NULL_EX CEPTION)</a></h3>
2232 2289
2233 2290
2234 <p> 2291 <p>
2235 例外経路上のここで null 値を利用しています。コードが実行されると NullPointerException が発生します。 2292 例外経路上のここで null 値を利用しています。コードが実行されると NullPointerException が発生します。
2236 現在の FindBugs は実行不可能な例外経路を取り除いていないので、誤検出かもしれないことに注意してください。 2293 現在の FindBugs は実行不可能な例外経路を刈り取れていないので、誤検出かもしれないことに注意してください。
2237 </p> 2294 </p>
2238 <p> 2295 <p>
2239 switch 文の default が多くの場合実行不可能なので FindBugs が例外経路である default を検討することに注意して下さい。 2296 switch 文の default が多くの場合実行不可能なので FindBugs が例外経路である default を検討することに注意して下さい。
2240 </p> 2297 </p>
2241 2298
2242 2299
2243 <h3><a name="NP_ARGUMENT_MIGHT_BE_NULL">NP: null の引数をチェックしていないメソッド (NP_ARGUMENT_ MIGHT_BE_NULL)</a></h3> 2300 <h3><a name="NP_ARGUMENT_MIGHT_BE_NULL">NP: null の引数をチェックしていないメソッド (NP_ARGUMENT_ MIGHT_BE_NULL)</a></h3>
2244 2301
2245 2302
2246 <p> 2303 <p>
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2289 2346
2290 <h3><a name="NP_NONNULL_PARAM_VIOLATION">NP: メソッド呼び出しは非 null パラメータに対して null を渡して いる (NP_NONNULL_PARAM_VIOLATION)</a></h3> 2347 <h3><a name="NP_NONNULL_PARAM_VIOLATION">NP: メソッド呼び出しは非 null パラメータに対して null を渡して いる (NP_NONNULL_PARAM_VIOLATION)</a></h3>
2291 2348
2292 2349
2293 <p> 2350 <p>
2294 このメソッドは、非 null でなければならないメソッドのパラメータとして、null 値を渡しています。 2351 このメソッドは、非 null でなければならないメソッドのパラメータとして、null 値を渡しています。
2295 このパラメータは、@Nonnull として明示的にアノテートされていたか、または解析が常に null 値を利用すると示していました。 2352 このパラメータは、@Nonnull として明示的にアノテートされていたか、または解析が常に null 値を利用すると示していました。
2296 </p> 2353 </p>
2297 2354
2298 2355
2299 <h3><a name="NP_NONNULL_RETURN_VIOLATION">NP: null を返すかもしれないメソッドが @NonNull 宣言されて いる (NP_NONNULL_RETURN_VIOLATION)</a></h3> 2356 <h3><a name="NP_NONNULL_RETURN_VIOLATION">NP: null を返すかもしれないメソッドが @Nonnull 宣言されて いる (NP_NONNULL_RETURN_VIOLATION)</a></h3>
2300 2357
2301 2358
2302 <p> 2359 <p>
2303 このメソッドは、null 値を返すかもしれないのにメソッド (またはスーパークラスのメソッド) の戻り値に @NonNull が宣言されています。 2360 このメソッドは、null 値を返すかもしれないのにメソッド (またはスーパークラスのメソッド) の戻り値に @Nonnull が宣言されています。
2304 </p> 2361 </p>
2305 2362
2306 2363
2307 <h3><a name="NP_NULL_INSTANCEOF">NP: null とわかっている値をその型のインスタンスなのか確かめている (NP_NULL_ INSTANCEOF)</a></h3> 2364 <h3><a name="NP_NULL_INSTANCEOF">NP: null とわかっている値をその型のインスタンスなのか確かめている (NP_NULL_ INSTANCEOF)</a></h3>
2308 2365
2309 2366
2310 <p> 2367 <p>
2311 チェックされている値が null であることが保証されているので、instanceof は常に faluse を返します。 2368 チェックされている値が null であることが保証されているので、instanceof は常に faluse を返します。
2312 これは安全で、誤解や論理エラーを指摘していないことを確認してください。 2369 これは安全で、誤解や論理エラーを指摘していないことを確認してください。
2313 </p> 2370 </p>
2314 2371
2315 2372
2316 <h3><a name="NP_NULL_ON_SOME_PATH">NP: null 値を利用している可能性がある (NP_NULL_ON_SOME_PATH )</a></h3> 2373 <h3><a name="NP_NULL_ON_SOME_PATH">NP: null 値を利用している可能性がある (NP_NULL_ON_SOME_PATH )</a></h3>
2317 2374
2318 2375
2319 <p> 2376 <p>
2320 そこで分岐または文が実行されるなら null 値が利用されて NullPointerException が発生します。 2377 そこで分岐または文が実行されるなら null 値が利用されて NullPointerException が発生します。
2321 もちろん、問題は分岐または文が実行不可能で、NullPointerException が決して発生する可能性がないということかもしれません。 2378 もちろん、問題は分岐または文が実行不可能で、NullPointerException が決して発生する可能性がないということかもしれません。
2322 それを決めるのは FindBugs の能力を超えています。 2379 それを決めるのは FindBugs の能力を超えています。
2323 </p> 2380 </p>
2324 2381
2325 2382
2326 <h3><a name="NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null 値を例外経路で利用している可能性がある (NP_NU LL_ON_SOME_PATH_EXCEPTION)</a></h3> 2383 <h3><a name="NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null 値を例外経路で利用している可能性がある (NP_NU LL_ON_SOME_PATH_EXCEPTION)</a></h3>
2327 2384
2328 2385
2329 <p> 2386 <p>
2330 例外経路上のここで null 値が利用されています。コードが実行されると NullPointerException が発生するかもしれません 2387 例外経路上のここで null 値が利用されています。コードが実行されると NullPointerException を引き起こすことがあります
2331 現在の FindBugs は実行不可能な例外経路を取り除かないので、誤検出かもしれないことに注意してください。 2388 現在の FindBugs は実行不可能な例外経路を刈り取れていないので、誤検出かもしれないことに注意してください。
2332 </p> 2389 </p>
2333 <p> 2390 <p>
2334 switch 文の default が多くの場合実行不可能なので FindBugs が例外経路である default を検討することに注意して下さい。 2391 switch 文の default が多くの場合実行不可能なので FindBugs が例外経路である default を検討することに注意して下さい。
2335 </p> 2392 </p>
2336 2393
2337 2394
2338 <h3><a name="NP_NULL_PARAM_DEREF">NP: メソッド呼び出しは非 null パラメータに対して null を渡している (NP_ NULL_PARAM_DEREF)</a></h3> 2395 <h3><a name="NP_NULL_PARAM_DEREF">NP: メソッド呼び出しは非 null パラメータに対して null を渡している (NP_ NULL_PARAM_DEREF)</a></h3>
2339 2396
2340 2397
2341 <p> 2398 <p>
2342 このメソッド呼び出しは非 null メソッドパラメータに対して null 値を渡しています。 2399 このメソッド呼び出しは非 null メソッドパラメータに対して null 値を渡しています。
2343 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。 2400 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。
2344 </p> 2401 </p>
2345 2402
2346 2403
2347 <h3><a name="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">NP: メソッド呼び出しは非 null パラメー タに対して null を渡している (NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS)</a></h3> 2404 <h3><a name="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">NP: メソッド呼び出しは非 null パラメー タに対して null を渡している (NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS)</a></h3>
2348 2405
2349 2406
2350 <p> 2407 <p>
2351 すべての既知のターゲットメソッドが非 null であることをパラメータに要求する呼び出し場所で、おそらく null 値を渡しています。 2408 すべての既知のターゲットメソッドが非 null であることをパラメータに要求する呼び出し場所で、おそらく null 値を渡しています。
2352 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。 2409 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。
2353 </p> 2410 </p>
2354 2411
2355 2412
2356 <h3><a name="NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: 非 null パラメータに null を渡している非仮想メソッ ドの呼び出し (NP_NULL_PARAM_DEREF_NONVIRTUAL)</a></h3> 2413 <h3><a name="NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: 非 null パラメータに null を渡している非仮想メソッ ドの呼び出し (NP_NULL_PARAM_DEREF_NONVIRTUAL)</a></h3>
2357 2414
2358 2415
2359 <p> 2416 <p>
2360 null の可能性がある値が非 null メソッドパラメータに渡されています。 2417 null の可能性がある値が 非 null メソッドパラメータに渡されています。
2361 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。 2418 パラメータは、常に非 null とすべきパラメータとしてアノテートされていたか、または解析が常に null 値を利用すると示していました。
2362 </p> 2419 </p>
2363 2420
2364 2421
2365 <h3><a name="NP_OPTIONAL_RETURN_NULL">NP: Optional の戻り型を持つメソッドが明示的に null を返す (NP _OPTIONAL_RETURN_NULL)</a></h3> 2422 <h3><a name="NP_OPTIONAL_RETURN_NULL">NP: Optional の戻り型を持つメソッドが明示的に null を返す (NP _OPTIONAL_RETURN_NULL)</a></h3>
2366 2423
2367 2424
2368 <p> 2425 <p>
2369 Optional の戻り型の使い方は、常に明示的に null を返すのは設計が望ましくないことを意味します。 2426 Optional の戻り型の使い方は、常に明示的に null を返すのは設計が望ましくないことを意味します。
2370 null 値をこのようなケースで返すことは契約違反で、多分クライアントコードを破壊するでしょう。 2427 null 値をこのようなケースで返すことは契約違反で、多分クライアントコードを破壊するでしょう。
2371 </p> 2428 </p>
2372 2429
2373 2430
2374 <h3><a name="NP_STORE_INTO_NONNULL_FIELD">NP: @NonNull でアノテートされたフィールドに null を格納し ている (NP_STORE_INTO_NONNULL_FIELD)</a></h3> 2431 <h3><a name="NP_STORE_INTO_NONNULL_FIELD">NP: @Nonnull でアノテートされたフィールドに null を格納し ている (NP_STORE_INTO_NONNULL_FIELD)</a></h3>
2375 2432
2376 2433
2377 <p> 2434 <p>
2378 @NonNull でアノテートされたフィールドに null かもしれない値を格納しています。 2435 @Nonnull としてアノテートされたフィールドに null かもしれない値を格納しています。
2379 </p> 2436 </p>
2380 2437
2381 2438
2382 <h3><a name="NP_UNWRITTEN_FIELD">NP: 書き込まれていないフィールドの読み出し (NP_UNWRITTEN_FIELD)</a ></h3> 2439 <h3><a name="NP_UNWRITTEN_FIELD">NP: 書き込まれていないフィールドの読み出し (NP_UNWRITTEN_FIELD)</a ></h3>
2383 2440
2384 2441
2385 <p> 2442 <p>
2386 プログラムは、決して null でない値を書き込むとは思われないフィールドの値を利用しています。 2443 プログラムは、決して null でない値を書き込むとは思われないフィールドの値を利用しています。
2387 この値を利用すると NullPointerException が発生します。 2444 この値を利用すると NullPointerException が発生します。
2388 </p> 2445 </p>
(...skipping 25 matching lines...) Expand all
2414 このメソッドは、<code>java.lang.Object</code> の <code>toString</code> メソッドを (おそらく意図的に) オ ーバーライドしていません。 2471 このメソッドは、<code>java.lang.Object</code> の <code>toString</code> メソッドを (おそらく意図的に) オ ーバーライドしていません。
2415 </p> 2472 </p>
2416 2473
2417 2474
2418 <h3><a name="NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: 明らかなメソッドとコンストラクタの混乱 (NM_METHOD _CONSTRUCTOR_CONFUSION)</a></h3> 2475 <h3><a name="NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: 明らかなメソッドとコンストラクタの混乱 (NM_METHOD _CONSTRUCTOR_CONFUSION)</a></h3>
2419 2476
2420 2477
2421 <p> 2478 <p>
2422 この正規のメソッドは定義しているクラスと同じ名前です。 2479 この正規のメソッドは定義しているクラスと同じ名前です。
2423 これはコンストラクタを意図していた可能性が高いです。もしそうなら void 戻り値の宣言を除去してください。 2480 これはコンストラクタを意図していた可能性が高いです。もしそうなら void 戻り値の宣言を除去してください。
2424 このメソッドを定義したことが偶然間違っているとわかり、正しいコンストラクタを定義したが、下位互換性のためにこのメソッドを取り除くことができないなら、メソッドを非 推奨にしてください。 2481 偶然メソッドを定義したことが間違いだとわかり、適切なコンストラクタを定義したが、後方互換性のためにこのメソッドを除去できないならメソッドを非推奨にしてください。
2425 </p> 2482 </p>
2426 2483
2427 2484
2428 <h3><a name="NM_VERY_CONFUSING">Nm: 非常に紛らわしい名前のメソッド (NM_VERY_CONFUSING)</a></h3> 2485 <h3><a name="NM_VERY_CONFUSING">Nm: 非常に紛らわしい名前のメソッド (NM_VERY_CONFUSING)</a></h3>
2429 2486
2430 2487
2431 <p> 2488 <p>
2432 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。 2489 参照されたメソッドは、大文字の使い方だけによって異なる名前があります。
2433 大文字の使い方が同一ならメソッドの1つが他のメソッドをオーバーライドするので、非常に紛らわしいです。 2490 大文字の使い方が同一ならメソッドの1つが他のメソッドをオーバーライドするので、非常に紛らわしいです。
2434 </p> 2491 </p>
2435 2492
2436 2493
2437 <h3><a name="NM_WRONG_PACKAGE">Nm: パラメータの間違ったパッケージのために、スーパークラスのメソッドをオーバーライドしていない メソッド (NM_WRONG_PACKAGE)</a></h3> 2494 <h3><a name="NM_WRONG_PACKAGE">Nm: パラメータの間違ったパッケージのためにスーパークラスのメソッドをオーバーライドしていないメ ソッド (NM_WRONG_PACKAGE)</a></h3>
2438 2495
2439 2496
2440 <p> 2497 <p>
2441 パラメータの型がスーパークラスで対応するパラメータの型と正確に合致していないので、サブクラスのメソッドはスーパークラスの類似したメソッドをオーバーライドしていま せん。<br> 2498 パラメータの型がスーパークラスで対応するパラメータの型と正確に合致していないので、サブクラスのメソッドはスーパークラスの類似したメソッドをオーバーライドしていま せん。<br>
2442 たとえば以下のようなコードです。 2499 たとえば以下のようなコードです。
2443 </p> 2500 </p>
2444 <blockquote><pre> 2501 <blockquote><pre>
2445 import alpha.Foo; 2502 import alpha.Foo;
2446 2503
2447 public class A { 2504 public class A {
(...skipping 14 matching lines...) Expand all
2462 2519
2463 <h3><a name="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: 論理式で boolean リテラル値を代入している メソッド (QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT)</a></h3> 2520 <h3><a name="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: 論理式で boolean リテラル値を代入している メソッド (QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT)</a></h3>
2464 2521
2465 2522
2466 <p> 2523 <p>
2467 このメソッドは、if または while の式の中の boolean 変数に boolean リテラル値 (true または false) を代入しています。 2524 このメソッドは、if または while の式の中の boolean 変数に boolean リテラル値 (true または false) を代入しています。
2468 おそらく、これは = による代入ではなく、== を使用して論理比較をすることになっていました。 2525 おそらく、これは = による代入ではなく、== を使用して論理比較をすることになっていました。
2469 </p> 2526 </p>
2470 2527
2471 2528
2529 <h3><a name="RANGE_ARRAY_INDEX">RANGE: 配列インデックスは範囲外 (RANGE_ARRAY_INDEX)</a></h3>
2530
2531
2532 <p>
2533 配列演算が行なわれますが、配列インデックスが範囲外なので実行時に ArrayIndexOutOfBoundsException が発生するでしょう。
2534 </p>
2535
2536
2537 <h3><a name="RANGE_ARRAY_LENGTH">RANGE: 配列の長さは範囲外 (RANGE_ARRAY_LENGTH)</a></h3>
2538
2539
2540 <p>
2541 メソッドは、配列パラメータと長さパラメータで呼び出されますが、長さは範囲外です。
2542 実行時に IndexOutOfBoundsException が発生するでしょう。
2543 </p>
2544
2545
2546 <h3><a name="RANGE_ARRAY_OFFSET">RANGE: 配列オフセットは範囲外 (RANGE_ARRAY_OFFSET)</a></h3 >
2547
2548
2549 <p>
2550 メソッドは、配列パラメータとオフセットパラメータで呼び出されますが、オフセットは範囲外です。
2551 実行時に IndexOutOfBoundsException が発生するでしょう。
2552 </p>
2553
2554
2555 <h3><a name="RANGE_STRING_INDEX">RANGE: 文字列インデックスは範囲外 (RANGE_STRING_INDEX)</a></ h3>
2556
2557
2558 <p>
2559 文字列メソッドが呼び出されます。指定された文字列インデックスは範囲外です。
2560 実行時に StringIndexOutOfBoundsException が発生するでしょう。
2561 </p>
2562
2563
2472 <h3><a name="RC_REF_COMPARISON">RC: 疑わしい参照比較 (RC_REF_COMPARISON)</a></h3> 2564 <h3><a name="RC_REF_COMPARISON">RC: 疑わしい参照比較 (RC_REF_COMPARISON)</a></h3>
2473 2565
2474 2566
2475 <p> 2567 <p>
2476 このメソッドは、 == または != 演算子を使用して2つの参照値を比較しています。 2568 このメソッドは、 == または != 演算子を使用して2つの参照値を比較しています。
2477 この型のインスタンスを比較する正しい方法は、一般に <code>equals</code> メソッドです。 2569 一般的にこの型のインスタンスを比較する正しい方法は <code>equals</code> メソッドです。
2478 等価で識別可能なインスタンスを作成する可能性がありますが異なるオブジェクトなので == で比較しないでください。 2570 等価で識別可能なインスタンスを作成する可能性がありますが異なるオブジェクトなので == で比較しないでください。
2479 参照によって一般に比較されるべきでないクラスの例は、<code>java.lang.Integer</code> 、<code>java.lang.Float< /code> などです。 2571 参照によって一般に比較されるべきでないクラスの例は、<code>java.lang.Integer</code> 、<code>java.lang.Float< /code> などです。
2480 </p> 2572 </p>
2481 2573
2482 2574
2483 <h3><a name="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: すでに利用していた値の nul l チェック (RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)</a></h3> 2575 <h3><a name="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: 既に利用していた値の null チェック (RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)</a></h3>
2484 2576
2485 2577
2486 <p> 2578 <p>
2487 ここで値が null なのかチェックしていますが、すでに値を利用していたので null である可能性はありません。 2579 ここで値が null なのかチェックしていますが、既に値を利用していたので null である可能性はありません。
2488 値が null なら以前の利用で NullPointerException が発生していたでしょう。 2580 値が null なら以前の利用で NullPointerException が発生していたでしょう。
2489 基本的に、値が null であることを許すのかどうかに関係なく、このコードと以前の値の利用は一致しません。 2581 基本的に、値が null であることを許すのかどうかに関係なく、このコードと以前の値の利用は一致しません。
2490 チェックは冗長か、または以前の値の利用は誤りです。 2582 チェックは冗長か、または以前の値の利用は誤りです。
2491 </p> 2583 </p>
2492 2584
2493 2585
2494 <h3><a name="RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: 正規表現のための無効な構文 (RE_BAD_SYN TAX_FOR_REGULAR_EXPRESSION)</a></h3> 2586 <h3><a name="RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: 正規表現のための無効な構文 (RE_BAD_SYN TAX_FOR_REGULAR_EXPRESSION)</a></h3>
2495 2587
2496 2588
2497 <p> 2589 <p>
2498 このコードは、正規表現の構文によると無効である正規表現を使用しています。 2590 このコードは、正規表現の構文によると無効である正規表現を使用しています。
2499 この文が実行されるとき PatternSyntaxException をスローします。 2591 この文が実行されるとき PatternSyntaxException をスローします。
2500 </p> 2592 </p>
2501 2593
2502 2594
2503 <h3><a name="RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION">RE: 正規表現のために使われてい る File.separator (RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION)</a></h3> 2595 <h3><a name="RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION">RE: 正規表現のために使われてい る File.separator (RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION)</a></h3>
2504 2596
2505 2597
2506 <p> 2598 <p>
2507 このコードは、正規表現が必要とされる場所で、<code>File.separator</code> を使用しています。 2599 このコードは、正規表現が必要な場所で、<code>File.separator</code> を使用しています。
2508 これは <code>File.separator</code> がバックスラッシュである Windows プラットホームでは失敗します。 2600 これは <code>File.separator</code> がバックスラッシュである Windows プラットホームでは失敗します。
2509 バックスラッシュは正規表現ではエスケープ文字として解釈されます。 2601 バックスラッシュは正規表現ではエスケープ文字として解釈されます。
2510 その他の選択肢としては、<code>File.separator</code> の代わりに <code>File.separatorChar=='\\' ? " \\\\" : File.separator</code> を使用できます。 2602 その他の選択肢としては、<code>File.separator</code> の代わりに <code>File.separatorChar=='\\' ? " \\\\" : File.separator</code> を使用できます。
2511 </p> 2603 </p>
2512 2604
2513 2605
2514 <h3><a name="RE_POSSIBLE_UNINTENDED_PATTERN">RE: 正規表現のために使われている "." または "|" (RE_ POSSIBLE_UNINTENDED_PATTERN)</a></h3> 2606 <h3><a name="RE_POSSIBLE_UNINTENDED_PATTERN">RE: 正規表現のために使われている "." または "|" (RE_ POSSIBLE_UNINTENDED_PATTERN)</a></h3>
2515 2607
2516 2608
2517 <p> 2609 <p>
2518 String 機能が呼び出されていて、"." または "|" が引数として正規表現を取るパラメータに渡されています。 2610 String 機能が呼び出されていて、"." または "|" が引数として正規表現を取るパラメータに渡されています。
2519 これは、意図したことですか? 2611 これは意図したことですか?
2520 たとえば 2612 たとえば
2521 </p> 2613 </p>
2522 <ul> 2614 <ul>
2523 <li><code>s.replaceAll(".", "/")</code> は、すべての文字が '/' 文字に置換された String を返す</li> 2615 <li><code>s.replaceAll(".", "/")</code> は、すべての文字が '/' 文字に置換された String を返す</li>
2524 <li><code>s.split(".")</code> は、常に長さが0の String 配列を返す</li> 2616 <li><code>s.split(".")</code> は、常に長さが0の String 配列を返す</li>
2525 <li><code>"ab|cd".replaceAll("|", "/")</code> は、<code>"/a/b/|/c/d/"</code> を返す </li> 2617 <li><code>"ab|cd".replaceAll("|", "/")</code> は、<code>"/a/b/|/c/d/"</code> を返す </li>
2526 <li><code>"ab|cd".split("|")</code> は、6個の要素がある配列を返す: <code>[, a, b, |, c, d]</ code></li> 2618 <li><code>"ab|cd".split("|")</code> は、6個の要素がある配列を返す: <code>[, a, b, |, c, d]</ code></li>
2527 </ul> 2619 </ul>
2528 2620
2529 2621
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2722 実際には内部クラスと外部クラスのスレッドローカルとの間にデッドロックの深刻な危険性があります。 2814 実際には内部クラスと外部クラスのスレッドローカルとの間にデッドロックの深刻な危険性があります。
2723 内部クラスが static でないので、外部クラスへの参照を保持します。 2815 内部クラスが static でないので、外部クラスへの参照を保持します。
2724 スレッドローカルに内部クラスのインスタンスの参照があるなら、内部と外部のインスタンスの両方が到達可能になり、ガベージされません。 2816 スレッドローカルに内部クラスのインスタンスの参照があるなら、内部と外部のインスタンスの両方が到達可能になり、ガベージされません。
2725 </p> 2817 </p>
2726 2818
2727 2819
2728 <h3><a name="SIO_SUPERFLUOUS_INSTANCEOF">SIO: instanceof 演算子を使用した不必要な型チェック (SIO_ SUPERFLUOUS_INSTANCEOF)</a></h3> 2820 <h3><a name="SIO_SUPERFLUOUS_INSTANCEOF">SIO: instanceof 演算子を使用した不必要な型チェック (SIO_ SUPERFLUOUS_INSTANCEOF)</a></h3>
2729 2821
2730 2822
2731 <p> 2823 <p>
2732 オブジェクトが要求する型であるかどうかにかかわらず、静的に確定している可能性があるのに instanceof 演算子を使用して型チェックをしています。 2824 オブジェクトが要求する型であるかどうかにかかわらず、静的に判定される instanceof 演算子を使用して型チェックをしています。
2733 </p> 2825 </p>
2734 2826
2735 2827
2736 <h3><a name="SQL_BAD_PREPARED_STATEMENT_ACCESS">SQL: インデックスが0で PreparedStatement にアクセスしようとしているメソッド (SQL_BAD_PREPARED_STATEMENT_ACCESS)</a></h3> 2828 <h3><a name="SQL_BAD_PREPARED_STATEMENT_ACCESS">SQL: インデックスが0で PreparedStatement にアクセスしようとしているメソッド (SQL_BAD_PREPARED_STATEMENT_ACCESS)</a></h3>
2737 2829
2738 2830
2739 <p> 2831 <p>
2740 インデックスが0で、<code>PreparedStatement</code> の setXXX メソッドを呼び出しています。 2832 インデックスが0で、<code>PreparedStatement</code> の setXXX メソッドを呼び出しています。
2741 インデックスは1から開始するので、これは常に間違いです。 2833 インデックスは1から開始するので、これは常に間違いです。
2742 </p> 2834 </p>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2783 2875
2784 <p> 2876 <p>
2785 <code>readResolve</code> メソッドが直列化機構で認識されるためには static メソッドとして宣言してはいけません。 2877 <code>readResolve</code> メソッドが直列化機構で認識されるためには static メソッドとして宣言してはいけません。
2786 </p> 2878 </p>
2787 2879
2788 2880
2789 <h3><a name="TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED">TQ: 型修飾子でアノテーションされた値がその修 飾子を付けてはならない値を必要とする場所で使われている (TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED)</a></h3> 2881 <h3><a name="TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED">TQ: 型修飾子でアノテーションされた値がその修 飾子を付けてはならない値を必要とする場所で使われている (TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED)</a></h3>
2790 2882
2791 2883
2792 <p> 2884 <p>
2793 型修飾子であのてーとされた値がその修飾子を付けてはならない値を必要とする場所で使われています 2885 型修飾子でアノテートされた値がその修飾子を付けてはならない値を必要とする場所で使われています
2794 </p> 2886 </p>
2795 <p> 2887 <p>
2796 より正確に、when=ALWAYS を指定した型修飾子でアノテートされた値が到達することが保証されているか同じ型修飾子で when=NEVER を指定する場所で 使用しています。 2888 より正確に、when=ALWAYS を指定した型修飾子でアノテートされた値が到達することが保証されているか同じ型修飾子で when=NEVER を指定する場所で 使用しています。
2797 </p> 2889 </p>
2798 <p> 2890 <p>
2799 たとえば、@NonNegative が型修飾子アノテーション @Negative(when=When.NEVER) の略称だとします 2891 たとえば、@NonNegative は型修飾子アノテーション @Negative(when=When.NEVER) の略称とします
2800 以下のコードは、return 文が @NonNegative 値を要求するが @Negative としてマークされている値を受け取るのでこの警告を生成します。 2892 以下のコードは、return 文が @NonNegative 値を要求するが @Negative としてマークされている値を受け取るのでこの警告を生成します。
2801 </p> 2893 </p>
2802 <blockquote><pre> 2894 <blockquote><pre>
2803 public @NonNegative Integer example(@Negative Integer value) { 2895 public @NonNegative Integer example(@Negative Integer value) {
2804 return value; 2896 return value;
2805 } 2897 }
2806 </pre></blockquote> 2898 </pre></blockquote>
2807 2899
2808 2900
2809 <h3><a name="TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">TQ: 互換性のない型修 飾子による比較値 (TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS)</a></h3> 2901 <h3><a name="TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">TQ: 互換性のない型修 飾子による比較値 (TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS)</a></h3>
2810 2902
2811 2903
2812 <p> 2904 <p>
2813 型修飾子アノテーションを指定した値がその修飾子のない値と比較しています。 2905 型修飾子アノテーションを指定した値がその修飾子のない値と比較しています。
2814 </p> 2906 </p>
2815 <p> 2907 <p>
2816 より正確に、when=ALWAYS を指定した型修飾子でアノテートされた値が同じ型修飾子で when=NEVER を指定する値と比較しています。 2908 より正確に、when=ALWAYS を指定した型修飾子でアノテートされた値が同じ型修飾子で when=NEVER を指定する値と比較しています。
2817 </p> 2909 </p>
2818 <p> 2910 <p>
2819 たとえば、@NonNegative が型修飾子アノテーション @Negative(when=When.NEVER) の略称だとします 2911 たとえば、@NonNegative は型修飾子アノテーション @Negative(when=When.NEVER) の略称とします
2820 以下のコードは、return 文が @NonNegative 値を要求するが、@Negative としてマークされている値を受け取るのでこの警告を生成します。 2912 以下のコードは、return 文が @NonNegative 値を要求するが、@Negative としてマークされている値を受け取るのでこの警告を生成します。
2821 </p> 2913 </p>
2822 <blockquote><pre> 2914 <blockquote><pre>
2823 public boolean example(@Negative Integer value1, @NonNegative Integer value2) { 2915 public boolean example(@Negative Integer value1, @NonNegative Integer value2) {
2824 return value1.equals(value2); 2916 return value1.equals(value2);
2825 } 2917 }
2826 </pre></blockquote> 2918 </pre></blockquote>
2827 2919
2828 2920
2829 <h3><a name="TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: 型修飾子を付けていないかもしれない値がそ の型修飾子を必要とする方法で常に使われている (TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a></h3> 2921 <h3><a name="TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: 型修飾子を付けていないかもしれない値がそ の型修飾子を必要とする方法で常に使われている (TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a></h3>
(...skipping 26 matching lines...) Expand all
2856 2948
2857 2949
2858 <h3><a name="TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ: 型修飾子がない値が 修飾子を必要とする場所で使われている (TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED)</a></h 3> 2950 <h3><a name="TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ: 型修飾子がない値が 修飾子を必要とする場所で使われている (TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED)</a></h 3>
2859 2951
2860 2952
2861 <p> 2953 <p>
2862 値が型修飾子アノテーションを必要とする方法で使われています。型修飾子は厳密なので、ツールは適切なアノテーションを指定していない値を拒絶します。 2954 値が型修飾子アノテーションを必要とする方法で使われています。型修飾子は厳密なので、ツールは適切なアノテーションを指定していない値を拒絶します。
2863 </p> 2955 </p>
2864 <p> 2956 <p>
2865 厳密なアノテーションを指定しているので値を型変換します。戻り値が厳密なアノテーションでアノテートされる同一性機能を定義してください。 2957 厳密なアノテーションを指定しているので値を型変換します。戻り値が厳密なアノテーションでアノテートされる同一性機能を定義してください。
2866 これは、厳密な型修飾子アノテーションで非アノテート値を値に変える唯一の方法です 2958 これは厳密な型修飾子アノテーションで非アノテート値を値に変える唯一の方法です
2867 </p> 2959 </p>
2868 2960
2869 2961
2870 <h3><a name="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS">UMAC: 呼び出し不可能なメソッドが無名クラス で定義されている (UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS)</a></h3> 2962 <h3><a name="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS">UMAC: 呼び出し不可能なメソッドが無名クラス で定義されている (UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS)</a></h3>
2871 2963
2872 2964
2873 <p> 2965 <p>
2874 この無名クラスは、直接呼び出されないスーパークラスのメソッドをオーバーライドしていないメソッドを定義しています。 2966 この無名クラスは、直接呼び出されないスーパークラスのメソッドをオーバーライドしていないメソッドを定義しています。
2875 他のクラスのメソッドが無名クラスで宣言されたメソッドを直接呼び出せないので、このメソッドは呼び出し不可能であると思われます 2967 他のクラスのメソッドが無名クラスで宣言されたメソッドを直接呼び出せないので、このメソッドは呼び出し不可能だと思われます
2876 メソッドは単にデッドコードであるかもしれません。しかし、メソッドがスーパークラスで宣言されるメソッドをオーバーライドすることを意図した可能性もあります。 2968 メソッドは単にデッドコードであるかもしれません。しかし、メソッドがスーパークラスで宣言されるメソッドをオーバーライドすることを意図した可能性もあります。
2877 そして、タイプミスまたは他の誤りのために、メソッドは、実際、それが意図されるメソッドをオーバーライドしません。 2969 そして、タイプミスまたは他の誤りのためにメソッドは、実際には意図しているメソッドをオーバーライドしません。
2878 </p> 2970 </p>
2879 2971
2880 2972
2881 <h3><a name="UR_UNINIT_READ">UR: コンストラクタで初期化されていないフィールドを読み出している (UR_UNINIT_READ) </a></h3> 2973 <h3><a name="UR_UNINIT_READ">UR: コンストラクタで初期化されていないフィールドを読み出している (UR_UNINIT_READ) </a></h3>
2882 2974
2883 2975
2884 <p> 2976 <p>
2885 このコンストラクタは、まだ値が代入されていないフィールドを読み出しています。 2977 このコンストラクタは、まだ値が代入されていないフィールドを読み出しています。
2886 多くの場合、プログラマがコンストラクタのパラメータの代わりに誤ってフィールドを使用するときに起きます 2978 多くの場合、プログラマがコンストラクタのパラメータの代わりに誤ってフィールドを使うときに起きます
2887 </p> 2979 </p>
2888 2980
2889 2981
2890 <h3><a name="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR">UR: スーパークラスのコンストラクタから 呼び出されるメソッドで初期化されていないフィールドを読み出している (UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR) </a></h3> 2982 <h3><a name="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR">UR: スーパークラスのコンストラクタから 呼び出されるメソッドで初期化されていないフィールドを読み出している (UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR) </a></h3>
2891 2983
2892 2984
2893 <p> 2985 <p>
2894 このメソッドは、スーパークラスのコンストラクタで呼びされています。この時点では、クラスのフィールドはまだ初期化されていません。 2986 このメソッドは、スーパークラスのコンストラクタで呼びされています。この時点では、クラスのフィールドはまだ初期化されていません。
2895 </p> 2987 </p>
2896 <p> 2988 <p>
(...skipping 26 matching lines...) Expand all
2923 したがって、<code>A</code> のコンストラクタが <code>getValue</code> を呼び出すとき、<code>value</code> の初期化されていない値が読み出されます。 3015 したがって、<code>A</code> のコンストラクタが <code>getValue</code> を呼び出すとき、<code>value</code> の初期化されていない値が読み出されます。
2924 </p> 3016 </p>
2925 3017
2926 3018
2927 3019
2928 <h3><a name="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">USELESS_STRING: 名前のない配列で toString メソッドを呼び出している (DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY)</a></h3> 3020 <h3><a name="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">USELESS_STRING: 名前のない配列で toString メソッドを呼び出している (DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY)</a></h3>
2929 3021
2930 3022
2931 <p> 3023 <p>
2932 このコードは、無名の配列で <code>toString</code> メソッドを呼び出しています。「[C@16f0472」のようなかなり役に立たない結果を生成 します。 3024 このコードは、無名の配列で <code>toString</code> メソッドを呼び出しています。「[C@16f0472」のようなかなり役に立たない結果を生成 します。
2933 配列のコンテンツを与え、読める文字列に変換するために<code>Arrays.toString()</code> を使うことを検討してください。<br> 3025 配列のコンテンツを与え、読める文字列に変換するために <code>Arrays.toString()</code> を使用することを検討してください。<br>
2934 『Programming Puzzlers』の第3章、パズル12を参照してください。 3026 『Programming Puzzlers』の第3章、パズル12を参照してください。
2935 </p> 3027 </p>
2936 3028
2937 3029
2938 <h3><a name="DMI_INVOKING_TOSTRING_ON_ARRAY">USELESS_STRING: 配列で toString メソッドを呼 び出している (DMI_INVOKING_TOSTRING_ON_ARRAY)</a></h3> 3030 <h3><a name="DMI_INVOKING_TOSTRING_ON_ARRAY">USELESS_STRING: 配列で toString メソッドを呼 び出している (DMI_INVOKING_TOSTRING_ON_ARRAY)</a></h3>
2939 3031
2940 3032
2941 <p> 3033 <p>
2942 このコードは、配列で <code>toString</code> メソッドを呼び出しています。「[C@16f0472」のようなかなり役に立たない結果を生成します 。 3034 このコードは、配列で <code>toString</code> メソッドを呼び出しています。「[C@16f0472」のようなかなり役に立たない結果を生成します 。
2943 配列のコンテンツを与え、読める文字列に変換するために<code>Arrays.toString()</code> を使うことを検討してください。<br> 3035 配列のコンテンツを与え、読める文字列に変換するために <code>Arrays.toString()</code> を使用することを検討してください。<br>
2944 『Programming Puzzlers』の第3章、パズル12を参照してください。 3036 『Programming Puzzlers』の第3章、パズル12を参照してください。
2945 </p> 3037 </p>
2946 3038
2947 3039
2948 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY">USELESS_STRING: 書式文字列を使 用して役に立たない方法で配列をフォーマットしている (VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY)</a></h3> 3040 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY">USELESS_STRING: 書式文字列を使 用して役に立たない方法で配列をフォーマットしている (VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY)</a></h3>
2949 3041
2950 3042
2951 <p> 3043 <p>
2952 書式文字列でフォーマットされている引数の1つは配列です。 3044 書式文字列でフォーマットされている引数の1つは配列です。
2953 これは [I@304282 のようなかなり役に立たない書式を使用してフォーマットされます。それは配列のコンテンツを表示しません 3045 [I@304282 のように配列のコンテンツを表示しないかなり役に立たない書式を使用してフォーマットされます
2954 フォーマットで扱う前に <code>Arrays.asList(...)</code> を使用して配列をラップすることを検討してください。 3046 フォーマットで扱う前に <code>Arrays.asList(...)</code> を使用して配列をラップすることを検討してください。
2955 </p> 3047 </p>
2956 3048
2957 3049
2958 <h3><a name="UWF_NULL_FIELD">UwF: null に設定されるだけのフィールド (UWF_NULL_FIELD)</a></h3> 3050 <h3><a name="UWF_NULL_FIELD">UwF: null に設定されるだけのフィールド (UWF_NULL_FIELD)</a></h3>
2959 3051
2960 3052
2961 <p> 3053 <p>
2962 このフィールドに定数値 null を書き込みます。したがって、フィールドの読み出しは null を返します。 3054 このフィールドに定数値 null を書き込みます。したがって、フィールドの読み出しは null を返します。
2963 誤りをチェックしてください。使わないなら除去してください 3055 誤りをチェックしてください。役に立たないなら除去してください
2964 </p> 3056 </p>
2965 3057
2966 3058
2967 <h3><a name="UWF_UNWRITTEN_FIELD">UwF: 書き込まれていないフィールド (UWF_UNWRITTEN_FIELD)</a>< /h3> 3059 <h3><a name="UWF_UNWRITTEN_FIELD">UwF: 書き込まれていないフィールド (UWF_UNWRITTEN_FIELD)</a>< /h3>
2968 3060
2969 3061
2970 <p> 3062 <p>
2971 このフィールドは決して書き込まれません。このフィールドからの読み出しはデフォルト値を返します。 3063 このフィールドは決して書き込まれません。このフィールドからの読み出しはデフォルト値を返します。
2972 誤りをチェックしてください (フィールドは初期化するべきでしたか?)。使わないなら除去してください 3064 誤りをチェックしてください (フィールドは初期化するべきでしたか?)。役に立たないなら除去してください
2973 </p> 3065 </p>
2974 3066
2975 3067
2976 <h3><a name="VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG">VA: 可変長引数を期待しているメソッドにプリ ミティブ型の配列を渡している (VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG)</a></h3> 3068 <h3><a name="VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG">VA: 可変長引数を期待しているメソッドにプリ ミティブ型の配列を渡している (VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG)</a></h3>
2977 3069
2978 3070
2979 <p> 3071 <p>
2980 このコードは可変長引数をとるメソッドにプリミティブ型の配列を渡しています。 3072 このコードは可変長引数をとるメソッドにプリミティブ型の配列を渡しています。
2981 これは、プリミティブ型の配列を保持するために長さが1の配列を作成してメソッドに渡します 3073 これはプリミティブ型の配列を保持するために長さが1の配列を作成してメソッドに渡します
2982 </p> 3074 </p>
2983 3075
2984 3076
2985 <h3><a name="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">LG: ロガーの変更は OpenJDK の弱参照が原因で潜 在的に失われる (LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)</a></h3> 3077 <h3><a name="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">LG: ロガーの変更は OpenJDK の弱参照が原因で潜 在的に失われる (LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)</a></h3>
2986 3078
2987 3079
2988 <p> 3080 <p>
2989 OpenJDK は、潜在的非互換性を取り入れました。特に、<code>java.util.logging.Logger</code> は振る舞いが変更されていま す。 3081 OpenJDK は、潜在的非互換性を取り入れました。特に、<code>java.util.logging.Logger</code> は振る舞いが変更されていま す。
2990 強参照を使用する代わりに、現在、内部的に弱参照を使用しています 3082 強参照を使用する代わりに弱参照を内部的に使用しています
2991 それは理にかなった変更ですが、残念ながらいくつかのコードは古い振る舞いに依存しています。 3083 それは理にかなった変更ですが、残念ながらいくつかのコードは古い振る舞いに依存しています。
2992 ロガーの構成を変更するとき、ロガーへの参照を捨てます。 3084 ロガーの構成を変更するとき、ロガーへの参照を捨てます。
2993 つまり、ガベージコレクタはそのメモリを回収できます。それは、ロガーの構成が失われることを意味します。<br> 3085 つまり、ガベージコレクタはそのメモリを回収できます。それは、ロガーの構成が失われることを意味します。<br>
2994 たとえば、以下を検討してください。 3086 たとえば、以下を検討してください。
2995 </p> 3087 </p>
2996 <blockquote><pre> 3088 <blockquote><pre>
2997 public static void initLogging() throws Exception { 3089 public static void initLogging() throws Exception {
2998 Logger logger = Logger.getLogger("edu.umd.cs"); 3090 Logger logger = Logger.getLogger("edu.umd.cs");
2999 logger.addHandler(new FileHandler()); // ロガーの構成の変更 3091 logger.addHandler(new FileHandler()); // ロガーの構成の変更
3000 logger.setUseParentHandlers(false); // 別のロガーの構成の変更 3092 logger.setUseParentHandlers(false); // 別のロガーの構成の変更
(...skipping 12 matching lines...) Expand all
3013 </pre></blockquote> 3105 </pre></blockquote>
3014 <p> 3106 <p>
3015 Ulf Ochsenfahrt と Eric Fellheimer 3107 Ulf Ochsenfahrt と Eric Fellheimer
3016 </p> 3108 </p>
3017 3109
3018 3110
3019 <h3><a name="OBL_UNSATISFIED_OBLIGATION">OBL: ストリームやリソースのクリーンアップに失敗するかもしれないメソッド (OBL_UNSATISFIED_OBLIGATION)</a></h3> 3111 <h3><a name="OBL_UNSATISFIED_OBLIGATION">OBL: ストリームやリソースのクリーンアップに失敗するかもしれないメソッド (OBL_UNSATISFIED_OBLIGATION)</a></h3>
3020 3112
3021 3113
3022 <p> 3114 <p>
3023 このメソッドは、ストリーム、データベースオブジェクト、または明示的にクリーンアップ操作を必要としている他のリソースのクリーンアップ (クローズする、片付ける) に失敗するかもしれません。 3115 このメソッドは、ストリーム、データベースオブジェクト、またはクリーンアップ操作を明示的に必要としている他のリソースのクリーンアップ (クローズする、片付ける) に失敗するかもしれません。
3024 </p> 3116 </p>
3025 <p> 3117 <p>
3026 一般に、メソッドがストリープや他のリソースを開いたなら、メソッドはストリームやリソースがメソッドが戻る前にクリーンアップされることを確認するためにtry/fi nally ブロックを使用するべきです。 3118 一般的にメソッドがストリープや他のリソースを開いたなら、メソッドはストリームやリソースがメソッドが戻る前にクリーンアップされることを確認するために try/fi nally ブロックを使用するべきです。
3027 </p> 3119 </p>
3028 <p> 3120 <p>
3029 このバグパターンは、OS_OPEN_STREAM と ODR_OPEN_DATABASE_RESOURCE と基本的に同じですが異なる (そして、うまくいけばよ り良い) 静的解析技術に基づいています。 3121 このバグパターンは、OS_OPEN_STREAM と ODR_OPEN_DATABASE_RESOURCE と基本的に同じですが異なる (そして、うまくいけばよ り良い) 静的解析技術に基づいています。
3030 私たちは、このバグパターンの有効性についてのフィードバックを得ることに関心があります。 3122 私たちは、このバグパターンの有効性についてのフィードバックを得ることに関心があります。
3031 どちらかの方法でフィードバックを送ってください。 3123 どちらかの方法でフィードバックを送ってください。
3032 </p> 3124 </p>
3033 <ul> 3125 <ul>
3034 <li>send email to findbugs@cs.umd.edu</li> 3126 <li>send email to findbugs@cs.umd.edu</li>
3035 <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs. html">http://findbugs.sourceforge.net/reportingBugs.html</a></li> 3127 <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs. html">http://findbugs.sourceforge.net/reportingBugs.html</a></li>
3036 </ul> 3128 </ul>
3037 <p> 3129 <p>
3038 特に、このバグパターンの誤検出抑制探索法は詳細にわたって調整されていないので、誤検出についてのレポートは我々の助けになります。 3130 特に、このバグパターンの誤検出抑制探索法は詳細にわたって調整されていないので、誤検出についてのレポートは我々の助けになります。
3039 </p> 3131 </p>
3040 <p> 3132 <p>
3041 解析技術の説明は、Weimer と Necula による <i>Finding and Preventing Run-Time Error Handling M istakes</i> を参照してください。 3133 解析技術の説明は、Weimer と Necula による <i>Finding and Preventing Run-Time Error Handling M istakes</i> を参照してください。
3042 </p> 3134 </p>
3043 3135
3044 3136
3045 <h3><a name="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">OBL: チェック例外でストリームやリソースのク リーンアップに失敗するかもしれないメソッド (OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE)</a></h3> 3137 <h3><a name="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">OBL: チェック例外でストリームやリソースのク リーンアップに失敗するかもしれないメソッド (OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE)</a></h3>
3046 3138
3047 3139
3048 <p> 3140 <p>
3049 このメソッドは、ストリーム、データベースオブジェクト、または明示的にクリーンアップ操作を必要としている他のリソースのクリーンアップ (クローズする、片付ける) に失敗するかもしれません。 3141 このメソッドは、ストリーム、データベースオブジェクト、またはクリーンアップ操作を明示的必要としている他のリソースのクリーンアップ (クローズする、片付ける) に 失敗するかもしれません。
3050 </p> 3142 </p>
3051 <p> 3143 <p>
3052 一般に、メソッドがストリープや他のリソースを開いたなら、メソッドはストリームやリソースがメソッドが戻る前にクリーンアップされることを確認するためにtry/fi nally ブロックを使用するべきです。 3144 一般的にメソッドがストリープや他のリソースを開いたなら、メソッドはストリームやリソースがメソッドが戻る前にクリーンアップされることを確認するために try/fi nally ブロックを使用するべきです。
3053 </p> 3145 </p>
3054 <p> 3146 <p>
3055 このバグパターンは、OS_OPEN_STREAM と ODR_OPEN_DATABASE_RESOURCE と基本的に同じですが異なる (そして、うまくいけばよ り良い) 静的解析技術に基づいています。 3147 このバグパターンは、OS_OPEN_STREAM と ODR_OPEN_DATABASE_RESOURCE と基本的に同じですが異なる (そして、うまくいけばよ り良い) 静的解析技術に基づいています。
3056 私たちは、このバグパターンの有効性についてのフィードバックを得ることに関心があります。 3148 私たちは、このバグパターンの有効性についてのフィードバックを得ることに関心があります。
3057 どちらかの方法でフィードバックを送ってください。 3149 どちらかの方法でフィードバックを送ってください。
3058 </p> 3150 </p>
3059 <ul> 3151 <ul>
3060 <li>send email to findbugs@cs.umd.edu</li> 3152 <li>send email to findbugs@cs.umd.edu</li>
3061 <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs. html">http://findbugs.sourceforge.net/reportingBugs.html</a></li> 3153 <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs. html">http://findbugs.sourceforge.net/reportingBugs.html</a></li>
3062 </ul> 3154 </ul>
3063 <p> 3155 <p>
3064 特に、このバグパターンの誤検出抑制探索法は詳細にわたって調整されていないので、誤検出についてのレポートは我々の助けになります。 3156 特に、このバグパターンの誤検出抑制探索法は詳細にわたって調整されていないので、誤検出についてのレポートは我々の助けになります。
3065 </p> 3157 </p>
3066 <p> 3158 <p>
3067 解析技術の説明は、Weimer と Necula による <i>Finding and Preventing Run-Time Error Handling M istakes</i> を参照してください。 3159 解析技術の説明は、Weimer と Necula による <i>Finding and Preventing Run-Time Error Handling M istakes</i> を参照してください。
3068 </p> 3160 </p>
3069 3161
3070 3162
3071 <h3><a name="DM_CONVERT_CASE">Dm: 呼び出したメソッドの Locale パラメータの使用を検討する (DM_CONVERT_CA SE)</a></h3> 3163 <h3><a name="DM_CONVERT_CASE">Dm: 呼び出したメソッドの Locale パラメータの使用を検討する (DM_CONVERT_CA SE)</a></h3>
3072 3164
3073 3165
3074 <p> 3166 <p>
3075 文字列がプラットホームのデフォルトエンコーディングを使用して大文字、小文字に変換されています。 3167 文字列がプラットホームのデフォルトエンコーディングを使用して大文字、小文字に変換されています。
3076 国際文字で使われると不適切な変換になるかもしれません 3168 国際文字で使われると不適切な変換になることがあります
3077 </p> 3169 </p>
3078 <ul> 3170 <ul>
3079 <li>String.toUpperCase(Locale l)</li> 3171 <li>String.toUpperCase(Locale l)</li>
3080 <li>String.toLowerCase(Locale l)</li> 3172 <li>String.toLowerCase(Locale l)</li>
3081 </ul> 3173 </ul>
3082 3174
3083 3175
3084 <h3><a name="DM_DEFAULT_ENCODING">Dm: デフォルトエンコーディングへの依存 (DM_DEFAULT_ENCODING)</a ></h3> 3176 <h3><a name="DM_DEFAULT_ENCODING">Dm: デフォルトエンコーディングへの依存 (DM_DEFAULT_ENCODING)</a ></h3>
3085 3177
3086 3178
3087 <p> 3179 <p>
3088 byte から String (または String から byte) への変換で、デフォルトプラットホームエンコーディングが適切であると仮定するメソッドの呼び 出しを発見しました 3180 byte から String (または String から byte) への変換で、デフォルトプラットホームエンコーディングが適切だと仮定するメソッドの呼び出し を発見しました
3089 これは、アプリケーションの振る舞いがプラットホーム間で異なる原因となります。代替 API を使用して、明示的に文字セット名または Charset オブジェクトを 指定して下さい 3181 これはアプリケーションの振る舞いがプラットホーム間で異なる原因となります。代替 API を使用して、文字セット名または Charset オブジェクトを明示的に指 定して下さい
3090 </p> 3182 </p>
3091 3183
3092 3184
3093 <h3><a name="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">DP: doPrivileged ブロック内で 作成されるべきクラスローダ (DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED)</a></h3> 3185 <h3><a name="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">DP: doPrivileged ブロック内で 作成されるべきクラスローダ (DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED)</a></h3>
3094 3186
3095 3187
3096 <p> 3188 <p>
3097 このコードはクラスローダを作成していますが、セキュリティ管理がインストールされるなら許可が必要です。 3189 このコードはクラスローダを作成していますが、セキュリティ管理がインストールされるなら許可が必要です。
3098 このコードがセキュリティ許可がないコードによって呼び出されるなら、クラスローダの作成は doPrivileged ブロックの中で行う必要があります。 3190 このコードがセキュリティ許可がないコードによって呼び出されるなら、クラスローダの作成は doPrivileged ブロックの中で行う必要があります。
3099 </p> 3191 </p>
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3139 <h3><a name="EI_EXPOSE_STATIC_REP2">MS: static フィールドに可変オブジェクトを格納することによって、内部の静的状態 を暴露するかもしれないメソッド (EI_EXPOSE_STATIC_REP2)</a></h3> 3231 <h3><a name="EI_EXPOSE_STATIC_REP2">MS: static フィールドに可変オブジェクトを格納することによって、内部の静的状態 を暴露するかもしれないメソッド (EI_EXPOSE_STATIC_REP2)</a></h3>
3140 3232
3141 3233
3142 <p> 3234 <p>
3143 このコードは、static フィールドに外部の可変オブジェクトを格納しています。 3235 このコードは、static フィールドに外部の可変オブジェクトを格納しています。
3144 可変オブジェクトのチェックされていない変更がセキュリティや他の重要なプロパティを危うくするでしょう。 3236 可変オブジェクトのチェックされていない変更がセキュリティや他の重要なプロパティを危うくするでしょう。
3145 何か違うことをする必要があります。オブジェクトのコピーを保存することは、多くの状況でより良いアプローチです。 3237 何か違うことをする必要があります。オブジェクトのコピーを保存することは、多くの状況でより良いアプローチです。
3146 </p> 3238 </p>
3147 3239
3148 3240
3149 <h3><a name="MS_CANNOT_BE_FINAL">MS: final でないフィールドは悪質なコードから保護できない (MS_CANNOT_BE _FINAL)</a></h3> 3241 <h3><a name="MS_CANNOT_BE_FINAL">MS: final でないフィールドは悪意のあるコードから保護できない (MS_CANNOT_ BE_FINAL)</a></h3>
3150 3242
3151 3243
3152 <p> 3244 <p>
3153 この可変 static フィールドは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3245 この可変 static フィールドは悪意のあるコードや偶然別のパッケージによって変更できます
3154 残念ながらこのような使い方は簡単に解決できません。 3246 残念ながらこのような使い方は簡単に解決できません。
3155 </p> 3247 </p>
3156 3248
3157 3249
3158 <h3><a name="MS_EXPOSE_REP">MS: 配列を返すことによって内部表現を暴露するかもしれない public static メソッド (M S_EXPOSE_REP)</a></h3> 3250 <h3><a name="MS_EXPOSE_REP">MS: 配列を返すことによって内部表現を暴露するかもしれない public static メソッド (M S_EXPOSE_REP)</a></h3>
3159 3251
3160 3252
3161 <p> 3253 <p>
3162 public static メソッドは、クラスの 静的な状態の一部である配列の参照を返します。 3254 public static メソッドは、クラスの 静的な状態の一部である配列の参照を返します。
3163 このメソッドを呼び出すどんなコードも、基底配列を自由に変更できます。 3255 このメソッドを呼び出すどんなコードも、基底配列を自由に変更できます。
3164 解決策は、配列のコピーを返すことです。 3256 解決策は、配列のコピーを返すことです。
3165 </p> 3257 </p>
3166 3258
3167 3259
3168 <h3><a name="MS_FINAL_PKGPROTECT">MS: final かつパッケージプロテクテッドにすべきフィールド (MS_FINAL_PK GPROTECT)</a></h3> 3260 <h3><a name="MS_FINAL_PKGPROTECT">MS: final かつパッケージプロテクテッドにすべきフィールド (MS_FINAL_PK GPROTECT)</a></h3>
3169 3261
3170 3262
3171 <p> 3263 <p>
3172 この可変 static フィールドは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3264 この可変 static フィールドは悪意のあるコードや偶然別のパッケージによって変更できます
3173 フィールドは、脆弱性を回避するために final および/またはパッケージプロテクテッドにします。 3265 フィールドは、脆弱性を回避するために final および/またはパッケージプロテクテッドにします。
3174 </p> 3266 </p>
3175 3267
3176 3268
3177 <h3><a name="MS_MUTABLE_ARRAY">MS: 可変配列のフィールド (MS_MUTABLE_ARRAY)</a></h3> 3269 <h3><a name="MS_MUTABLE_ARRAY">MS: 可変配列のフィールド (MS_MUTABLE_ARRAY)</a></h3>
3178 3270
3179 3271
3180 <p> 3272 <p>
3181 この final static フィールドは、配列を参照しているので、悪質なコードや偶然別のパッケージによってアクセスされる可能性があります 3273 この final static フィールドは配列を参照しているので、悪意のあるコードや偶然別のパッケージによってアクセスできます
3182 このコードは、配列のコンテンツを自由に変更できます。 3274 このコードは、配列のコンテンツを自由に変更できます。
3183 </p> 3275 </p>
3184 3276
3185 3277
3278 <h3><a name="MS_MUTABLE_COLLECTION">MS: 可変コレクションのフィールド (MS_MUTABLE_COLLECTION)</ a></h3>
3279
3280
3281 <p>
3282 可変コレクションのインスタンスが final static フィールドに割り当てられています。
3283 したがって、 悪意のあるコードや偶然別のパッケージによって変更できます。
3284 脆弱性を避けるために Collections.unmodifiableSet/List/Map などでこのフィールドをラップすることを検討してください。
3285 </p>
3286
3287
3288 <h3><a name="MS_MUTABLE_COLLECTION_PKGPROTECT">MS: パッケージプロテクテッドにすべき可変コレクションのフィール ド (MS_MUTABLE_COLLECTION_PKGPROTECT)</a></h3>
3289
3290
3291 <p>
3292 可変コレクションのインスタンスが final static フィールドに割り当てられています。
3293 したがって、悪意のあるコードや偶然別のパッケージによって変更できます。
3294 フィールドは脆弱性を避けるためにパッケージプロテクテッドにできます。
3295 代わりに Collections.unmodifiableSet/List/Map などでこのフィールドをラップしても脆弱性を避けることができます。
3296 </p>
3297
3298
3186 <h3><a name="MS_MUTABLE_HASHTABLE">MS: 可変 Hashtable のフィールド (MS_MUTABLE_HASHTABLE )</a></h3> 3299 <h3><a name="MS_MUTABLE_HASHTABLE">MS: 可変 Hashtable のフィールド (MS_MUTABLE_HASHTABLE )</a></h3>
3187 3300
3188 3301
3189 <p> 3302 <p>
3190 この final static フィールドはHashtable を参照しているので、悪質なコードや偶然別のパッケージによってアクセスされる可能性があります 3303 この final static フィールドは Hashtable を参照しているので、悪意のあるコードや偶然別のパッケージによってアクセスできます
3191 このコードは、Hashtable のコンテンツを自由に変更できます。 3304 このコードは、Hashtable のコンテンツを自由に変更できます。
3192 </p> 3305 </p>
3193 3306
3194 3307
3195 <h3><a name="MS_OOI_PKGPROTECT">MS: インタフェースから移動してパッケージプロテクテッドにすべきフィールド (MS_OOI_P KGPROTECT)</a></h3> 3308 <h3><a name="MS_OOI_PKGPROTECT">MS: インタフェースから移動してパッケージプロテクテッドにすべきフィールド (MS_OOI_P KGPROTECT)</a></h3>
3196 3309
3197 3310
3198 <p> 3311 <p>
3199 インタフェースに定義された final static フィールドが、配列や Hashtable などの可変オブジェクトを参照しています。 3312 インタフェースに定義された final static フィールドが配列や Hashtable などの可変オブジェクトを参照しています。
3200 この可変オブジェクトは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3313 この可変オブジェクトは悪意のあるコードや偶然別のパッケージによって変更できます
3201 これを解決するために、フィールドはクラスへ移動する必要があり、脆弱性を回避するためにパッケージプロテクテッドにします。 3314 これを解決するためにフィールドはクラスへ移動する必要があり、脆弱性を回避するためにパッケージプロテクテッドにします。
3202 </p> 3315 </p>
3203 3316
3204 3317
3205 <h3><a name="MS_PKGPROTECT">MS: パッケージプロテクテッドにすべきフィールド (MS_PKGPROTECT)</a></h3> 3318 <h3><a name="MS_PKGPROTECT">MS: パッケージプロテクテッドにすべきフィールド (MS_PKGPROTECT)</a></h3>
3206 3319
3207 3320
3208 <p> 3321 <p>
3209 この可変 static フィールドは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3322 この可変 static フィールドは悪意のあるコードや偶然別のパッケージによって変更できます
3210 フィールドは、脆弱性を回避するためにパッケージプロテクテッドにします。 3323 フィールドは、脆弱性を回避するためにパッケージプロテクテッドにします。
3211 </p> 3324 </p>
3212 3325
3213 3326
3214 <h3><a name="MS_SHOULD_BE_FINAL">MS: final にすべきフィールド (MS_SHOULD_BE_FINAL)</a></h 3> 3327 <h3><a name="MS_SHOULD_BE_FINAL">MS: final にすべきフィールド (MS_SHOULD_BE_FINAL)</a></h 3>
3215 3328
3216 3329
3217 <p> 3330 <p>
3218 final でない public static フィールドは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3331 final でない public static フィールドは悪意のあるコードや偶然別のパッケージによって変更できます
3219 フィールドは、脆弱性を回避するために final にします。 3332 フィールドは、脆弱性を回避するために final にします。
3220 </p> 3333 </p>
3221 3334
3222 3335
3223 <h3><a name="MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: final でないフィールドはリファクタリングするべ き (MS_SHOULD_BE_REFACTORED_TO_BE_FINAL)</a></h3> 3336 <h3><a name="MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: final でないフィールドはリファクタリングするべ き (MS_SHOULD_BE_REFACTORED_TO_BE_FINAL)</a></h3>
3224 3337
3225 3338
3226 <p> 3339 <p>
3227 final でない public static フィールドは、悪質なコードや偶然別のパッケージによって変更される可能性があります 3340 final でない public static フィールドは悪意のあるコードや偶然別のパッケージによって変更できます
3228 フィールドは、脆弱性を回避するために final にします。 3341 フィールドは、脆弱性を回避するために final にします。
3229 しかしながら、スタティックイニシャライザには複数のフィールドへの書き込みがあるので、何らかのリファクタリングを必要とするでしょう。 3342 しかしながら、スタティックイニシャライザには複数のフィールドへの書き込みがあるので、何らかのリファクタリングを必要とするでしょう。
3230 </p> 3343 </p>
3231 3344
3232 3345
3233 <h3><a name="AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION">AT: 並行抽象の呼び出しシーケンス はアトミックではないかもしれない (AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION)</a></h3> 3346 <h3><a name="AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION">AT: 並行抽象の呼び出しシーケンス はアトミックではないかもしれない (AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION)</a></h3>
3234 3347
3235 3348
3236 <p> 3349 <p>
3237 このコードには並行抽象化 (たとえば、並行ハッシュマップ) の呼び出しシーケンスがあります。 3350 このコードには並行抽象化 (たとえば、並行ハッシュマップ) の呼び出しシーケンスがあります。
3238 これらの呼び出しは原子的に実行されません。 3351 これらの呼び出しは原子的に実行されません。
3239 </p> 3352 </p>
3240 3353
3241 3354
3242 <h3><a name="DC_DOUBLECHECK">DC: フィールドのダブルチェックの可能性 (DC_DOUBLECHECK)</a></h3> 3355 <h3><a name="DC_DOUBLECHECK">DC: フィールドのダブルチェックの可能性 (DC_DOUBLECHECK)</a></h3>
3243 3356
3244 3357
3245 <p> 3358 <p>
3246 このメソッドにはダブルチェックロッキングのインスタンスがあるかもしれません。このイディオムは、Java のメモリモデルでは正しくありません。<br> 3359 このメソッドにはダブルチェックロッキングのインスタンスがあるかもしれません。このイディオムは、Java のメモリモデルでは正しくありません。<br>
3247 詳細は、<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.h tml" >http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a> を参照してください。 3360 詳細は、<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.h tml" >http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a> を参照してください。
3248 </p> 3361 </p>
3249 3362
3250 3363
3364 <h3><a name="DC_PARTIALLY_CONSTRUCTED">DC: 部分的に初期化されたオブジェクトを暴露する可能性がある (DC_PARTI ALLY_CONSTRUCTED)</a></h3>
3365
3366
3367 <p>
3368 ダブルチェックロッキングと共に遅延初期化フィールドを使用するメソッドのようです。
3369 フィールドが正しく volatile として宣言される間にオブジェクトの内部構造がフィールドに割り当てられた後で変更される可能性があります。
3370 したがって、他のスレッドが部分的に初期化されたオブジェクトを見るかもしれません。
3371 </p>
3372 <p>
3373 この問題を直すために、最初にローカル変数をオブジェクトに格納して、完全に構築した後で volatile フィールドを保存することを考えてください。
3374 </p>
3375
3376
3251 <h3><a name="DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean の同期化 (DL_SYNCHRONIZATION _ON_BOOLEAN)</a></h3> 3377 <h3><a name="DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean の同期化 (DL_SYNCHRONIZATION _ON_BOOLEAN)</a></h3>
3252 3378
3253 3379
3254 <p> 3380 <p>
3255 <code>Boolean</code> のようなボクシングされたプリミティブ型の定数で同期化しています。 3381 <code>Boolean</code> のようなボクシングされたプリミティブ型の定数で同期化しています。
3256 </p> 3382 </p>
3257 <blockquote><pre> 3383 <blockquote><pre>
3258 private static Boolean inited = Boolean.FALSE; 3384 private static Boolean inited = Boolean.FALSE;
3259 3385
3260 synchronized(inited) { 3386 synchronized(inited) {
(...skipping 16 matching lines...) Expand all
3277 このコードは、Integer のようなボクシングされたプリミティブ型の定数で同期化しています。 3403 このコードは、Integer のようなボクシングされたプリミティブ型の定数で同期化しています。
3278 </p> 3404 </p>
3279 <blockquote><pre> 3405 <blockquote><pre>
3280 private static Integer count = 0; 3406 private static Integer count = 0;
3281 3407
3282 synchronized(count) { 3408 synchronized(count) {
3283 count++; 3409 count++;
3284 } 3410 }
3285 </pre></blockquote> 3411 </pre></blockquote>
3286 <p> 3412 <p>
3287 <code>Integer</code> オブジェクトはキャッシュして共有される可能性があります 3413 <code>Integer</code> オブジェクトはキャッシュして共有できます
3288 他の無関係なコードと同じオブジェクトで同期化している可能性があるので、無応答やデッドロックの原因になります。 3414 他の無関係なコードと同じオブジェクトで同期化している可能性があるので、無応答やデッドロックの原因になります。
3289 </p> 3415 </p>
3290 <p> 3416 <p>
3291 CERT の <a href="https://www.securecoding.cert.org/confluence/display/java/CON08- J.+Do+not+synchronize+on+objects+that+may+be+reused">CON08-J. Do not synchronize on objects that may be reused</a> を参照してください。 3417 CERT の <a href="https://www.securecoding.cert.org/confluence/display/java/CON08- J.+Do+not+synchronize+on+objects+that+may+be+reused">CON08-J. Do not synchronize on objects that may be reused</a> を参照してください。
3292 </p> 3418 </p>
3293 3419
3294 3420
3295 <h3><a name="DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: 正準化した文字列の同期化 (DL_SYNCHRO NIZATION_ON_SHARED_CONSTANT)</a></h3> 3421 <h3><a name="DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: 正準化した文字列の同期化 (DL_SYNCHRO NIZATION_ON_SHARED_CONSTANT)</a></h3>
3296 3422
3297 3423
(...skipping 28 matching lines...) Expand all
3326 .. do something .. 3452 .. do something ..
3327 } 3453 }
3328 </pre></blockquote> 3454 </pre></blockquote>
3329 <p> 3455 <p>
3330 このコードは、 fileLock を以下のように宣言するとより良くなります。 3456 このコードは、 fileLock を以下のように宣言するとより良くなります。
3331 </p> 3457 </p>
3332 <blockquote><pre> 3458 <blockquote><pre>
3333 private static final Object fileLock = new Object(); 3459 private static final Object fileLock = new Object();
3334 </pre></blockquote> 3460 </pre></blockquote>
3335 <p> 3461 <p>
3336 既存のコードとしては間違っていないのかもしれませんが、紛らわしいので将来リファクタリングするべきかもしれません。 3462 既存のコードとしては間違っていないかもしれないが、紛らわしいので将来リファクタリングするべきかもしれません。
3337 たとえば、IntelliJ の "Remove Boxing" のようなリファクタリングは Java 仮想マシンを通して共有される正準化された <code>In teger</code> オブジェクトを使用するように置き換えてしまい、非常に紛らわしい振る舞いと潜在的デッドロックの原因になります。 3463 たとえば、IntelliJ の "Remove Boxing" のようなリファクタリングは Java 仮想マシンを通して共有される正準化された <code>In teger</code> オブジェクトを使用するように置き換えてしまい、非常に紛らわしい振る舞いと潜在的デッドロックの原因になります。
3338 </p> 3464 </p>
3339 3465
3340 3466
3341 <h3><a name="DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition で wait メソッドを呼び出している (DM _MONITOR_WAIT_ON_CONDITION)</a></h3> 3467 <h3><a name="DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition で wait メソッドを呼び出している (DM _MONITOR_WAIT_ON_CONDITION)</a></h3>
3342 3468
3343 3469
3344 <p> 3470 <p>
3345 このメソッドは、<code>java.util.concurrent.locks.Condition</code> オブジェクトで <code>wait</co de> メソッドを呼び出しています。 3471 このメソッドは、<code>java.util.concurrent.locks.Condition</code> オブジェクトで <code>wait</co de> メソッドを呼び出しています。
3346 <code>Condition</code> オブジェクトを待機させるためには <code>Condition</code> インタフェースで定義された <co de>await</code> メソッドを使用するべきです。 3472 <code>Condition</code> オブジェクトを待機させるためには <code>Condition</code> インタフェースで定義された <co de>await</code> メソッドを使用するべきです。
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3386 <li>読み出しの2倍の重み付けをした書き込みで、非同期フィールドのアクセス (読み出しと書き込み) 数がすべてのアクセスのわずか1/3</li> 3512 <li>読み出しの2倍の重み付けをした書き込みで、非同期フィールドのアクセス (読み出しと書き込み) 数がすべてのアクセスのわずか1/3</li>
3387 </ul> 3513 </ul>
3388 <p 3514 <p
3389 このバグパターンに合致する典型的なバグは、スレッドセーフを意図したクラスでメソッドを同期化させることを忘れていることです。 3515 このバグパターンに合致する典型的なバグは、スレッドセーフを意図したクラスでメソッドを同期化させることを忘れていることです。
3390 </p> 3516 </p>
3391 <p> 3517 <p>
3392 ディテクタがどこでフィールドが同期化なしでアクセスされると信じていたかを示すコードの場所に「非同期アクセス」というラベルがついているノードを選択できます。 3518 ディテクタがどこでフィールドが同期化なしでアクセスされると信じていたかを示すコードの場所に「非同期アクセス」というラベルがついているノードを選択できます。
3393 </p> 3519 </p>
3394 <p> 3520 <p>
3395 不正確ないろいろな原因がこのディテクタにあることに注意してください。 3521 不正確ないろいろな原因がこのディテクタにあることに注意してください。
3396 たとえば、ディテクタはロックを保持されるすべての状況を静的に検出できるというわけではありません 3522 たとえば、ディテクタはロックを保持されるすべての状況を静的に検出できるわけではありません
3397 また、ディテクタがロックされたアクセスとアンロックされたアクセスの区別が正確なときでも、問題のコードは依然として正しいかもしれません。 3523 また、ディテクタがロックされたアクセスとアンロックされたアクセスの区別が正確なときでも、問題のコードは依然として正しいかもしれません。
3398 </p> 3524 </p>
3399 3525
3400 3526
3401 <h3><a name="IS_FIELD_NOT_GUARDED">IS: 並行アクセスに対してガードされていないフィールド (IS_FIELD_NOT_GU ARDED)</a></h3> 3527 <h3><a name="IS_FIELD_NOT_GUARDED">IS: 並行アクセスに対してガードされていないフィールド (IS_FIELD_NOT_GU ARDED)</a></h3>
3402 3528
3403 3529
3404 <p> 3530 <p>
3405 このフィールドは、net.jcip.annotations.GuardedBy または javax.annotation.concurrent.GuardedB y でアノテートされていますが、アノテーションに違反すると思われる方法でアクセスできます。 3531 このフィールドは、net.jcip.annotations.GuardedBy または javax.annotation.concurrent.GuardedB y でアノテートされていますが、アノテーションに違反すると思われる方法でアクセスできます。
3406 </p> 3532 </p>
(...skipping 29 matching lines...) Expand all
3436 (たとえば、util.concurrent の Condition オブジェクト) で、<code>wait</code> メソッド、<code>notify< /code> メソッド、<code>notifyAll</code> メソッドを呼び出しています。 3562 (たとえば、util.concurrent の Condition オブジェクト) で、<code>wait</code> メソッド、<code>notify< /code> メソッド、<code>notifyAll</code> メソッドを呼び出しています。
3437 これはおそらくあなたが望むことではありません。たとえそれを望むとしても、他の開発者が非常に紛らわしいことを理解して、設計を変更することを検討するべきです。 3563 これはおそらくあなたが望むことではありません。たとえそれを望むとしても、他の開発者が非常に紛らわしいことを理解して、設計を変更することを検討するべきです。
3438 </p> 3564 </p>
3439 3565
3440 3566
3441 <h3><a name="LI_LAZY_INIT_STATIC">LI: static フィールドの間違った遅延初期化 (LI_LAZY_INIT_STATI C)</a></h3> 3567 <h3><a name="LI_LAZY_INIT_STATIC">LI: static フィールドの間違った遅延初期化 (LI_LAZY_INIT_STATI C)</a></h3>
3442 3568
3443 3569
3444 <p> 3570 <p>
3445 このメソッドにはvolatile でない static フィールドの非同期な遅延初期化があります。 3571 このメソッドにはvolatile でない static フィールドの非同期な遅延初期化があります。
3446 コンパイラやプロセッサが命令を並べ替えるかもしれないので、メソッドが複数のスレッドによって呼び出されるかもしれないなら 3572 コンパイラやプロセッサが命令を並べ替えるかもしれないので、メソッドが複数のスレッドによって呼び出されるなら
3447 スレッドは完全に初期化されたオブジェクトを見るとは保証されていません。 3573 スレッドは完全に初期化されたオブジェクトを見るとは保証されていません。
3448 フィールドにアクセスした際に、中途半端に初期化されたインスタンスが見えてしまう危険があります。 3574 フィールドにアクセスした際に、中途半端に初期化されたインスタンスが見えてしまう危険があります。
3449 この問題を修正するために、フィールドを volatile にできます。<br> 3575 この問題を修正するためにフィールドを volatile にできます。<br>
3450 詳細は、<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/">Java Memory Model we b site</a> を参照してください。 3576 詳細は、<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/">Java Memory Model we b site</a> を参照してください。
3451 </p> 3577 </p>
3452 3578
3453 3579
3454 <h3><a name="LI_LAZY_INIT_UPDATE_STATIC">LI: 更新される static フィールドの間違った遅延初期化 (LI_LA ZY_INIT_UPDATE_STATIC)</a></h3> 3580 <h3><a name="LI_LAZY_INIT_UPDATE_STATIC">LI: 更新される static フィールドの間違った遅延初期化 (LI_LA ZY_INIT_UPDATE_STATIC)</a></h3>
3455 3581
3456 3582
3457 <p> 3583 <p>
3458 このメソッドにはstatic フィールドの非同期な遅延初期化があります。 3584 このメソッドにはstatic フィールドの非同期な遅延初期化があります。
3459 フィールドが設定された後で、その場所に格納されるオブジェクトはさらに更新されるかアクセスされます。 3585 フィールドが設定された後で、その場所に格納されるオブジェクトはさらに更新されるかアクセスされます。
3460 それが設定されるとすぐに、フィールドの設定は他のスレッドに見えます 3586 それが設定されるとすぐに、フィールドを設定することは他のスレッドに見えます
3461 フィールドを設定するさらなるアクセスがオブジェクトを初期化するのに役に立つなら、 3587 フィールドを設定するさらなるアクセスがオブジェクトを初期化するのに役に立つなら、
3462 それが完全に初期化されるまでどんな他のスレッドも格納されたオブジェクトにアクセスするのを防がないかぎり、非常に深刻なマルチスレッドバグがあります。 3588 それが完全に初期化されるまでどんな他のスレッドも格納されたオブジェクトにアクセスするのを防がないかぎり、非常に深刻なマルチスレッドバグがあります。
3463 </p> 3589 </p>
3464 <p> 3590 <p>
3465 たとえメソッドが複数のスレッドによって決して呼び出されないと確信していても、 3591 たとえメソッドが複数のスレッドによって決して呼び出されないと確信していても、
3466 それは、フィールドに設定している値が完全にデータを読み込まれるか初期化されるまで、 static フィールドを設定しないほうが良いかもしれません。 3592 それは、フィールドに設定している値が完全にデータを読み込まれるか初期化されるまで、 static フィールドを設定しないほうが良いかもしれません。
3467 </p> 3593 </p>
3468 3594
3469 3595
3470 <h3><a name="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD">ML: フィールドを同期化でガードしよう とする無駄な試み (ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD)</a></h3> 3596 <h3><a name="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD">ML: フィールドを同期化でガードしよう とする無駄な試み (ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD)</a></h3>
3471 3597
3472 3598
3473 <p> 3599 <p>
3474 このメソッドは、フィールドの同時更新に対して同期化でガードしようとしています。しかし、フィールドをガードするとフィールドではなく、フィールドが参照するオブジェク トのロックを獲得します。 3600 このメソッドは、フィールドの同時更新に対して同期化でガードしようとしています。しかし、フィールドをガードするとフィールドではなく、フィールドが参照するオブジェク トのロックを獲得します。
3475 これはあなたが必要とする相互排除を提供しないかもしれません 3601 これはあなたが必要とする相互排除ができないかもしれません
3476 他のスレッドは (他の目的のための) 参照されたオブジェクトのロックを獲得するかもしれません。<br> 3602 他のスレッドは (他の目的のための) 参照されたオブジェクトのロックを獲得するかもしれません。<br>
3477 このパターンの例は以下のようになります。 3603 このパターンの例は以下のようになります。
3478 </p> 3604 </p>
3479 <blockquote><pre> 3605 <blockquote><pre>
3480 private Long myNtfSeqNbrCounter = new Long(0); 3606 private Long myNtfSeqNbrCounter = new Long(0);
3481 private Long getNotificationSequenceNumber() { 3607 private Long getNotificationSequenceNumber() {
3482 Long result = null; 3608 Long result = null;
3483 synchronized(myNtfSeqNbrCounter) { 3609 synchronized(myNtfSeqNbrCounter) {
3484 result = new Long(myNtfSeqNbrCounter.longValue() + 1); 3610 result = new Long(myNtfSeqNbrCounter.longValue() + 1);
3485 myNtfSeqNbrCounter = new Long(result.longValue()); 3611 myNtfSeqNbrCounter = new Long(result.longValue());
3486 } 3612 }
3487 return result; 3613 return result;
3488 } 3614 }
3489 </pre></blockquote> 3615 </pre></blockquote>
3490 3616
3491 3617
3492 <h3><a name="ML_SYNC_ON_UPDATED_FIELD">ML: 更新されるフィールドで同期化しているメソッド (ML_SYNC_ON_UP DATED_FIELD)</a></h3> 3618 <h3><a name="ML_SYNC_ON_UPDATED_FIELD">ML: 更新されるフィールドで同期化しているメソッド (ML_SYNC_ON_UP DATED_FIELD)</a></h3>
3493 3619
3494 3620
3495 <p> 3621 <p>
3496 このメソッドは、可変フィールドから参照されたオブジェクトで同期化しています。 3622 このメソッドは、可変フィールドから参照されたオブジェクトで同期化しています。
3497 異なるスレッドが異なるオブジェクトで同期化しているかもしれないので、これは有効な意味を持っている可能性が低いです 3623 異なるスレッドが異なるオブジェクトで同期化しているかもしれないので、有用な意味を持っている可能性が低いです
3498 </p> 3624 </p>
3499 3625
3500 3626
3501 <h3><a name="MSF_MUTABLE_SERVLET_FIELD">MSF: 可変サーブレットフィールド (MSF_MUTABLE_SERVLET_ FIELD)</a></h3> 3627 <h3><a name="MSF_MUTABLE_SERVLET_FIELD">MSF: 可変サーブレットフィールド (MSF_MUTABLE_SERVLET_ FIELD)</a></h3>
3502 3628
3503 3629
3504 <p> 3630 <p>
3505 Web サーバは、一般的にサーブレットや JSP クラスのインスタンスを1つだけ作成します (すなわち、シングルトンとして扱います)。 3631 Web サーバは、一般的にサーブレットや JSP クラスのインスタンスを1つだけ作成します (すなわち、シングルトンとして扱います)。
3506 複数のスレッドが複数同時に発生するリクエストを処理するためにインスタンスのメソッドを呼び出します 3632 複数のスレッドが複数同時のリクエストに応えるためにそのインスタンスでメソッドを呼び出します
3507 したがって、可変インスタンスフィールドは一般に競合状態を作成します 3633 したがって、一般に可変インスタンスフィールドは競合状態を作ります
3508 </p> 3634 </p>
3509 3635
3510 3636
3511 <h3><a name="MWN_MISMATCHED_NOTIFY">MWN: 不整合な notify メソッド (MWN_MISMATCHED_NOTIFY )</a></h3> 3637 <h3><a name="MWN_MISMATCHED_NOTIFY">MWN: 不整合な notify メソッド (MWN_MISMATCHED_NOTIFY )</a></h3>
3512 3638
3513 3639
3514 <p> 3640 <p>
3515 このメソッドは、オブジェクトで明らかにロックを保持することなく <code>Object.notify()</code> や <code>Object.noti fyAll()</code> を呼び出しています。 3641 このメソッドは、オブジェクトで明らかにロックを保持することなく <code>Object.notify()</code> や <code>Object.noti fyAll()</code> を呼び出しています。
3516 保持されるロックがない状態で、<code>notify</code> メソッドや <code>notifyAll</code> メソッドを呼び出すことは、<co de>IllegalMonitorStateException</code> をスローすることになります。 3642 保持されるロックがない状態で、<code>notify</code> メソッドや <code>notifyAll</code> メソッドを呼び出すことは、<co de>IllegalMonitorStateException</code> をスローすることになります。
3517 </p> 3643 </p>
3518 3644
3519 3645
3520 <h3><a name="MWN_MISMATCHED_WAIT">MWN: 不整合な wait メソッド (MWN_MISMATCHED_WAIT)</a>< /h3> 3646 <h3><a name="MWN_MISMATCHED_WAIT">MWN: 不整合な wait メソッド (MWN_MISMATCHED_WAIT)</a>< /h3>
3521 3647
3522 3648
3523 <p> 3649 <p>
3524 このメソッドは、オブジェクトで明らかにロックを保持することなく、<code>Object.wait()</code> を呼び出しています。 3650 このメソッドは、オブジェクトで明らかにロックを保持することなく、<code>Object.wait()</code> を呼び出しています。
3525 保持されるロックがない状態で、<code>wait</code> メソッドを呼び出すことは、<code>IllegalMonitorStateException </code> をスローすることになります。 3651 保持されるロックがない状態で、<code>wait</code> メソッドを呼び出すことは、<code>IllegalMonitorStateException </code> をスローすることになります。
3526 </p> 3652 </p>
3527 3653
3528 3654
3529 <h3><a name="NN_NAKED_NOTIFY">NN: 裸の notify メソッド (NN_NAKED_NOTIFY)</a></h3> 3655 <h3><a name="NN_NAKED_NOTIFY">NN: 裸の notify メソッド (NN_NAKED_NOTIFY)</a></h3>
3530 3656
3531 3657
3532 <p> 3658 <p>
3533 <code>notify</code> メソッドまたは <code>notifyAll</code> メソッドへの呼び出しは可変オブジェクト状態にどんな (明ら かな) 付随的な変更ももたらされませんでした。 3659 <code>notify</code> メソッドまたは <code>notifyAll</code> メソッドへの呼び出しは可変オブジェクト状態にどんな (明ら かな) 付随的な変更ももたらされませんでした。
3534 一般に、別のスレッドが期待しているいくつかの条件が真になったので、モニタで <code>notify</code> メソッドが呼び出されます。 3660 一般的に別のスレッドが期待しているいくつかの条件が真になったので、モニタで <code>notify</code> メソッドが呼び出されます。
3535 しかしながら、意味がある条件のために、両方のスレッドに見えるヒープオブジェクトを含まなければなりません 3661 しかしながら、意味がある条件のために両方のスレッドに見えるヒープオブジェクトを含まなければなりません
3536 </p> 3662 </p>
3537 <p> 3663 <p>
3538 可変オブジェクトの状態変更が通知があるメソッドを呼び出したメソッドで起こったかもしれないので、このバグが必ずしもエラーを示すというわけではありません。 3664 可変オブジェクトの状態変更が通知があるメソッドを呼び出したメソッドで起こったかもしれないので、このバグが必ずしもエラーを示すというわけではありません。
3539 </p> 3665 </p>
3540 3666
3541 3667
3542 <h3><a name="NP_SYNC_AND_NULL_CHECK_FIELD">NP: 同じフィールドでの同期化と null チェック (NP_SYNC_ AND_NULL_CHECK_FIELD)</a></h3> 3668 <h3><a name="NP_SYNC_AND_NULL_CHECK_FIELD">NP: 同じフィールドでの同期化と null チェック (NP_SYNC_ AND_NULL_CHECK_FIELD)</a></h3>
3543 3669
3544 3670
3545 <p> 3671 <p>
(...skipping 21 matching lines...) Expand all
3567 直列化復元によって作成されるオブジェクトは1つのスレッドによってだけ到達可能です。 3693 直列化復元によって作成されるオブジェクトは1つのスレッドによってだけ到達可能です。
3568 したがって、<code>readObject</code> メソッドは同期化する必要がありません。 3694 したがって、<code>readObject</code> メソッドは同期化する必要がありません。
3569 <code>readObject</code> メソッドそのものが別のスレッドに見えるようになるオブジェクトの原因になっているなら非常に疑わしいコーディングスタ イルの例です。 3695 <code>readObject</code> メソッドそのものが別のスレッドに見えるようになるオブジェクトの原因になっているなら非常に疑わしいコーディングスタ イルの例です。
3570 </p> 3696 </p>
3571 3697
3572 3698
3573 <h3><a name="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent の戻り値は無視されて putIfAbsent に渡した値は再利用された (RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED)</a></h3> 3699 <h3><a name="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent の戻り値は無視されて putIfAbsent に渡した値は再利用された (RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED)</a></h3>
3574 3700
3575 3701
3576 <p> 3702 <p>
3577 <code>putIfAbsent</code> メソッドは、一般に1つの値が与えられたキー (非存在が成功するかどうかの第一の値) と関連することを確認するた めに使われます。 3703 <code>putIfAbsent</code> メソッドは、1つの値が与えられたキー (非存在が成功するかどうかの第一の値) と関連することを確認するために使 われます。
3578 戻り値を無視して中で渡される値への参照を保持するなら、マップのキーと関連する1つではない値を保持する危険性を冒します。 3704 戻り値を無視して中で渡される値への参照を保持するなら、マップのキーと関連する1つではない値を保持する危険性を冒します。
3579 どれを使用するかが重要であり、マップに格納できないものを使用すると、プログラムは誤った振る舞いをします 3705 どれを使用するかが重要であり、マップに格納できないものを使うとプログラムは誤った振る舞いをします
3580 </p> 3706 </p>
3581 3707
3582 3708
3583 <h3><a name="RU_INVOKE_RUN">Ru: スレッドで run メソッドを呼び出している (RU_INVOKE_RUN)</a></h3> 3709 <h3><a name="RU_INVOKE_RUN">Ru: スレッドで run メソッドを呼び出している (RU_INVOKE_RUN)</a></h3>
3584 3710
3585 3711
3586 <p> 3712 <p>
3587 このメソッドは、スレッドで 明示的に <code>run</code> メソッドを呼び出しています。 3713 このメソッドは、スレッドで 明示的に <code>run</code> メソッドを呼び出しています。
3588 一般に、クラスは新しいスレッドで自己の <code>run</code> メソッドを呼び出してもらうために <code>Runnable</code> インタフ ェースを実装します。 3714 一般的にクラスは新しいスレッドで自己の <code>run</code> メソッドを呼び出してもらうために <code>Runnable</code> インタフ ェースを実装します。
3589 その場合は、<code>Thread.start()</code> を呼び出すのが正しいです。 3715 その場合は、<code>Thread.start()</code> を呼び出すのが正しいです。
3590 </p> 3716 </p>
3591 3717
3592 3718
3593 <h3><a name="SC_START_IN_CTOR">SC: Thread.start() を呼び出しているコンストラクタ (SC_START_IN_C TOR)</a></h3> 3719 <h3><a name="SC_START_IN_CTOR">SC: Thread.start() を呼び出しているコンストラクタ (SC_START_IN_C TOR)</a></h3>
3594 3720
3595 3721
3596 <p> 3722 <p>
3597 コンストラクタがスレッドを開始しています。クラスが拡張され、サブクラスが作られるなら間違っていそうです。 3723 コンストラクタがスレッドを開始しています。クラスが拡張され、サブクラスが作られるなら間違っていそうです。
3598 なぜなら、サブクラスのコンストラクタでスレッドが開始される前に、スーパークラスのスレッドが開始してしまうためです 3724 なぜなら、サブクラスのコンストラクタでスレッドが開始される前にスーパークラスのスレッドが開始されてしまうためです
3599 </p> 3725 </p>
3600 3726
3601 3727
3602 <h3><a name="SP_SPIN_ON_FIELD">SP: スピンロックをしているメソッド (SP_SPIN_ON_FIELD)</a></h3> 3728 <h3><a name="SP_SPIN_ON_FIELD">SP: スピンロックをしているメソッド (SP_SPIN_ON_FIELD)</a></h3>
3603 3729
3604 3730
3605 <p> 3731 <p>
3606 このメソッドは、フィールドを読み出すループで回り続けます。 3732 このメソッドは、フィールドを読み出すループで回り続けます。
3607 コンパイラがフィールドの読み出しをループの外に出すかもしれません。コードを無限ループに変えます。 3733 コンパイラがフィールドの読み出しをループの外に出すかもしれません。コードを無限ループに変えます。
3608 正しい同期化 (wait/notify を呼び出すように含む) を使うようにクラスを変更するべきです。 3734 正しい同期化 (wait/notify を呼び出すように含む) を使うようにクラスを変更するべきです。
3609 </p> 3735 </p>
3610 3736
3611 3737
3612 <h3><a name="STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar の呼 び出し (STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE)</a></h3> 3738 <h3><a name="STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar の呼 び出し (STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE)</a></h3>
3613 3739
3614 3740
3615 <p> 3741 <p>
3616 たとえ JavaDoc にそれに関する手がかりがないとしても、Calendar はマルチスレッドでの使用は本質的に安全ではありません。 3742 たとえ JavaDoc にそれに関する手がかりがないとしても、Calendar はマルチスレッドでの使用は本質的に安全ではありません。
3617 ディテクタは、static フィールドから得られた Calendar のインスタンスの呼び出しを発見しました。 3743 ディテクタは、static フィールドから得られた Calendar のインスタンスの呼び出しを発見しました。
3618 これは疑わしく見えます。 3744 これは疑わしく見えます。
3619 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。 3745 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。
3620 </p> 3746 </p>
3621 3747
3622 3748
3623 <h3><a name="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE">STCAL: static DateForm at の呼び出し (STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE)</a></h3> 3749 <h3><a name="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE">STCAL: static DateForm at の呼び出し (STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE)</a></h3>
3624 3750
3625 3751
3626 <p> 3752 <p>
3627 JavaDoc に書かれているようにDateFormat はマルチスレッドでの使用は本質的に安全ではありません。 3753 JavaDoc に書かれているように DateFormat はマルチスレッドでの使用は本質的に安全ではありません。
3628 ディテクタは、static フィールドから得られた DateFormat のインスタンスの呼び出しを発見しました。 3754 ディテクタは、static フィールドから得られた DateFormat のインスタンスの呼び出しを発見しました。
3629 これは疑わしく見えます。 3755 これは疑わしく見えます。
3630 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。 3756 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。
3631 </p> 3757 </p>
3632 3758
3633 3759
3634 <h3><a name="STCAL_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar フィールド (STCAL _STATIC_CALENDAR_INSTANCE)</a></h3> 3760 <h3><a name="STCAL_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar フィールド (STCAL _STATIC_CALENDAR_INSTANCE)</a></h3>
3635 3761
3636 3762
3637 <p> 3763 <p>
3638 たとえ JavaDoc にそれに関する手がかりがないとしても、Calendar はマルチスレッドでの使用は本質的に安全でありません。 3764 たとえ JavaDoc にそれに関する手がかりがないとしても、Calendar はマルチスレッドでの使用は本質的に安全でありません。
3639 正しい同期化をしないでスレッド境界の向こうで1つのインスタンスを共有することは、アプリケーションの誤動作になります。 3765 正しい同期化をしないでスレッド境界の向こうで1つのインスタンスを共有することは、アプリケーションの誤動作になります。
3640 JDK 5.0に比べて JDK 1.4 のほうが問題が表面化するように思われ、おそらく sun.util.calendar.BaseCalendar.getCa lendarDateFromFixedDate() の ArrayIndexOutOfBoundsExceptions や IndexOutOfBoundsEx ceptions がランダムに発生します。 3766 JDK 5.0に比べて JDK 1.4 のほうが問題が表面化するように思われ、おそらく sun.util.calendar.BaseCalendar.getCa lendarDateFromFixedDate() の ArrayIndexOutOfBoundsExceptions や IndexOutOfBoundsEx ceptions がランダムに発生します。
3641 直列化問題も経験するかもしれません。インスタンスフィールドを使うことを推奨します。<br> 3767 直列化問題も経験するかもしれません。インスタンスフィールドを使用することを推奨します。<br>
3642 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。 3768 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。
3643 </p> 3769 </p>
3644 3770
3645 3771
3646 <h3><a name="STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">STCAL: static DateFormat (STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE)</a></h3> 3772 <h3><a name="STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">STCAL: static DateFormat (STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE)</a></h3>
3647 3773
3648 3774
3649 <p> 3775 <p>
3650 JavaDoc に書かれているようにDateFormat はマルチスレッドでの使用は本質的に安全ではありません。 3776 JavaDoc に書かれているように DateFormat はマルチスレッドでの使用は本質的に安全ではありません。
3651 正しい同期化をしないでスレッド境界の向こうで1つのインスタンスを共有することは、アプリケーションの誤動作になります。 3777 正しい同期化をしないでスレッド境界の向こうで1つのインスタンスを共有することは、アプリケーションの誤動作になります。
3652 JDK 5.0に比べて JDK 1.4 のほうが問題が表面化するように思われ、おそらく sun.util.calendar.BaseCalendar.getCa lendarDateFromFixedDate() の ArrayIndexOutOfBoundsExceptions や IndexOutOfBoundsEx ceptions がランダムに発生します。 3778 JDK 5.0に比べて JDK 1.4 のほうが問題が表面化するように思われ、おそらく sun.util.calendar.BaseCalendar.getCa lendarDateFromFixedDate() の ArrayIndexOutOfBoundsExceptions や IndexOutOfBoundsEx ceptions がランダムに発生します。
3653 直列化問題も経験するかもしれません。インスタンスフィールドを使うことを推奨します。<br> 3779 直列化問題も経験するかもしれません。インスタンスフィールドを使用することを推奨します。<br>
3654 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。 3780 詳細については、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a> や <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6178997">Sun Bug #6178997</a> を参照してください。
3655 </p> 3781 </p>
3656 3782
3657 3783
3658 <h3><a name="SWL_SLEEP_WITH_LOCK_HELD">SWL: ロックを保持して Thread.sleep() を呼び出しているメソッド (SWL_SLEEP_WITH_LOCK_HELD)</a></h3> 3784 <h3><a name="SWL_SLEEP_WITH_LOCK_HELD">SWL: ロックを保持して Thread.sleep() を呼び出しているメソッド (SWL_SLEEP_WITH_LOCK_HELD)</a></h3>
3659 3785
3660 3786
3661 <p> 3787 <p>
3662 このメソッドは、ロックを保持して、<code>Thread.sleep()</code> を呼び出しています。 3788 このメソッドは、ロックを保持して、<code>Thread.sleep()</code> を呼び出しています。
3663 他のスレッドがロックを獲得するために待機しているかもしれないので、ひどい性能とスケーラビリティ、またはデッドロックになるかもしれません 3789 他のスレッドがロックを獲得するために待機しているかもしれないので、ひどい性能とスケーラビリティ、またはデッドロックの原因になるかもしれません
3664 ロックで <code>wait</code> メソッドを呼び出すことはかなり良い考えで、ロックを解除して他のスレッドが実行するのを許可します。 3790 ロックで <code>wait</code> メソッドを呼び出すことはかなり良い考えで、ロックを解除して他のスレッドが実行するのを許可します。
3665 </p> 3791 </p>
3666 3792
3667 3793
3668 <h3><a name="TLW_TWO_LOCK_WAIT">TLW: 2つ以上のロックを保持して wait メソッドを呼び出している (TLW_TWO_LO CK_WAIT)</a></h3> 3794 <h3><a name="TLW_TWO_LOCK_WAIT">TLW: 2つ以上のロックを保持して wait メソッドを呼び出している (TLW_TWO_LO CK_WAIT)</a></h3>
3669 3795
3670 3796
3671 <p> 3797 <p>
3672 2つ以上のロックを保持して、モニタで待機させるとデッドロックの原因になる場合があります 3798 2つ以上のロックを保持して、モニタで待機させるとデッドロックを引き起こすことがあります
3673 <code>wait</code> メソッドを呼び出すと、待機しているオブジェクトのロックを解除するだけで、その他のロックは解除しません。 3799 <code>wait</code> メソッドを呼び出すと、待機しているオブジェクトのロックを解除するだけで、その他のロックは解除しません。
3674 これは必ずしもバグではありませんが厳密に調べる価値があります。 3800 これは必ずしもバグではありませんが厳密に調べる価値があります。
3675 </p> 3801 </p>
3676 3802
3677 3803
3678 <h3><a name="UG_SYNC_SET_UNSYNC_GET">UG: 同期化していない get メソッド、同期化している set メソッド (UG_ SYNC_SET_UNSYNC_GET)</a></h3> 3804 <h3><a name="UG_SYNC_SET_UNSYNC_GET">UG: 同期化していない get メソッド、同期化している set メソッド (UG_ SYNC_SET_UNSYNC_GET)</a></h3>
3679 3805
3680 3806
3681 <p> 3807 <p>
3682 このクラスには類似した名前の get メソッドと set メソッドがあり、set メソッドは同期化していて、get メソッドは同期化していません。 3808 このクラスには類似した名前の get メソッドと set メソッドがあり、set メソッドは同期化していて、get メソッドは同期化していません。
3683 get メソッドの呼び出し元がオブジェクトの一貫した状態を必ずしも見るというわけではないので、実行時に間違った振る舞いになるかもしれません 3809 get メソッドの呼び出し元がオブジェクトの一貫した状態を必ずしも見るというわけではないので、実行時に間違った振る舞いの原因になることがあります
3684 get メソッドは同期化するべきです。 3810 get メソッドは同期化するべきです。
3685 </p> 3811 </p>
3686 3812
3687 3813
3688 <h3><a name="UL_UNRELEASED_LOCK">UL: すべての経路でロックが解除されないメソッド (UL_UNRELEASED_LOCK)< /a></h3> 3814 <h3><a name="UL_UNRELEASED_LOCK">UL: すべての経路でロックが解除されないメソッド (UL_UNRELEASED_LOCK)< /a></h3>
3689 3815
3690 3816
3691 <p> 3817 <p>
3692 このメソッドは、JSR-166(<code>java.util.concurrent</code>) のロックを獲得していますが、メソッドからのすべての経路で解 除していません。 3818 このメソッドは、JSR-166(<code>java.util.concurrent</code>) のロックを獲得していますが、メソッドからのすべての経路で解 除していません。
3693 一般に、JSR-166のロックを使用するための正しいイディオムは以下のようになります。 3819 一般的に JSR-166のロックを使用するための正しいイディオムは以下のようになります。
3694 </p> 3820 </p>
3695 <blockquote><pre> 3821 <blockquote><pre>
3696 Lock l = ...; 3822 Lock l = ...;
3697 l.lock(); 3823 l.lock();
3698 try { 3824 try {
3699 // do something 3825 // do something
3700 } finally { 3826 } finally {
3701 l.unlock(); 3827 l.unlock();
3702 } 3828 }
3703 </pre></blockquote> 3829 </pre></blockquote>
3704 3830
3705 3831
3706 <h3><a name="UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: すべての例外経路でロックが解除されないメソッド (UL_ UNRELEASED_LOCK_EXCEPTION_PATH)</a></h3> 3832 <h3><a name="UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: すべての例外経路でロックが解除されないメソッド (UL_ UNRELEASED_LOCK_EXCEPTION_PATH)</a></h3>
3707 3833
3708 3834
3709 <p> 3835 <p>
3710 このメソッドは、JSR-166(<code>java.util.concurrent</code>) のロックを獲得していますが、メソッドからのすべての例外経路 で解除していません。 3836 このメソッドは、JSR-166(<code>java.util.concurrent</code>) のロックを獲得していますが、メソッドからのすべての例外経路 で解除していません。
3711 一般に、JSR-166のロックを使用するための正しいイディオムは以下のようになります。 3837 一般的に JSR-166のロックを使用するための正しいイディオムは以下のようになります。
3712 </p> 3838 </p>
3713 <blockquote><pre> 3839 <blockquote><pre>
3714 Lock l = ...; 3840 Lock l = ...;
3715 l.lock(); 3841 l.lock();
3716 try { 3842 try {
3717 // do something 3843 // do something
3718 } finally { 3844 } finally {
3719 l.unlock(); 3845 l.unlock();
3720 } 3846 }
3721 </pre></blockquote> 3847 </pre></blockquote>
3722 3848
3723 3849
3724 <h3><a name="UW_UNCOND_WAIT">UW: wait メソッドの無条件呼び出し (UW_UNCOND_WAIT)</a></h3> 3850 <h3><a name="UW_UNCOND_WAIT">UW: wait メソッドの無条件呼び出し (UW_UNCOND_WAIT)</a></h3>
3725 3851
3726 3852
3727 <p> 3853 <p>
3728 このメソッドには条件制御フローによってガードされない <code>java.lang.Object.wait()</code> の呼び出しがあります。 3854 このメソッドには条件制御フローによってガードされない <code>java.lang.Object.wait()</code> の呼び出しがあります。
3729 このコードは、<code>wait</code> メソッドを呼び出す前に待機するつもりだった条件がすでに満たされていないことを確かめるべきです 3855 このコードは、<code>wait</code> メソッドを呼び出す前に待機するつもりだった条件が既に満たされていないことを確かめるべきです
3730 どんな前の通知も無視されます。 3856 どんな前の通知も無視されます。
3731 </p> 3857 </p>
3732 3858
3733 3859
3734 <h3><a name="VO_VOLATILE_INCREMENT">VO: volatile フィールドへのインクリメントはアトミックではない (VO_VO LATILE_INCREMENT)</a></h3> 3860 <h3><a name="VO_VOLATILE_INCREMENT">VO: volatile フィールドへのインクリメントはアトミックではない (VO_VO LATILE_INCREMENT)</a></h3>
3735 3861
3736 3862
3737 <p> 3863 <p>
3738 このコードは、volatile フィールドをインクリメントしています。 3864 このコードは、volatile フィールドをインクリメントしています。
3739 volatile フィールドのインクリメントはアトミックではありません。 3865 volatile フィールドのインクリメントはアトミックではありません。
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
3813 このメソッドは、ループの中にない <code>java.lang.Object.wait()</code> を呼び出しています。 3939 このメソッドは、ループの中にない <code>java.lang.Object.wait()</code> を呼び出しています。
3814 モニタが複数の条件のために使われるなら、呼び出し元が待機するつもりだった条件は実際には発生しないかもしれません。 3940 モニタが複数の条件のために使われるなら、呼び出し元が待機するつもりだった条件は実際には発生しないかもしれません。
3815 </p> 3941 </p>
3816 3942
3817 3943
3818 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED">Bx: プリミティブ値がボクシングされて、すぐにアンボクシングされる ( BX_BOXING_IMMEDIATELY_UNBOXED)</a></h3> 3944 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED">Bx: プリミティブ値がボクシングされて、すぐにアンボクシングされる ( BX_BOXING_IMMEDIATELY_UNBOXED)</a></h3>
3819 3945
3820 3946
3821 <p> 3947 <p>
3822 プリミティブ値がボクシングされて、すぐにアンボクシングされます。 3948 プリミティブ値がボクシングされて、すぐにアンボクシングされます。
3823 おそらくアンボクシングされた値が必要な場所で、手動でボクシングをしているためです 3949 おそらくアンボクシングされた値が必要な場所で手動でボクシングをしているためです
3824 その結果、コンパイラにボクシングの機能を取り消すことを強制しています。 3950 その結果、コンパイラにボクシングの機能を取り消すことを強制しています。
3825 </p> 3951 </p>
3826 3952
3827 3953
3828 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: プリミティブ値がプリミテ ィブ型の型変換をするためにボクシングされて、アンボクシングされる (BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERC ION)</a></h3> 3954 <h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: プリミティブ値がプリミテ ィブ型の型変換をするためにボクシングされて、アンボクシングされる (BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERC ION)</a></h3>
3829 3955
3830 3956
3831 <p> 3957 <p>
3832 プリミティブ値がコンストラクタでボクシングされて、すぐに異なるプリミティブ型に変換されます (たとえば <code>new Double(d).intValue ()</code>)。 3958 プリミティブ値がコンストラクタでボクシングされて、すぐに異なるプリミティブ型に変換されます (たとえば <code>new Double(d).intValue ()</code>)。
3833 直接プリミティブ型の型変換を実行してください (たとえば <code>(int) d</code>)。 3959 直接プリミティブ型の型変換を実行してください (たとえば <code>(int) d</code>)。
3834 </p> 3960 </p>
3835 3961
3836 3962
3963 <h3><a name="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: プリミティブ値が3項演算子のためにア ンボクシングされて、型変換される (BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR)</a></h3>
3964
3965
3966 <p>
3967 ラップされたプリミティブ値は、3項演算子 (<code> b ? e1 : e2</code>) の評価の一部として、別のプリミティブ型にアンボクシングされて変 換されます。
3968 Java 言語仕様では、<code>e1</code> と <code>e2</code> がラップされた数値なら値はアンボクシングされ、共通の型へと変換/型変 換されます
3969 (たとえば、<code>e1</code> が <code>Integer</code> で、<code>e2</code> が <code>Float</co de> なら <code>e1</code> はアンボクシング (<code>int</code> に変換) され、<code>float</code> に変換 され、ボクシング (<code>Float</code> に変換) されます)。
3970 JLS セクション15.25を参照してください。
3971 </p>
3972
3973
3837 <h3><a name="BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ボクシングされた値がアンボクシングされて、すぐに再ボクシング される (BX_UNBOXING_IMMEDIATELY_REBOXED)</a></h3> 3974 <h3><a name="BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ボクシングされた値がアンボクシングされて、すぐに再ボクシング される (BX_UNBOXING_IMMEDIATELY_REBOXED)</a></h3>
3838 3975
3839 3976
3840 <p> 3977 <p>
3841 ボクシングされた値がアンボクシングされて、すぐに再ボクシングされます。 3978 ボクシングされた値がアンボクシングされて、すぐに再ボクシングされます。
3842 </p> 3979 </p>
3843 3980
3844 3981
3982 <h3><a name="DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: プリミティブが比較でボクシングされている (DM_BOXED_ PRIMITIVE_FOR_COMPARE)</a></h3>
3983
3984
3985 <p>
3986 ボクシングされたプリミティブが単に compareTo メソッドを呼び出すために作られています。
3987 直接プリミティブで働く static compare メソッド (double と float は Java 1.4から、他のプリミティブ型は Java 1.7 から) を使うほうがより効率的です。
3988 </p>
3989
3990
3845 <h3><a name="DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ボクシング/アンボクシングはプリミティブを解析する (DM_B OXED_PRIMITIVE_FOR_PARSING)</a></h3> 3991 <h3><a name="DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ボクシング/アンボクシングはプリミティブを解析する (DM_B OXED_PRIMITIVE_FOR_PARSING)</a></h3>
3846 3992
3847 3993
3848 <p> 3994 <p>
3849 ボックス化されたプリミティブは、String から生成されていて、アンボックス化されたプリミティブ値を抽出します。 3995 ボックス化されたプリミティブは、String から生成されていて、アンボックス化されたプリミティブ値を抽出します。
3850 static parseXXX メソッドを呼び出す方が効率的です。 3996 static parseXXX メソッドを呼び出す方が効率的です。
3851 </p> 3997 </p>
3852 3998
3853 3999
3854 <h3><a name="DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString メソッドを呼び出すためにプリミティブ型のラッパクラ スのインスタンスを作成している (DM_BOXED_PRIMITIVE_TOSTRING)</a></h3> 4000 <h3><a name="DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString メソッドを呼び出すためにプリミティブ型のラッパクラ スのインスタンスを作成している (DM_BOXED_PRIMITIVE_TOSTRING)</a></h3>
3855 4001
3856 4002
3857 <p> 4003 <p>
3858 <code>toString</code> メソッドを呼び出すために、プリミティブ型のラッパクラスのインスタンスを作成しています 4004 <code>toString</code> メソッドを呼び出すためにプリミティブ型のラッパクラスのインスタンスを作成しています
3859 それよりもプリミティブ値を引数にとる static な <code>toString</code> メソッドを使用したほうが効率的です。 4005 それよりもプリミティブ値を引数にとる static な <code>toString</code> メソッドを使用したほうが効率的です。
3860 </p> 4006 </p>
3861 <table> 4007 <table>
3862 <tr><th>置換前</th><th>置換後</th></tr> 4008 <tr><th>置換前</th><th>置換後</th></tr>
3863 <tr><td>new Integer(1).toString()</td><td>Integer.toString(1)</td></tr> 4009 <tr><td>new Integer(1).toString()</td><td>Integer.toString(1)</td></tr>
3864 <tr><td>new Long(1).toString()</td><td>Long.toString(1)</td></tr> 4010 <tr><td>new Long(1).toString()</td><td>Long.toString(1)</td></tr>
3865 <tr><td>new Float(1.0).toString()</td><td>Float.toString(1.0)</td></tr> 4011 <tr><td>new Float(1.0).toString()</td><td>Float.toString(1.0)</td></tr>
3866 <tr><td>new Double(1.0).toString()</td><td>Double.toString(1.0)</td></tr> 4012 <tr><td>new Double(1.0).toString()</td><td>Double.toString(1.0)</td></tr>
3867 <tr><td>new Byte(1).toString()</td><td>Byte.toString(1)</td></tr> 4013 <tr><td>new Byte(1).toString()</td><td>Byte.toString(1)</td></tr>
3868 <tr><td>new Short(1).toString()</td><td>Short.toString(1)</td></tr> 4014 <tr><td>new Short(1).toString()</td><td>Short.toString(1)</td></tr>
3869 <tr><td>new Boolean(true).toString()</td><td>Boolean.toString(true)</td></tr> 4015 <tr><td>new Boolean(true).toString()</td><td>Boolean.toString(true)</td></tr>
3870 </table> 4016 </table>
3871 4017
3872 4018
3873 <h3><a name="DM_FP_NUMBER_CTOR">Bx: 効率が悪い浮動小数点 Number コンストラクタを呼び出しているメソッド (DM_FP _NUMBER_CTOR)</a></h3> 4019 <h3><a name="DM_FP_NUMBER_CTOR">Bx: 効率が悪い浮動小数点 Number コンストラクタを呼び出しているメソッド (DM_FP _NUMBER_CTOR)</a></h3>
3874 4020
3875 4021
3876 <p> 4022 <p>
3877 <code>new Double(double)</code> の使用は、常に新しいブジェクトになることが保証されています。 4023 <code>new Double(double)</code> の使用は、常に新しいブジェクトになることが保証されています。
3878 これに対して、<code>Double.valueOf(double)</code> は、コンパイラ、クラスライブラリ、Java 仮想マシンで値がキャッシュされ ます。 4024 これに対して、<code>Double.valueOf(double)</code> は、コンパイラ、クラスライブラリ、Java 仮想マシンで値がキャッシュされ ます。
3879 キャッシュに格納された値を使うことはインスタンス生成を回避し、コードはより高速になります。 4025 キャッシュに格納された値を使用することはインスタンス生成を回避し、コードはより高速になります。
3880 </p> 4026 </p>
3881 <p> 4027 <p>
3882 クラスが J2SE 5.0より前の Java 仮想マシンとの互換性が不要なら、オートボクシングか <code>Double</code>、<code>Float </code> の <code>valueOf</code> メソッドを使用してください。 4028 クラスが J2SE 5.0より前の Java 仮想マシンとの互換性が不要なら、オートボクシングか <code>Double</code>、<code>Float </code> の <code>valueOf</code> メソッドを使用してください。
3883 </p> 4029 </p>
3884 4030
3885 4031
3886 <h3><a name="DM_NUMBER_CTOR">Bx: 効率が悪い Number コンストラクタを呼び出しているメソッド (DM_NUMBER_CTO R)</a></h3> 4032 <h3><a name="DM_NUMBER_CTOR">Bx: 効率が悪い Number コンストラクタを呼び出しているメソッド (DM_NUMBER_CTO R)</a></h3>
3887 4033
3888 4034
3889 <p> 4035 <p>
3890 <code>new Integer(int)</code> の使用は、常に新しいブジェクトになることが保証されています。 4036 <code>new Integer(int)</code> の使用は、常に新しいブジェクトになることが保証されています。
3891 これに対して、<code>Integer.valueOf(int)</code> は、コンパイラ、クラスライブラリ、Java 仮想マシンで値がキャッシュされます 。 4037 これに対して、<code>Integer.valueOf(int)</code> は、コンパイラ、クラスライブラリ、Java 仮想マシンで値がキャッシュされます 。
3892 キャッシュに格納された値を使うことはインスタンスの作成を回避し、コードはより高速になります。 4038 キャッシュに格納された値を使用することはインスタンスの作成を回避し、コードはより高速になります。
3893 </p> 4039 </p>
3894 <p> 4040 <p>
3895 -128から127までの値は対応するキャッシュされたインスタンスを持つことが保証されています。 4041 -128から127までの値は対応するキャッシュされたインスタンスを持つことが保証されています。
3896 そして、<code>valueOf</code> メソッドの使用は、コンストラクタを使用するより約3.5倍高速です。 4042 そして、<code>valueOf</code> メソッドの使用は、コンストラクタを使用するより約3.5倍高速です。
3897 定数範囲外の値は、両方のスタイルの性能は同じです。 4043 定数範囲外の値は、両方のスタイルの性能は同じです。
3898 </p> 4044 </p>
3899 <p> 4045 <p>
3900 クラスが J2SE 5.0より前の Java 仮想マシンとの互換性が不要なら、<code>Long</code>、<code>Integer</code>、<c ode>Short</code>、<code>Character</code>、<code>Byte</code> のインスタンスを作成するときは、オートボクシ ングか <code>valueOf</code> メソッドを使用してください。 4046 クラスが J2SE 5.0より前の Java 仮想マシンとの互換性が不要なら、<code>Long</code>、<code>Integer</code>、<c ode>Short</code>、<code>Character</code>、<code>Byte</code> のインスタンスを作成するときは、オートボクシ ングか <code>valueOf</code> メソッドを使用してください。
3901 </p> 4047 </p>
3902 4048
3903 4049
3904 <h3><a name="DMI_BLOCKING_METHODS_ON_URL">Dm: URL の equals メソッドと hashCode メソッドはブ ロックする (DMI_BLOCKING_METHODS_ON_URL)</a></h3> 4050 <h3><a name="DMI_BLOCKING_METHODS_ON_URL">Dm: URL の equals メソッドと hashCode メソッドはブ ロックする (DMI_BLOCKING_METHODS_ON_URL)</a></h3>
3905 4051
3906 4052
3907 <p> 4053 <p>
3908 URL の <code>equals</code> メソッドと <code>hashCode</code> メソッドは、ドメイン名の解決を行うので、ひどい性能に なる可能性があります。<br> 4054 URL の <code>equals</code> メソッドと <code>hashCode</code> メソッドは、ドメイン名の解決を行うので、ひどい性能に なる可能性があります。<br>
3909 詳細は、<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash code-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-h ashcode-make.html</a> を参照してください。<br> 4055 詳細は、<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash code-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-h ashcode-make.html</a> を参照してください。<br>
3910 その代わりに <code>java.net.URI</code> を使うことを検討してください 4056 その代わりに <code>java.net.URI</code> を使用することを検討してください
3911 </p> 4057 </p>
3912 4058
3913 4059
3914 <h3><a name="DMI_COLLECTION_OF_URLS">Dm: URL の Map や Set はひどい性能になる可能性がある (DMI_CO LLECTION_OF_URLS)</a></h3> 4060 <h3><a name="DMI_COLLECTION_OF_URLS">Dm: URL の Map や Set はひどい性能になる (DMI_COLLECTI ON_OF_URLS)</a></h3>
3915 4061
3916 4062
3917 <p> 4063 <p>
3918 このメソッドまたはフィールドは、URL の <code>Map</code> か <code>Set</code> を使用しています。 4064 このメソッドまたはフィールドは、URL の <code>Map</code> か <code>Set</code> を使用しています。
3919 URL の <code>equals</code> と <code>hashCode</code> は、ドメイン名の解決を行うので、ひどい性能になる可能性があり ます。<br> 4065 URL の <code>equals</code> と <code>hashCode</code> は、ドメイン名の解決を行うので、ひどい性能になります。<br >
3920 詳細は、<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash code-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-h ashcode-make.html</a> を参照してください。<br> 4066 詳細は、<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash code-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-h ashcode-make.html</a> を参照してください。<br>
3921 その代わりに <code>java.net.URI</code> を使うことをを検討してください 4067 その代わりに <code>java.net.URI</code> を使用することを検討してください
3922 </p> 4068 </p>
3923 4069
3924 4070
3925 <h3><a name="DM_BOOLEAN_CTOR">Dm: 効率が悪い Boolean コンストラクタを呼び出しているメソッド (DM_BOOLEAN_ CTOR)</a></h3> 4071 <h3><a name="DM_BOOLEAN_CTOR">Dm: 効率が悪い Boolean コンストラクタを呼び出しているメソッド (DM_BOOLEAN_ CTOR)</a></h3>
3926 4072
3927 4073
3928 <p> 4074 <p>
3929 <code>java.lang.Boolean</code> の新しいインスタンスを作成するとメモリを浪費します。 4075 <code>java.lang.Boolean</code> の新しいインスタンスを作成するとメモリを浪費します。
3930 <code>Boolean</code> オブジェクトは不変で、2つの有効な値 (<code>Boolean.TRUE</code> と <code>Boole an.FALSE</code>) があります。 4076 <code>Boolean</code> オブジェクトは不変で、2つの有用な値 (<code>Boolean.TRUE</code> と <code>Boole an.FALSE</code>) があります。
3931 その代わりに <code>Boolean</code> オブジェクトを作成するために、<code>Boolean.valueOf</code> メソッド (また は J2SE 5.0 のオートボクシング) を使用してください 4077 その代わりに <code>Boolean.valueOf</code> メソッド (または J2SE 5.0 のオートボクシング) を使用して <code>Bo olean</code> オブジェクトを作成してください
3932 </p> 4078 </p>
3933 4079
3934 4080
3935 <h3><a name="DM_GC">Dm: 明示的なガベージコレクション (DM_GC)</a></h3> 4081 <h3><a name="DM_GC">Dm: 明示的なガベージコレクション (DM_GC)</a></h3>
3936 4082
3937 4083
3938 <p> 4084 <p>
3939 明示的にガベージコレクションを呼び出しています。ベンチマークの特定の用途を除いて非常に疑わしいです。 4085 明示的にガベージコレクションを呼び出しています。ベンチマークの特定の用途を除いて非常に疑わしいです。
3940 </p> 4086 </p>
3941 <p> 4087 <p>
3942 過去に、<code>close</code> メソッドや <code>finalize</code> メソッドでガベージコレクタを明示的に呼び出していた状況は、 巨大なパフォーマンスブラックホールの原因となりました。 4088 過去に、<code>close</code> メソッドや <code>finalize</code> メソッドでガベージコレクタを明示的に呼び出していた状況は、 巨大なパフォーマンスブラックホールの原因となりました。
3943 ガベージコレクションは、高くつく可能性があります。何百、何千ものガベージコレクションを強制する状況は、システムの停滞をもたらすでしょう。 4089 ガベージコレクションは高くつきます。何百、何千ものガベージコレクションを強制する状況は、システムの停滞をもたらすでしょう。
3944 </p> 4090 </p>
3945 4091
3946 4092
3947 <h3><a name="DM_NEW_FOR_GETCLASS">Dm: クラスオブジェクトを得るためだけにインスタンスを作成しているメソッド (DM_NEW _FOR_GETCLASS)</a></h3> 4093 <h3><a name="DM_NEW_FOR_GETCLASS">Dm: クラスオブジェクトを得るためだけにインスタンスを作成しているメソッド (DM_NEW _FOR_GETCLASS)</a></h3>
3948 4094
3949 4095
3950 <p> 4096 <p>
3951 メソッドは、クラスオブジェクトを得るために、インスタンスを生成して <code>getClass</code> メソッドを呼び出しています。 4097 メソッドは、クラスオブジェクトを得るためにインスタンスを生成して <code>getClass</code> メソッドを呼び出しています。
3952 クラスリテラル (<code>Foo.class</code>) を使うほうが簡単です。 4098 クラスリテラル (<code>Foo.class</code>) を使うほうが簡単です。
3953 </p> 4099 </p>
3954 4100
3955 4101
3956 <h3><a name="DM_NEXTINT_VIA_NEXTDOUBLE">Dm: 整数の乱数を生成するためには nextDouble メソッド ではなく nextInt メソッドを使用する (DM_NEXTINT_VIA_NEXTDOUBLE)</a></h3> 4102 <h3><a name="DM_NEXTINT_VIA_NEXTDOUBLE">Dm: 整数の乱数を生成するためには nextDouble メソッド ではなく nextInt メソッドを使用する (DM_NEXTINT_VIA_NEXTDOUBLE)</a></h3>
3957 4103
3958 4104
3959 <p> 4105 <p>
3960 <code>java.util.Random</code> のインスタンス <code>r</code> で、<code>0</code> から <code>n -1</code> の乱数を生成したいのであれば、<code>(int)(r.nextDouble() * n)</code> ではなく <code>r.nex tInt(n)</code> を使用します。 4106 <code>java.util.Random</code> のインスタンス <code>r</code> で、<code>0</code> から <code>n -1</code> の乱数を生成したいのであれば、<code>(int)(r.nextDouble() * n)</code> ではなく <code>r.nex tInt(n)</code> を使用します。
3961 </p> 4107 </p>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4000 <p> 4146 <p>
4001 巨大な文字列定数が複数のクラスファイルにわたって複製されています。 4147 巨大な文字列定数が複数のクラスファイルにわたって複製されています。
4002 final フィールドが文字列定数で初期化され、Java 言語によって他のクラスからの final フィールドへのすべての参照がクラスファイルにインライン化され るからです。 4148 final フィールドが文字列定数で初期化され、Java 言語によって他のクラスからの final フィールドへのすべての参照がクラスファイルにインライン化され るからです。
4003 </p> 4149 </p>
4004 <p> 4150 <p>
4005 JDK はこのバグを解決してサイズを1MB減らすことができました。<br> 4151 JDK はこのバグを解決してサイズを1MB減らすことができました。<br>
4006 詳細は、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6447475">JDK bug 6447475</a> を参照してください。 4152 詳細は、<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6447475">JDK bug 6447475</a> を参照してください。
4007 </p> 4153 </p>
4008 4154
4009 4155
4010 <h3><a name="IIO_INEFFICIENT_INDEX_OF">IIO: String.indexOf(String) の非効率的な使用 (IIO _INEFFICIENT_INDEX_OF)</a></h3>
4011
4012
4013 <p>
4014 このコードは、String.indexOf() に長さ1の文字列定数を渡しています。String.indexOf() の整数実装を使うほうが効率的です。
4015 たとえば、<code>myString.indexOf(".") の代わりに <code>myString.indexOf('.')</code> を呼び出しま す。</code>
4016 </p>
4017
4018
4019 <h3><a name="IIO_INEFFICIENT_LAST_INDEX_OF">IIO: String.lastIndexOf(String) の非効率 的な使用 (IIO_INEFFICIENT_LAST_INDEX_OF)</a></h3>
4020
4021
4022 <p>
4023 このコードは、String.lastIndexOf() に長さ1の文字列定数を渡しています。String.lastIndexOf() の整数実装を使うほうが効率 的です。
4024 たとえば、<code>myString.lastIndexOf(".") の代わりに <code>myString.lastIndexOf('.')</code > を呼び出します。</code>
4025 </p>
4026
4027
4028 <h3><a name="ITA_INEFFICIENT_TO_ARRAY">ITA: 長さが0の配列の引数で toArray メソッドを使用しているメソッド (ITA_INEFFICIENT_TO_ARRAY)</a></h3>
4029
4030
4031 <p>
4032 このメソッドは、Collection 派生クラスの </code>toArray</code> メソッドを使用して長さが0の配列の引数を渡しています。
4033 <code>myCollection.toArray(new Foo[myCollection.size()])</code> を使用するほうがより効率的です。
4034 渡される配列がコレクションの要素のすべてを格納できるくらいの大きさなら、データが読み込まれて、そのまま返されます。
4035 これは、結果として返す2番目の配列 (リフレクションによって) を作成する必要を回避します。
4036 </p>
4037
4038
4039 <h3><a name="SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ループの中で + を使用して文字列を連結している メソッド (SBSC_USE_STRINGBUFFER_CONCATENATION)</a></h3> 4156 <h3><a name="SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ループの中で + を使用して文字列を連結している メソッド (SBSC_USE_STRINGBUFFER_CONCATENATION)</a></h3>
4040 4157
4041 4158
4042 <p> 4159 <p>
4043 このメソッドは、ループの中で + を使用して <code>String</code> を構築していると思われます。 4160 このメソッドは、ループの中で + を使用して <code>String</code> を構築していると思われます。
4044 各々の繰り返しにおいて、<code>String</code> は <code>StringBuffer</code>/<code>StringBuilder< /code> に変換、追加され、<code>String</code> へ変換されます。 4161 各々の繰り返しにおいて、<code>String</code> は <code>StringBuffer</code>/<code>StringBuilder< /code> に変換、追加され、<code>String</code> へ変換されます。
4045 各々の繰り返しで文字列が再コピーされ、増大すると繰り返しの数で二次コストの原因になる可能性があります。 4162 各々の繰り返しで文字列が再コピーされ、増大すると繰り返しの数で二次コストの原因になる可能性があります。
4046 </p> 4163 </p>
4047 <p> 4164 <p>
4048 明示的に、<code>StringBuffer</code> (または J2SE 5.0の <code>StringBuilder</code>) を使うことで 、より良い性能を得られるかもしれません 4165 <code>StringBuffer</code> (または J2SE 5.0の <code>StringBuilder</code>) を明示的に使うとより良 い性能を得られます
4049 </p> 4166 </p>
4050 <p> 4167 <p>
4051 たとえば、 4168 たとえば、
4052 </p> 4169 </p>
4053 <blockquote><pre> 4170 <blockquote><pre>
4054 // This is bad 4171 // This is bad
4055 String s = ""; 4172 String s = "";
4056 for (int i = 0; i &lt; field.length; ++i) { 4173 for (int i = 0; i &lt; field.length; ++i) {
4057 s = s + field[i]; 4174 s = s + field[i];
4058 } 4175 }
4059 4176
4060 // This is better 4177 // This is better
4061 StringBuffer buf = new StringBuffer(); 4178 StringBuffer buf = new StringBuffer();
4062 for (int i = 0; i &lt; field.length; ++i) { 4179 for (int i = 0; i &lt; field.length; ++i) {
4063 buf.append(field[i]); 4180 buf.append(field[i]);
4064 } 4181 }
4065 String s = buf.toString(); 4182 String s = buf.toString();
4066 </pre></blockquote> 4183 </pre></blockquote>
4067 4184
4068 4185
4069 <h3><a name="SIC_INNER_SHOULD_BE_STATIC">SIC: static 内部クラスにすべき (SIC_INNER_SHOULD _BE_STATIC)</a></h3> 4186 <h3><a name="SIC_INNER_SHOULD_BE_STATIC">SIC: static 内部クラスにすべき (SIC_INNER_SHOULD _BE_STATIC)</a></h3>
4070 4187
4071 4188
4072 <p> 4189 <p>
4073 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。 4190 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。
4074 この参照はより大きなクラスのインスタンスを作成して、必要以上に長い間作成オブジェクトへの参照を存続しておくかもしれません 4191 この参照はより大きなクラスのインスタンスを作成して、必要以上に作成オブジェクトへの参照を存続しておくことがあります
4075 できれば、クラスは static にすべきです。 4192 できれば、クラスは static にすべきです。
4076 </p> 4193 </p>
4077 4194
4078 4195
4079 <h3><a name="SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: 名前付き static 内部クラスにリファクタリングできる かもしれない (SIC_INNER_SHOULD_BE_STATIC_ANON)</a></h3> 4196 <h3><a name="SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: 名前付き static 内部クラスにリファクタリングできる かもしれない (SIC_INNER_SHOULD_BE_STATIC_ANON)</a></h3>
4080 4197
4081 4198
4082 <p> 4199 <p>
4083 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。 4200 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。
4084 この参照はより大きなクラスのインスタンスを作成して、必要以上に長く作成オブジェクトへの参照を存続しておくかもしれません 4201 この参照はより大きなクラスのインスタンスを作成して、必要以上に作成オブジェクトへの参照を存続しておくことがあります
4085 できれば、クラスは static 内部クラスにすべきです。 4202 できれば、クラスは static 内部クラスにすべきです。
4086 無名内部クラスは static にできないので、名前付き内部クラスにリファクタリングする必要があります。 4203 無名内部クラスは static にできないので、名前付き内部クラスにリファクタリングする必要があります。
4087 </p> 4204 </p>
4088 4205
4089 4206
4090 <h3><a name="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static 内部クラスにリファクタリングでき るかもしれない (SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS)</a></h3> 4207 <h3><a name="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static 内部クラスにリファクタリングでき るかもしれない (SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS)</a></h3>
4091 4208
4092 4209
4093 <p> 4210 <p>
4094 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。 4211 このクラスは内部クラスなのにそれを作成したオブジェクトへの埋め込まれた参照を使用していません。
(...skipping 10 matching lines...) Expand all
4105 このクラスにはコンパイル時に静的な値に初期化されるインスタンス final フィールドがあります。 4222 このクラスにはコンパイル時に静的な値に初期化されるインスタンス final フィールドがあります。
4106 static フィールドにすることを検討してください。 4223 static フィールドにすることを検討してください。
4107 </p> 4224 </p>
4108 4225
4109 4226
4110 <h3><a name="UM_UNNECESSARY_MATH">UM: 定数値で Math クラスの static メソッドを呼び出しているメソッド (UM _UNNECESSARY_MATH)</a></h3> 4227 <h3><a name="UM_UNNECESSARY_MATH">UM: 定数値で Math クラスの static メソッドを呼び出しているメソッド (UM _UNNECESSARY_MATH)</a></h3>
4111 4228
4112 4229
4113 <p> 4230 <p>
4114 このメソッドは、定数値で <code>java.lang.Math</code> の static メソッドを呼び出しています。 4231 このメソッドは、定数値で <code>java.lang.Math</code> の static メソッドを呼び出しています。
4115 このメソッドの結果は、静的に確定している可能性があり、より高速で、ときには定数を使用するほうがより正確です。<br> 4232 このメソッドの結果は静的に判定でき、より高速で、ときには定数を使用するほうがより正確です。<br>
4116 検出されるメソッドは、以下のとおりです。 4233 検出されるメソッドは、以下のとおりです。
4117 </p> 4234 </p>
4118 <table> 4235 <table>
4119 <tr> 4236 <tr>
4120 <th>メソッド</th> <th>パラメータ</th> 4237 <th>メソッド</th> <th>パラメータ</th>
4121 </tr> 4238 </tr>
4122 <tr> 4239 <tr>
4123 <td>abs</td> <td>-any-</td> 4240 <td>abs</td> <td>-any-</td>
4124 </tr> 4241 </tr>
4125 <tr> 4242 <tr>
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
4293 ソフトウェアは、制限されたディレクトリ内にあるべきパス名を構築するためにHTTPリクエストのパラメータを使いますが、パラメータはそのディレクトリの外にある場所に 解決できる「..」のようなシーケンスを適切に無効にしていません。 4410 ソフトウェアは、制限されたディレクトリ内にあるべきパス名を構築するためにHTTPリクエストのパラメータを使いますが、パラメータはそのディレクトリの外にある場所に 解決できる「..」のようなシーケンスを適切に無効にしていません。
4294 詳細は、<a href="http://cwe.mitre.org/data/definitions/23.html">http://cwe.mitre.org /data/definitions/23.html</a> を参照してください。 4411 詳細は、<a href="http://cwe.mitre.org/data/definitions/23.html">http://cwe.mitre.org /data/definitions/23.html</a> を参照してください。
4295 </p> 4412 </p>
4296 <p> 4413 <p>
4297 FindBugs は、相対パストラバーサルの最も露骨で自明なケースだけを探します。 4414 FindBugs は、相対パストラバーサルの最も露骨で自明なケースだけを探します。
4298 FindBugs が何かを発見したならほぼ間違いなく FindBugs が報告しないより多くの脆弱性があるでしょう。 4415 FindBugs が何かを発見したならほぼ間違いなく FindBugs が報告しないより多くの脆弱性があるでしょう。
4299 相対パストラバーサルを心配するなら、商用の静的解析ツールかペネトレーションテストツールの使用を真剣に検討するべきです。 4416 相対パストラバーサルを心配するなら、商用の静的解析ツールかペネトレーションテストツールの使用を真剣に検討するべきです。
4300 </p> 4417 </p>
4301 4418
4302 4419
4303 <h3><a name="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQL: SQL の Statement の e xecute メソッドに定数でない文字列を渡している (SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE)</a></h3> 4420 <h3><a name="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQL: SQL の Statement の e xecute または addBatch メソッドに定数でない文字列を渡している (SQL_NONCONSTANT_STRING_PASSED_TO_EXECUT E)</a></h3>
4304 4421
4305 4422
4306 <p> 4423 <p>
4307 このメソッドは、動的に生成されるように思われる文字列で、 SQL の <code>Statement</code> の <code>execute</code> メソッドを呼び出しています。 4424 このメソッドは、動的に生成されるように思われる文字列で、 SQL の <code>execute</code> または <code>addBatch</co de> メソッドを呼び出しています。
4308 その代わりに <code>PreparedStatement</code> を使うことを検討してください 4425 その代わりに <code>PreparedStatement</code> を使用することを検討してください
4309 効率的で、SQL インジェクション攻撃に強いです。 4426 効率的で、SQL インジェクション攻撃に強いです。
4310 </p> 4427 </p>
4311 4428
4312 4429
4313 <h3><a name="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">SQL: Prep aredStatement が定数でない文字列から生成されている (SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONST ANT_STRING)</a></h3> 4430 <h3><a name="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">SQL: Prep aredStatement が定数でない文字列から生成されている (SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONST ANT_STRING)</a></h3>
4314 4431
4315 4432
4316 <p> 4433 <p>
4317 このコードは、定数でない文字列から SQL の <code>PreparedStatement</code> を作成しています。 4434 このコードは、定数でない文字列から SQL の <code>PreparedStatement</code> を作成しています。
4318 ユーザからのチェックされていない汚染されたデータがこの文字列を作る際に使われるなら、PreparedStatement で予想外で望ましくない何かをするために SQL インジェクションが使われる可能性があります。 4435 ユーザからのチェックされていない汚染されたデータがこの文字列を作る際に使われるなら、<code>PreparedStatement</code> で予想外で望ま しくない何かをするために SQL インジェクションが使われる可能性があります。
4319 </p> 4436 </p>
4320 4437
4321 4438
4322 <h3><a name="XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: 反射型クロスサイトスクリプティング脆弱性がある J SP (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)</a></h3> 4439 <h3><a name="XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: 反射型クロスサイトスクリプティング脆弱性がある J SP (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)</a></h3>
4323 4440
4324 4441
4325 <p> 4442 <p>
4326 このコードは、JSP の出力に HTTP パラメータを直接書き込んでいます。これは XSS(クロスサイトスクリプティング) 脆弱性を可能にします。<br> 4443 このコードは、JSP の出力に HTTP パラメータを直接書き込んでいます。これは XSS(クロスサイトスクリプティング) 脆弱性を可能にします。<br>
4327 詳細は、<a href="http://en.wikipedia.org/wiki/Cross-site_scripting">http://en.wikipe dia.org/wiki/Cross-site_scripting</a> を参照してください。 4444 詳細は、<a href="http://en.wikipedia.org/wiki/Cross-site_scripting">http://en.wikipe dia.org/wiki/Cross-site_scripting</a> を参照してください。
4328 </p> 4445 </p>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4360 FindBugs が何かを発見したならほぼ間違いなく FindBugs が報告しないより多くの脆弱性があるでしょう。 4477 FindBugs が何かを発見したならほぼ間違いなく FindBugs が報告しないより多くの脆弱性があるでしょう。
4361 XSS を心配するなら、商用の静的解析ツールかペネトレーションテストツールの使用を真剣に検討するべきです。 4478 XSS を心配するなら、商用の静的解析ツールかペネトレーションテストツールの使用を真剣に検討するべきです。
4362 </p> 4479 </p>
4363 4480
4364 4481
4365 <h3><a name="BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: 抽象コレクションへの疑わしいキャスト (BC_BAD_ CAST_TO_ABSTRACT_COLLECTION)</a></h3> 4482 <h3><a name="BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: 抽象コレクションへの疑わしいキャスト (BC_BAD_ CAST_TO_ABSTRACT_COLLECTION)</a></h3>
4366 4483
4367 4484
4368 <p> 4485 <p>
4369 このコードは、Collection を抽象コレクションにキャストしています (たとえば <code>List</code>、<code>Set</code>、< code>Map</code>)。 4486 このコードは、Collection を抽象コレクションにキャストしています (たとえば <code>List</code>、<code>Set</code>、< code>Map</code>)。
4370 オブジェクトがキャストする型であると保証されることを確認してください 4487 オブジェクトがキャストする型であるということが保証されていることを確認してください
4371 必要とするコレクションの反復処理ができるなら Set または List にキャストする必要はありません。 4488 必要とするコレクションの反復処理ができるなら Set または List にキャストする必要はありません。
4372 </p> 4489 </p>
4373 4490
4374 4491
4375 <h3><a name="BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: 具象コレクションへの疑わしいキャスト (BC_BAD_ CAST_TO_CONCRETE_COLLECTION)</a></h3> 4492 <h3><a name="BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: 具象コレクションへの疑わしいキャスト (BC_BAD_ CAST_TO_CONCRETE_COLLECTION)</a></h3>
4376 4493
4377 4494
4378 <p> 4495 <p>
4379 このコードは抽象コレクション (たとえば、Collection、List、Set) を特定の具象実装 (たとえば、ArrayList、HashSet) にキャス トしています。 4496 このコードは抽象コレクション (たとえば、Collection、List、Set) を特定の具象実装 (たとえば、ArrayList、HashSet) にキャス トしています。
4380 これは正しくないかもしれません。そして、将来の時点で他の具象実装への切り替えをとても困難にするので、脆弱なコードになるかもしれません。 4497 これは正しくないかもしれません。そして、将来の時点で他の具象実装への切り替えをとても困難にするので、脆弱なコードになるかもしれません。
4381 そうするために特別な理由がないかぎり抽象コレクションクラスを使用してください 4498 そうするための特別な理由がないかぎり抽象コレクションクラスを使用してください
4382 </p> 4499 </p>
4383 4500
4384 4501
4385 <h3><a name="BC_UNCONFIRMED_CAST">BC: 未チェック/未確認のキャスト (BC_UNCONFIRMED_CAST)</a></ h3> 4502 <h3><a name="BC_UNCONFIRMED_CAST">BC: 未チェック/未確認のキャスト (BC_UNCONFIRMED_CAST)</a></ h3>
4386 4503
4387 4504
4388 <p> 4505 <p>
4389 このキャストはチェックされていません。すべての型のインスタンスがキャストした型にキャストできるというわけではありません 4506 このキャストはチェックされていません。すべての型のインスタンスをキャストする型へキャストできるわけではありません
4390 プログラムのロジックがこのキャストが失敗しないことを確実に確認してください。 4507 プログラムのロジックがこのキャストが失敗しないことを確実に確認してください。
4391 </p> 4508 </p>
4392 4509
4393 4510
4394 <h3><a name="BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: メソッドからの戻り値の未チェック/未確認のキャスト (BC_UNCONFIRMED_CAST_OF_RETURN_VALUE)</a></h3> 4511 <h3><a name="BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: メソッドからの戻り値の未チェック/未確認のキャスト (BC_UNCONFIRMED_CAST_OF_RETURN_VALUE)</a></h3>
4395 4512
4396 4513
4397 <p> 4514 <p>
4398 このコードは、メソッドの戻り値の未確認のキャストを実行しています。 4515 このコードは、メソッドの戻り値の未確認のキャストを実行しています。
4399 コードは、キャストが安全であることが保証されるようにメソッドを呼び出しているかもしれませんが、FindBugs はキャストが安全であることを検証できません。 4516 コードは、キャストが安全であることが保証されるようにメソッドを呼び出しているかもしれませんが、FindBugs はキャストが安全であることを検証できません。
4400 プログラムのロジックがこのキャストが失敗しないことを確実に確認してください。 4517 プログラムのロジックがこのキャストが失敗しないことを確実に確認してください。
4401 </p> 4518 </p>
4402 4519
4403 4520
4404 <h3><a name="BC_VACUOUS_INSTANCEOF">BC: 常に true を返す instanceof (BC_VACUOUS_INSTA NCEOF)</a></h3> 4521 <h3><a name="BC_VACUOUS_INSTANCEOF">BC: 常に true を返す instanceof (BC_VACUOUS_INSTA NCEOF)</a></h3>
4405 4522
4406 4523
4407 <p> 4524 <p>
4408 この instanceof は常に true を返します (テストしている値が null でないかぎり)。 4525 この instanceof は常に true を返します (テストしている値が null でないかぎり)。
4409 これは安全で、誤解や論理エラーを指摘していないことを確認してください。 4526 これは安全で、誤解や論理エラーを指摘していないことを確認してください。
4410 本当に null なのか値をテストしたいなら、多分、instanceof ではなく null テストをしたほうが良く、より明確になります。 4527 本当に null なのか値をテストしたいなら、多分、instanceof ではなく null テストをしたほうが良く、より明確になります。
4411 </p> 4528 </p>
4412 4529
4413 4530
4414 <h3><a name="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSHIFT: 符号なし右シフトを short/by te にキャストしている (ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT)</a></h3> 4531 <h3><a name="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSHIFT: 符号なし右シフトを short/by te にキャストしている (ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT)</a></h3>
4415 4532
4416 4533
4417 <p> 4534 <p>
4418 このコードは、符号なしキャストの実行結果を short または byte にキャストしています。結果の上位ビットは捨てられます。 4535 このコードは、符号なしキャストの実行結果を short または byte にキャストしています。結果の上位ビットは捨てられます。
4419 上位ビットが捨てられるので、符号付き、符号なし右シフトの (シフトのサイズによって) 違いがないかもしれません 4536 上位ビットが捨てられるので、符号付きと符号なし右シフト (シフトのサイズによって) との違いがないかもしれません
4420 </p> 4537 </p>
4421 4538
4422 4539
4423 <h3><a name="CI_CONFUSED_INHERITANCE">CI: final なクラスが protected フィールドを宣言している (CI _CONFUSED_INHERITANCE)</a></h3> 4540 <h3><a name="CI_CONFUSED_INHERITANCE">CI: final なクラスが protected フィールドを宣言している (CI _CONFUSED_INHERITANCE)</a></h3>
4424 4541
4425 4542
4426 <p> 4543 <p>
4427 このクラスは、final と宣言されていますが、フィールドは protected と宣言されています。 4544 このクラスは、final と宣言されていますが、フィールドは protected と宣言されています。
4428 クラスは fainal なので派生できません。、protected の使用は紛らわしいです。 4545 クラスは fainal なので派生できません。、protected の使用は紛らわしいです。
4429 フィールドのためのアクセス修飾子は、フィールドの真の用途を表すため、 private か public に変更するべきです。 4546 フィールドのためのアクセス修飾子は、フィールドの真の用途を表すため、 private か public に変更するべきです。
4430 </p> 4547 </p>
4431 4548
4432 4549
4433 <h3><a name="DB_DUPLICATE_BRANCHES">DB: 2つの分岐のために同じコードを使用しているメソッド (DB_DUPLICATE_ BRANCHES)</a></h3> 4550 <h3><a name="DB_DUPLICATE_BRANCHES">DB: 2つの分岐のために同じコードを使用しているメソッド (DB_DUPLICATE_ BRANCHES)</a></h3>
4434 4551
4435 4552
4436 <p> 4553 <p>
4437 このメソッドは、条件分岐の2つの分岐を実装するために同じコードを使用しています。これがコーディングミスではないことを確認してください。 4554 このメソッドは、条件分岐の2つの分岐を実装するために同じコードを使用しています。これがコーディングミスではないことを確認してください。
4438 </p> 4555 </p>
4439 4556
4440 4557
4441 <h3><a name="DB_DUPLICATE_SWITCH_CLAUSES">DB: switch 文の2つの case のために同じコードを使用している メソッド (DB_DUPLICATE_SWITCH_CLAUSES)</a></h3> 4558 <h3><a name="DB_DUPLICATE_SWITCH_CLAUSES">DB: switch 文の2つの case のために同じコードを使用している メソッド (DB_DUPLICATE_SWITCH_CLAUSES)</a></h3>
4442 4559
4443 4560
4444 <p> 4561 <p>
4445 このメソッドは、switch 文の2つの case を実装するために同じコードを使用しています。 4562 このメソッドは、switch 文の2つの case を実装するために同じコードを使用しています。
4446 複製コードの case かもしれないしコーディングミスかもしれません 4563 複製コードの case かもしれないし、コーディングミスかもしれません
4447 </p> 4564 </p>
4448 4565
4449 4566
4450 <h3><a name="DLS_DEAD_LOCAL_STORE">DLS: ローカル変数への無効な代入 (DLS_DEAD_LOCAL_STORE)</a> </h3> 4567 <h3><a name="DLS_DEAD_LOCAL_STORE">DLS: ローカル変数への無効な代入 (DLS_DEAD_LOCAL_STORE)</a> </h3>
4451 4568
4452 4569
4453 <p> 4570 <p>
4454 この命令はローカル変数に値を代入していますが、値は読み出されないか以降の命令でも使われません。 4571 この命令はローカル変数に値を代入していますが、値は読み出されないか以降の命令でも使われません。
4455 多くの場合、計算された値が決して使われないので、これは誤りを示します。 4572 多くの場合、計算された値が決して使われないので、これは誤りを示します。
4456 </p> 4573 </p>
(...skipping 10 matching lines...) Expand all
4467 この文は、return 文でローカル変数に代入をしています。この代入は効果がありません。 4584 この文は、return 文でローカル変数に代入をしています。この代入は効果がありません。
4468 この文が正しいことを確かめてください。 4585 この文が正しいことを確かめてください。
4469 </p> 4586 </p>
4470 4587
4471 4588
4472 <h3><a name="DLS_DEAD_LOCAL_STORE_OF_NULL">DLS: ローカル変数への無効な null 代入 (DLS_DEAD_LO CAL_STORE_OF_NULL)</a></h3> 4589 <h3><a name="DLS_DEAD_LOCAL_STORE_OF_NULL">DLS: ローカル変数への無効な null 代入 (DLS_DEAD_LO CAL_STORE_OF_NULL)</a></h3>
4473 4590
4474 4591
4475 <p> 4592 <p>
4476 このコードはローカル変数に null を代入していますが代入された値は読み出されていません。 4593 このコードはローカル変数に null を代入していますが代入された値は読み出されていません。
4477 この代入はガベージコレクタを手伝うために導入されたのかもしれませんが、Java SE 6 ではもはや必要とされないか有効ではありません 4594 この代入はガベージコレクタを手伝うために導入されたのかもしれませんが、Java SE 6 ではもはや必要とされないか有用ではありません
4478 </p> 4595 </p>
4479 4596
4480 4597
4481 <h3><a name="DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD">DLS: フィールドを遮るローカル変数への無効な代入 (DLS _DEAD_LOCAL_STORE_SHADOWS_FIELD)</a></h3> 4598 <h3><a name="DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD">DLS: フィールドを遮るローカル変数への無効な代入 (DLS _DEAD_LOCAL_STORE_SHADOWS_FIELD)</a></h3>
4482 4599
4483 4600
4484 <p> 4601 <p>
4485 この命令は、ローカル変数に値を代入していますが、値は読み出されないか以降の命令でも使われません。 4602 この命令は、ローカル変数に値を代入していますが、値は読み出されないか以降の命令でも使われません。
4486 多くの場合、計算された値が決して使われないので、これは誤りを示します。 4603 多くの場合、計算された値が決して使われないので、これは誤りを示します。
4487 フィールドがローカル変数と同じ名前です。そうではなく、フィールドに代入するつもりでしたか? 4604 フィールドがローカル変数と同じ名前です。そうではなく、フィールドに代入するつもりでしたか?
(...skipping 23 matching lines...) Expand all
4511 <p> 4628 <p>
4512 このコードは、文字列で <code>substring(0)</code> を呼び出していますが、元の値を返します。 4629 このコードは、文字列で <code>substring(0)</code> を呼び出していますが、元の値を返します。
4513 </p> 4630 </p>
4514 4631
4515 4632
4516 <h3><a name="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">Dm: Thread オブジェクトが Runna ble が期待されているところに渡されている (DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED)</a></h3> 4633 <h3><a name="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">Dm: Thread オブジェクトが Runna ble が期待されているところに渡されている (DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED)</a></h3>
4517 4634
4518 4635
4519 <p> 4636 <p>
4520 Threadオブジェクトが Runnable が期待されているメソッドへのパラメータとして渡されています。 4637 Threadオブジェクトが Runnable が期待されているメソッドへのパラメータとして渡されています。
4521 これはかなり異常で、論理エラーを示すか、予想外の振る舞いの原因になるかもしれません 4638 これはかなり異常で、論理エラーを示すか、予想外の振る舞いの原因になることがあります
4522 </p> 4639 </p>
4523 4640
4524 4641
4525 <h3><a name="EQ_DOESNT_OVERRIDE_EQUALS">Eq: スーパークラスの equals メソッドをオーバーライドしていないクラス (EQ_DOESNT_OVERRIDE_EQUALS)</a></h3> 4642 <h3><a name="EQ_DOESNT_OVERRIDE_EQUALS">Eq: スーパークラスの equals メソッドをオーバーライドしていないクラス (EQ_DOESNT_OVERRIDE_EQUALS)</a></h3>
4526 4643
4527 4644
4528 <p> 4645 <p>
4529 このクラスは、<code>equals</code> メソッドを定義しているクラスを拡張してフィールドを追加していますが、<code>equals</code> メソッドを定義していません。 4646 このクラスは、<code>equals</code> メソッドを定義しているクラスを拡張してフィールドを追加していますが、<code>equals</code> メソッドを定義していません。
4530 したがって、このクラスのインスタンスの等価性は、サブクラスと追加されたフィールドの同一性を無視します。 4647 したがって、このクラスのインスタンスの等価性は、サブクラスと追加されたフィールドの同一性を無視します。
4531 これが意図したことで、しかも、<code>equals</code> メソッドをオーバーライドする必要がないことを確実にしてください。 4648 これが意図したことで、しかも、<code>equals</code> メソッドをオーバーライドする必要がないことを確実にしてください。
4532 たとえ <code>equals</code> メソッドをオーバーライドする必要がないとしても、サブクラスのための <code>equals</code> メソ ッドが <code>super.equals(o)</code> を呼び出して結果を返すという事実を実証するために、いずれにしろ、<code>equals</c ode> メソッドをオーバーライドすることを検討してください。 4649 たとえ <code>equals</code> メソッドをオーバーライドする必要がないとしても、サブクラスのための <code>equals</code> メソ ッドが <code>super.equals(o)</code> を呼び出して結果を返すという事実を実証するためにいずれにしろ、<code>equals</co de> メソッドをオーバーライドすることを検討してください。
4533 </p> 4650 </p>
4534 4651
4535 4652
4536 <h3><a name="EQ_UNUSUAL">Eq: 異常な equals メソッド (EQ_UNUSUAL)</a></h3> 4653 <h3><a name="EQ_UNUSUAL">Eq: 異常な equals メソッド (EQ_UNUSUAL)</a></h3>
4537 4654
4538 4655
4539 <p> 4656 <p>
4540 このクラスの <code>equals</code> メソッドは、引数の型が <code>this</code> オブジェクトの型と互換性があるこをチェックする ために、我々が認識しているパターンで何もしていません 4657 このクラスの <code>equals</code> メソッドは、引数の型が <code>this</code> オブジェクトの型と互換性があるこをチェックする ために我々が認識しているパターンで何もしていません
4541 このコードは何も間違っていないかもしれませんが、レビューする価値があります。 4658 このコードは何も間違っていないかもしれませんが、レビューする価値があります。
4542 </p> 4659 </p>
4543 4660
4544 4661
4545 <h3><a name="FE_FLOATING_POINT_EQUALITY">FE: 浮動小数点の等価性のためのテスト (FE_FLOATING_POINT _EQUALITY)</a></h3> 4662 <h3><a name="FE_FLOATING_POINT_EQUALITY">FE: 浮動小数点の等価性のためのテスト (FE_FLOATING_POINT _EQUALITY)</a></h3>
4546 4663
4547 4664
4548 <p> 4665 <p>
4549 この演算は、等価性のために2つの浮動小数点値を比較しています。 4666 この演算は、等価性のために2つの浮動小数点値を比較しています。
4550 浮動小数点の計算は丸めを伴うかもしれないので計算された float と double の値は正確ではないかもしれません。 4667 浮動小数点の計算は丸めを伴うかもしれないので計算された float と double の値は正確ではないかもしれません。
4551 通貨のような正確でなければならない値のために<code>BigDecimal</code> のような固定精度型を使うことを検討してください 4668 通貨のような正確でなければならない値のために <code>BigDecimal</code> のような固定精度型を使用することを検討してください
4552 正確である必要がない値のためにいくつかの範囲の中で等価性のために比較することを検討してください。 4669 正確である必要がない値のためにいくつかの範囲の中で等価性のために比較することを検討してください。
4553 たとえば、<code>if (Math.abs(x - y) &lt; .0000001)</code>。<br> 4670 たとえば、<code>if (Math.abs(x - y) &lt; .0000001)</code>。<br>
4554 詳細は Java 言語仕様4.2.4を参照してください。 4671 詳細は Java 言語仕様4.2.4を参照してください。
4555 </p> 4672 </p>
4556 4673
4557 4674
4558 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Boolean 型でない引数を %b 書式指示子を使用してフォーマットしている (VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN)</a></h3> 4675 <h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Boolean 型でない引数を %b 書式指示子を使用してフォーマットしている (VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN)</a></h3>
4559 4676
4560 4677
4561 <p> 4678 <p>
4562 Boolean 型でない引数を %b 書式指示子でフォーマットしています。これは例外をスローしません。 4679 Boolean 型でない引数を %b 書式指示子でフォーマットしています。これは例外をスローしません。
4563 その代わりに、非 null 値では true 、null では false を出力します。 4680 その代わりに、非 null 値では true 、null では false を出力します。
4564 書式文字列のこの機能は奇妙で意図したことではないかもしれません。 4681 書式文字列のこの機能は奇妙で意図したことではないかもしれません。
4565 </p> 4682 </p>
4566 4683
4567 4684
4568 <h3><a name="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: 潜在的な継承された メソッドなのか外部のメソッドなのかあいまいなメソッドの呼び出し (IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_M ETHOD)</a></h3> 4685 <h3><a name="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: 潜在的な継承された メソッドなのか外部のメソッドなのかあいまいなメソッドの呼び出し (IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_M ETHOD)</a></h3>
4569 4686
4570 4687
4571 <p> 4688 <p>
4572 内部クラスは、継承されたメソッドか外部クラスで定義されたメソッドなのかどちらとも解釈できるメソッドを呼び出しています。 4689 内部クラスは、継承されたメソッドか外部クラスで定義されたメソッドなのかどちらとも解釈できるメソッドを呼び出しています。
4573 たとえば、<code>foo(17)</code> を呼び出します。それはスーパークラスと外部のメソッドの両方で定義されています。 4690 たとえば、<code>foo(17)</code> を呼び出します。それはスーパークラスと外部のメソッドの両方で定義されています。
4574 Java のセマンティックスでは、継承したメソッドを呼び出しますが、これは意図したことではないかもしれません 4691 Java のセマンティックスでは、継承したメソッドを呼び出しますが、これはあなたが意図したことではないかもしれません
4575 </p> 4692 </p>
4576 <p> 4693 <p>
4577 本当に継承されたメソッドを呼び出すつもりなら super を付けて (例:super.foo(17)) 呼び出してください。 4694 本当に継承されたメソッドを呼び出すつもりなら super を付けて (例:super.foo(17)) 呼び出してください。
4578 そうすれば、外部クラスのメソッドではなく継承されたメソッドを呼び出したいことがこのコードを読む人と FindBugs に明確になります。 4695 そうすれば、外部クラスのメソッドではなく継承されたメソッドを呼び出したいことがこのコードを読む人と FindBugs に明確になります。
4579 </p> 4696 </p>
4580 <p> 4697 <p>
4581 <code>this.foo(17)</code> を呼び出す場合は、継承されたメソッドが呼び出されます。 4698 <code>this.foo(17)</code> を呼び出す場合は、継承されたメソッドが呼び出されます。
4582 しかしながら、FindBugs はクラスファイルを見るだけなので、<code>this.foo(17)</code> と <code>foo(17)</code > の呼び出しの違いを見分けることができません。 4699 しかしながら、FindBugs はクラスファイルを見るだけなので、<code>this.foo(17)</code> と <code>foo(17)</code > の呼び出しの違いを見分けることができません。
4583 潜在的なあいまいな呼び出しについて文句を言うでしょう。 4700 潜在的なあいまいな呼び出しについて文句を言うでしょう。
4584 </p> 4701 </p>
4585 4702
4586 4703
4587 <h3><a name="IC_INIT_CIRCULARITY">IC: 初期化が循環している (IC_INIT_CIRCULARITY)</a></h3> 4704 <h3><a name="IC_INIT_CIRCULARITY">IC: 初期化が循環している (IC_INIT_CIRCULARITY)</a></h3>
4588 4705
4589 4706
4590 <p> 4707 <p>
4591 バグインスタンスによって参照される2つのクラスのスタティックイニシャライザで循環が検出されました。 4708 バグインスタンスによって参照される2つのクラスのスタティックイニシャライザで循環が検出されました。
4592 多くの種類の予想外の振る舞いは、そのような循環に起因するかもしれません 4709 さまざまな予想外の振る舞いはそのような循環に起因することがあります
4593 </p> 4710 </p>
4594 4711
4595 4712
4596 <h3><a name="ICAST_IDIV_CAST_TO_DOUBLE">ICAST: 整数の除算の結果を double または float にキャストし ている (ICAST_IDIV_CAST_TO_DOUBLE)</a></h3> 4713 <h3><a name="ICAST_IDIV_CAST_TO_DOUBLE">ICAST: 整数の除算の結果を double または float にキャストし ている (ICAST_IDIV_CAST_TO_DOUBLE)</a></h3>
4597 4714
4598 4715
4599 <p> 4716 <p>
4600 このコードは 整数の除算の結果を double または float にキャストしています。 4717 このコードは 整数の除算の結果を double または float にキャストしています。
4601 整数で除算をすることは、ゼロに最も近い整数値まで結果を切り捨てます。 4718 整数で除算をすることは、ゼロに最も近い整数値まで結果を切り捨てます。
4602 結果が double にキャストされたという事実は、この精度が維持されるべきだったことを示唆しています。 4719 結果が double にキャストされたという事実は、この精度が維持されるべきだったことを示唆しています。
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
4643 4760
4644 4761
4645 <p> 4762 <p>
4646 このコードは、除算か符号付き右シフトを使用して2つの整数の平均を計算して、結果を配列の添字として使用しています。 4763 このコードは、除算か符号付き右シフトを使用して2つの整数の平均を計算して、結果を配列の添字として使用しています。
4647 平均値が非常に大きいならオーバーフローする可能性があります (結果として負の平均の計算になる)。 4764 平均値が非常に大きいならオーバーフローする可能性があります (結果として負の平均の計算になる)。
4648 結果が負でないことを意図していたなら、その代わりに符号なし右シフトを使用できます。 4765 結果が負でないことを意図していたなら、その代わりに符号なし右シフトを使用できます。
4649 つまり、<code>(low+high)/2</code> ではなく <code>(low+high) &gt;&gt;&gt; 1</code> を使用してく ださい。 4766 つまり、<code>(low+high)/2</code> ではなく <code>(low+high) &gt;&gt;&gt; 1</code> を使用してく ださい。
4650 </p> 4767 </p>
4651 <p> 4768 <p>
4652 このバグは、二分探索とマージソートの多くの以前の実装で存在します。 4769 このバグは、二分探索とマージソートの多くの以前の実装で存在します。
4653 Martin Buchholz が <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=64 12541">JDK ライブラリでバグを発見し、修正しています</a>。 4770 Martin Buchholz が <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=64 12541">JDK ライブラリのバグを発見して修正しています</a>。
4654 Joshua Bloch が <a href="http://googleresearch.blogspot.com/2006/06/extra-extra-r ead-all-about-it-nearly.html">バグパターンとして公表しました</a>。 4771 Joshua Bloch が <a href="http://googleresearch.blogspot.com/2006/06/extra-extra-r ead-all-about-it-nearly.html">バグパターンとして公表しました</a>。
4655 </p> 4772 </p>
4656 4773
4657 4774
4658 <h3><a name="IM_BAD_CHECK_FOR_ODD">IM: 負数で機能しない奇数チェック (IM_BAD_CHECK_FOR_ODD)</a> </h3> 4775 <h3><a name="IM_BAD_CHECK_FOR_ODD">IM: 負数で機能しない奇数チェック (IM_BAD_CHECK_FOR_ODD)</a> </h3>
4659 4776
4660 4777
4661 <p> 4778 <p>
4662 このコードは、<code>x % 2 == 1</code> を使用して値が負数なのか確かめていますが、負数 (たとえば、<code>(-5) % 2 == - 1</code>) なので機能しません。 4779 このコードは、<code>x % 2 == 1</code> を使用して値が負数なのか確かめていますが、負数 (たとえば、<code>(-5) % 2 == - 1</code>) なので機能しません。
4663 奇数チェックを意図しているなら、<code>x &amp; 1 == 1</code> または <code>x % 2 != 0</code> を使うことを検討 してください 4780 奇数チェックを意図しているなら、<code>x &amp; 1 == 1</code> または <code>x % 2 != 0</code> を使用することを 検討してください
4664 </p> 4781 </p>
4665 4782
4666 4783
4667 <h3><a name="INT_BAD_REM_BY_1">INT: 1を法とする整数の剰余 (INT_BAD_REM_BY_1)</a></h3> 4784 <h3><a name="INT_BAD_REM_BY_1">INT: 1を法とする整数の剰余 (INT_BAD_REM_BY_1)</a></h3>
4668 4785
4669 4786
4670 <p> 4787 <p>
4671 どんな式 <code>(exp % 1)</code> も常に0を返すことが保証されています。 4788 どんな式 <code>(exp % 1)</code> も常に0を返すことが保証されています。
4672 そうではなく、<code>(exp &amp; 1)</code> または <code>(exp &amp; 2)</code> を意味していましたか? 4789 そうではなく、<code>(exp &amp; 1)</code> または <code>(exp &amp; 2)</code> を意味していましたか?
4673 </p> 4790 </p>
4674 4791
4675 4792
4676 <h3><a name="INT_VACUOUS_BIT_OPERATION">INT: 整数値の無意味なビットマスク演算 (INT_VACUOUS_BIT_O PERATION)</a></h3> 4793 <h3><a name="INT_VACUOUS_BIT_OPERATION">INT: 整数値の無意味なビットマスク演算 (INT_VACUOUS_BIT_O PERATION)</a></h3>
4677 4794
4678 4795
4679 <p> 4796 <p>
4680 これはどんな有効な働きもしない整数ビット演算 (AND、OR、XOR) です (たとえば <code>v & 0xffffffff</code>)。 4797 どんな有用な仕事もしない整数ビット演算 (AND、OR、XOR) です (たとえば <code>v & 0xffffffff</code>)。
4681 </p> 4798 </p>
4682 4799
4683 4800
4684 <h3><a name="INT_VACUOUS_COMPARISON">INT: 整数値の無意味な比較 (INT_VACUOUS_COMPARISON)</a ></h3> 4801 <h3><a name="INT_VACUOUS_COMPARISON">INT: 整数値の無意味な比較 (INT_VACUOUS_COMPARISON)</a ></h3>
4685 4802
4686 4803
4687 <p> 4804 <p>
4688 常に同じ値を返す整数の比較があります (たとえば <code>x &lt;= Integer.MAX_VALUE</code>)。 4805 常に同じ値を返す整数の比較があります (たとえば <code>x &lt;= Integer.MAX_VALUE</code>)。
4689 </p> 4806 </p>
4690 4807
4691 4808
4692 <h3><a name="MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: Servlet クラスを拡張したクラスでのインス タンス変数の使用 (MTIA_SUSPECT_SERVLET_INSTANCE_FIELD)</a></h3> 4809 <h3><a name="MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: Servlet クラスを拡張したクラスでのインス タンス変数の使用 (MTIA_SUSPECT_SERVLET_INSTANCE_FIELD)</a></h3>
4693 4810
4694 4811
4695 <p> 4812 <p>
4696 Servletクラスを拡張したクラスで、インスタンス変数を使用しています。 4813 Servletクラスを拡張したクラスで、インスタンス変数を使用しています。
4697 Servlet クラスの1つのインスタンスだけが Java EE フレームワークによって作成され、マルチスレッドによって使われるので、このパラダイムは極めて問題 があり、推奨できません。 4814 Servlet クラスの1つのインスタンスだけが Java EE フレームワークによって作成され、マルチスレッドによって使われるので、このパラダイムは極めて問題 があり、推奨できません。
4698 ローカル変数を使うことだけを検討してください 4815 ローカル変数を使用することだけを検討してください
4699 </p> 4816 </p>
4700 4817
4701 4818
4702 <h3><a name="MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: Struts Action を拡張したクラスでのイ ンスタンス変数の使用 (MTIA_SUSPECT_STRUTS_INSTANCE_FIELD)</a></h3> 4819 <h3><a name="MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: Struts Action を拡張したクラスでのイ ンスタンス変数の使用 (MTIA_SUSPECT_STRUTS_INSTANCE_FIELD)</a></h3>
4703 4820
4704 4821
4705 <p> 4822 <p>
4706 Struts Action クラスを拡張したクラスで、インスタンス変数を使用しています。 4823 Struts Action クラスを拡張したクラスで、インスタンス変数を使用しています。
4707 Struts Action クラスの1つのインスタンスだけが Struts フレームワークによって作成され、マルチスレッドによって使われるので、このパラダイムは 極めて問題があり、推奨できません。 4824 Struts Action クラスの1つのインスタンスだけが Struts フレームワークによって作成され、マルチスレッドによって使われるので、このパラダイムは 極めて問題があり、推奨できません。
4708 ローカル変数を使うことだけを検討してください 4825 ローカル変数を使用することだけを検討してください
4709 モニタを除いて書き込まれるインスタンスフィールドだけが報告されます。 4826 モニタを除いて書き込まれるインスタンスフィールドだけが報告されます。
4710 </p> 4827 </p>
4711 4828
4712 4829
4713 <h3><a name="NP_DEREFERENCE_OF_READLINE_VALUE">NP: readLine メソッドの結果が null なのか確かめ ないで値を利用している (NP_DEREFERENCE_OF_READLINE_VALUE)</a></h3> 4830 <h3><a name="NP_DEREFERENCE_OF_READLINE_VALUE">NP: readLine メソッドの結果が null なのか確かめ ないで値を利用している (NP_DEREFERENCE_OF_READLINE_VALUE)</a></h3>
4714 4831
4715 4832
4716 <p> 4833 <p>
4717 <code>readLine</code> メソッドの結果が null なのか確かめないで値を利用しています。 4834 <code>readLine</code> メソッドの結果が null なのか確かめないで値を利用しています。
4718 <code>readLine</code> メソッドは、それ以上読み出すテキスト行がなければ null を返すので、NullPointerException が 発生します。 4835 <code>readLine</code> メソッドは、それ以上読み出すテキスト行がなければ null を返すので、NullPointerException が 発生します。
4719 </p> 4836 </p>
4720 4837
4721 4838
4722 <h3><a name="NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: readLine メソッドの結果をすぐに利用してい る (NP_IMMEDIATE_DEREFERENCE_OF_READLINE)</a></h3> 4839 <h3><a name="NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: readLine メソッドの結果をすぐに利用してい る (NP_IMMEDIATE_DEREFERENCE_OF_READLINE)</a></h3>
4723 4840
4724 4841
4725 <p> 4842 <p>
4726 <code>readLine</code> メソッドの結果をすぐに利用しています。 4843 <code>readLine</code> メソッドの結果をすぐに利用しています。
4727 <code>readLine</code> メソッドは、それ以上読み出すテキスト行がなければ null を返すので、NullPointerException が 発生します。 4844 <code>readLine</code> メソッドは、それ以上読み出すテキスト行がなければ null を返すので、NullPointerException が 発生します。
4728 </p> 4845 </p>
4729 4846
4730 4847
4731 <h3><a name="NP_LOAD_OF_KNOWN_NULL_VALUE">NP: null とわかっている値のロード (NP_LOAD_OF_KNOW N_NULL_VALUE)</a></h3> 4848 <h3><a name="NP_LOAD_OF_KNOWN_NULL_VALUE">NP: null とわかっている値のロード (NP_LOAD_OF_KNOW N_NULL_VALUE)</a></h3>
4732 4849
4733 4850
4734 <p> 4851 <p>
4735 ここで参照されている変数は、以前に null なのかチェックしているため null であることがわかっています。 4852 ここで参照されている変数は、以前に null なのかチェックしているため null であることがわかっています。
4736 これは有効かもしれないが、間違いかもしれません (多分異なる変数を参照することを意図してました、あるいは以前の null チェックで null でないのか確か めるべきでした)。 4853 これは有効ですが、間違いかもしれません (多分異なる変数を参照することを意図してました、または以前の null チェックで null でないのか確かめるべきで した)。
4737 </p> 4854 </p>
4738 4855
4739 4856
4740 <h3><a name="NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP: メソッドはパラメータに nullness ア ノテーションを強化している (NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION)</a></h3> 4857 <h3><a name="NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP: メソッドはパラメータに nullness ア ノテーションを強化している (NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION)</a></h3>
4741 4858
4742 4859
4743 <p> 4860 <p>
4744 メソッドは、オーバーライドするメソッドの契約を常に実装するべきです。 4861 メソッドは、オーバーライドするメソッドの契約を常に実装するべきです。
4745 したがって、メソッドが @Nullable としてマークされるパラメーターを取るならば、サブクラスでパラメーターを @Nonnull にしてメソッドをオーバーラ イドするべきでありません。 4862 したがって、メソッドが @Nullable としてマークされるパラメーターを取るならば、サブクラスでパラメーターを @Nonnull にしてメソッドをオーバーラ イドするべきでありません。
4746 そうするとメソッドが null パラメータを処理すべき契約を破ります。 4863 そうするとメソッドが null パラメータを処理すべき契約を破ります。
4747 </p> 4864 </p>
4748 4865
4749 4866
4750 <h3><a name="NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: メソッドは戻り値の nullness アノテーショ ンを緩和している (NP_METHOD_RETURN_RELAXING_ANNOTATION)</a></h3> 4867 <h3><a name="NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: メソッドは戻り値の nullness アノテーショ ンを緩和している (NP_METHOD_RETURN_RELAXING_ANNOTATION)</a></h3>
4751 4868
4752 4869
4753 <p> 4870 <p>
4754 メソッドは、オーバーライドするメソッドの契約を常に実装するべきです。 4871 メソッドは、オーバーライドするメソッドの契約を常に実装するべきです。
4755 したがって、メソッドが @Nonnull 値を返すようにアノテートしているならば、サブクラスでメソッドが @Nullable または @CheckForNul l 値を返すようにアノテートしてメソッドをオーバーライドするべきでありません。 4872 したがって、メソッドが @Nonnull 値を返すようにアノテートしているならば、サブクラスでメソッドが @Nullable または @CheckForNul l 値を返すようにアノテートしてメソッドをオーバーライドするべきでありません。
4756 そうするとメソッドが null を返すべできではない契約を破ります。 4873 そうするとメソッドが null を返すべできではない契約を破ります。
4757 </p> 4874 </p>
4758 4875
4759 4876
4760 <h3><a name="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP: null になっている可能性があるメソッドの戻 り値を利用している (NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE)</a></h3> 4877 <h3><a name="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP: null になっている可能性があるメソッドの戻 り値を利用している (NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE)</a></h3>
4761 4878
4762 4879
4763 <p> 4880 <p>
4764 メソッドからの戻り値を null チェックしないで利用しています。メソッドの戻り値は null なのかチェックするべきです。 4881 メソッドからの戻り値を null チェックしないで利用しています。メソッドの戻り値は null なのかチェックするべきです。
4765 コードが実行されると NullPointerException が発生するかもしれません 4882 コードが実行されると NullPointerException を引き起こすことがあります
4766 </p> 4883 </p>
4767 4884
4768 4885
4769 <h3><a name="NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP: null 値を実行不可能かもしれない分岐で 利用している可能性がある (NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE)</a></h3> 4886 <h3><a name="NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP: null 値を実行不可能かもしれない分岐で 利用している可能性がある (NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE)</a></h3>
4770 4887
4771 4888
4772 <p> 4889 <p>
4773 分岐または文が実行されるなら、null 値が利用されて NullPointerException が発生します。 4890 分岐または文が実行されるなら、null 値が利用されて NullPointerException が発生します。
4774 もちろん、問題は分岐または文が実行不可能で、NullPointerException が決して発生する可能性がないということかもしれません。 4891 もちろん、問題は分岐または文が実行不可能で、NullPointerException が決して発生する可能性がないということかもしれません。
4775 それを決めるのは FindBugs の能力を超えています。 4892 それを決めるのは FindBugs の能力を超えています。
4776 この値がすでに null であることを検査したという事実からこれは明確な可能性です。 4893 この値が既に null であることを検査したという事実からこれは明確な可能性です。
4777 </p> 4894 </p>
4778 4895
4779 4896
4780 <h3><a name="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP: パラメータは 非 null でなければならないが null 可能としてアノテートされている (NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS _NULLABLE)</a></h3> 4897 <h3><a name="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP: パラメータは 非 null でなければならないが null 可能としてアノテートされている (NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS _NULLABLE)</a></h3>
4781 4898
4782 4899
4783 <p> 4900 <p>
4784 このパラメータは、常に 非 null にすることを要求する方法で使われていますが、パラメータには明示的に null 可能としてアノテートされています。 4901 このパラメータは、常に 非 null にすることを要求する方法で使われていますが、パラメータには明示的に null 可能としてアノテートされています。
4785 パラメータかアノテーションのどちらかの使い方が間違っています。 4902 パラメータかアノテーションのどちらかの使い方が間違っています。
4786 </p> 4903 </p>
4787 4904
4788 4905
4789 <h3><a name="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: 書き込まれていない public または pr otected フィールドの読み出し (NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3> 4906 <h3><a name="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: 書き込まれていない public または pr otected フィールドの読み出し (NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3>
4790 4907
4791 4908
4792 <p> 4909 <p>
4793 プログラムは、決して null 値でない値を書き込むと思われない public または protected フィールドの null 値を利用しています。 4910 プログラムは、決して null 値でない値を書き込むと思われない public または protected フィールドの null 値を利用しています。
4794 フィールドが解析によって見られない機構を通して初期化されないかぎり、この値を利用すると NullPointerException が発生します。 4911 フィールドが解析によって見られない機構を通して初期化されないかぎり、この値を利用すると NullPointerException が発生します。
4795 </p> 4912 </p>
4796 4913
4797 4914
4798 <h3><a name="NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: 潜在的な非短絡論理の危険な使用 (NS_DANGEROUS_N ON_SHORT_CIRCUIT)</a></h3> 4915 <h3><a name="NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: 潜在的な非短絡論理の危険な使用 (NS_DANGEROUS_N ON_SHORT_CIRCUIT)</a></h3>
4799 4916
4800 4917
4801 <p> 4918 <p>
4802 このコードは、短絡論理 (&amp;&amp; や ||) ではなく非短絡論理 (&amp; や |) を使用していると思われます。 4919 このコードは、短絡論理 (&amp;&amp; や ||) ではなく非短絡論理 (&amp; や |) を使用していると思われます。
4803 さらに、左辺値によって右辺を評価したくない (例外のスローや演算が高くつく副作用があるため) と思っているのかもしれません。 4920 さらに、左辺値によって右辺を評価したくない (例外のスローや演算が高くつく副作用があるため) と思っているのかもしれません。
4804 非短絡論理は、左辺の結果がわかっていて推論できるときでも、両側の式が評価されます 4921 非短絡論理は、左辺を知ることによって結果を推論できたとしても両側の式が評価されます
4805 これは効率が悪く、右辺の評価でエラーが発生するケースを左辺でガードしているなら、結果としてエラーになる可能性があります。 4922 これは効率が悪く、右辺の評価でエラーが発生するケースを左辺でガードしているなら、結果としてエラーになる可能性があります。
4806 </p> 4923 </p>
4807 <p> 4924 <p>
4808 詳細については、<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressio ns.html#15.22.2">the Java Language Specification</a> を参照してください。 4925 詳細については、<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressio ns.html#15.22.2">the Java Language Specification</a> を参照してください。
4809 </p> 4926 </p>
4810 4927
4811 4928
4812 <h3><a name="NS_NON_SHORT_CIRCUIT">NS: 非短絡論理の疑わしい使用 (NS_NON_SHORT_CIRCUIT)</a></ h3> 4929 <h3><a name="NS_NON_SHORT_CIRCUIT">NS: 非短絡論理の疑わしい使用 (NS_NON_SHORT_CIRCUIT)</a></ h3>
4813 4930
4814 4931
4815 <p> 4932 <p>
4816 このコードは、短絡論理 (&amp;&amp; や ||) ではなく非短絡論理 (&amp; や |) を使用していると思われます。 4933 このコードは、短絡論理 (&amp;&amp; や ||) ではなく非短絡論理 (&amp; や |) を使用していると思われます。
4817 非短絡論理は、左辺の結果がわかっていて推論できるときでも、両側の式が評価されます 4934 非短絡論理は、左辺を知ることによって結果を推論できたとしても両側の式が評価されます
4818 これは効率が悪く、右辺の評価でエラーが発生するケースを左辺でガードしているなら、結果としてエラーになる可能性があります。 4935 これは効率が悪く、右辺の評価でエラーが発生するケースを左辺でガードしているなら、結果としてエラーになる可能性があります。
4819 </p> 4936 </p>
4820 <p> 4937 <p>
4821 詳細については、<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressio ns.html#15.22.2">the Java Language Specification</a> を参照してください。 4938 詳細については、<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressio ns.html#15.22.2">the Java Language Specification</a> を参照してください。
4822 </p> 4939 </p>
4823 4940
4824 4941
4825 <h3><a name="PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: null ではなく長さが0の配列を返すことを検討する (P ZLA_PREFER_ZERO_LENGTH_ARRAYS)</a></h3> 4942 <h3><a name="PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: null ではなく長さが0の配列を返すことを検討する (P ZLA_PREFER_ZERO_LENGTH_ARRAYS)</a></h3>
4826 4943
4827 4944
4828 <p> 4945 <p>
4829 結果がないこと (すなわち、結果の空のリスト) を示すために null 参照ではなく長さが0の配列 を返すことは、多くの場合より良い設計です。 4946 結果がないこと (すなわち、結果の空のリスト) を示すために null 参照ではなく長さが0の配列 を返すことは、多くの場合より良い設計です。
4830 </p> 4947 </p>
4831 <p> 4948 <p>
4832 他方では、「この質問に対する答えがない」ことを示すためにnull を使うことはおそらく適切です 4949 他方では、「この質問に対する答えがない」ことを示すために null を使用することはおそらく適切です
4833 たとえば、<code>File.listFiles()</code> は、ファイルがないディレクトリを与えられた場合は空のリストを返し、ファイルがディレクトリで ないなら null を返します。 4950 たとえば、<code>File.listFiles()</code> は、ファイルがないディレクトリを与えられた場合は空のリストを返し、ファイルがディレクトリで ないなら null を返します。
4834 </p> 4951 </p>
4835 4952
4836 4953
4837 <h3><a name="QF_QUESTIONABLE_FOR_LOOP">QF: 複雑か巧妙か間違ったインクリメントの for ループ (QF_QUESTI ONABLE_FOR_LOOP)</a></h3> 4954 <h3><a name="QF_QUESTIONABLE_FOR_LOOP">QF: 複雑か巧妙か間違ったインクリメントの for ループ (QF_QUESTI ONABLE_FOR_LOOP)</a></h3>
4838 4955
4839 4956
4840 <p> 4957 <p>
4841 本当にこの for ループが正しい変数をインクリメントしていますか? 4958 本当にこの for ループが正しい変数をインクリメントしていますか?
4842 別の変数が for ループによって初期化されてチェックされるように見えます。 4959 別の変数が for ループによって初期化されてチェックされるように見えます。
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
4925 ほとんどすべての状況で、結果が null でないなら戻り値を使用したいでしょう。 5042 ほとんどすべての状況で、結果が null でないなら戻り値を使用したいでしょう。
4926 再び <code>readLine</code> メソッドを呼び出すと異なる行が得られます。 5043 再び <code>readLine</code> メソッドを呼び出すと異なる行が得られます。
4927 </p> 5044 </p>
4928 5045
4929 5046
4930 <h3><a name="RV_REM_OF_HASHCODE">RV: ハッシュコードの剰余は負かもしれない (RV_REM_OF_HASHCODE)</a> </h3> 5047 <h3><a name="RV_REM_OF_HASHCODE">RV: ハッシュコードの剰余は負かもしれない (RV_REM_OF_HASHCODE)</a> </h3>
4931 5048
4932 5049
4933 <p> 5050 <p>
4934 このコードは、ハッシュコードを計算して別の値を法とする剰余を計算しています。 5051 このコードは、ハッシュコードを計算して別の値を法とする剰余を計算しています。
4935 ハッシュコードが負かもしれないので、剰余演算の結果も負かもしれません 5052 ハッシュコードは負になり、剰余演算の結果も負なります
4936 </p> 5053 </p>
4937 <p> 5054 <p>
4938 計算結果が負ではないことを確認したいなら、コードを変更する必要があるかもしれません。 5055 計算結果が負ではないことを確認したいなら、コードを変更する必要があるかもしれません。
4939 除数が2の累乗であることがわかっているなら、代わりにビット演算を使用できます (すなわち、<code>x.hashCode()%n</code> の代わりに < code>x.hashCode()&amp;(n-1)</code> を使用してください)。 5056 除数が2の累乗であることがわかっているなら、代わりにビット演算を使用できます (すなわち、<code>x.hashCode()%n</code> の代わりに < code>x.hashCode()&amp;(n-1)</code> を使用してください)。
4940 これはおそらく、剰余を計算するより高速です。 5057 これはおそらく、剰余を計算するより高速です。
4941 除数が2の累乗であるということをわかっていないなら、剰余演算の結果の絶対値を取得してください (すなわち <code>Math.abs(x.hashCode() %n)</code>)。 5058 除数が2の累乗であるということをわかっていないなら、剰余演算の結果の絶対値を取得してください (すなわち <code>Math.abs(x.hashCode() %n)</code>)。
4942 </p> 5059 </p>
4943 5060
4944 5061
4945 <h3><a name="RV_REM_OF_RANDOM_INT">RV: 符号付き32ビット整数の乱数の剰余 (RV_REM_OF_RANDOM_INT)< /a></h3> 5062 <h3><a name="RV_REM_OF_RANDOM_INT">RV: 符号付き32ビット整数の乱数の剰余 (RV_REM_OF_RANDOM_INT)< /a></h3>
4946 5063
4947 5064
4948 <p> 5065 <p>
4949 このコードは符号付き整数の乱数を生成して別の値を法とする剰余を計算しています。 5066 このコードは符号付き整数の乱数を生成して別の値を法とする剰余を計算しています。
4950 乱数が負かもしれないので、剰余演算の結果も負かもしれません。これが意図したことであることを確実にしてください。 5067 乱数は負になり、剰余演算の結果も負になります。これが意図したことであることを確実にしてください。
4951 その代わりに <code>Random.nextInt(int)</code> の使用を強く検討してください。 5068 その代わりに <code>Random.nextInt(int)</code> の使用を強く検討してください。
4952 </p> 5069 </p>
4953 5070
4954 5071
4955 <h3><a name="RV_RETURN_VALUE_IGNORED_INFERRED">RV: メソッドは戻り値を無視しています、これは間違いではないです か? (RV_RETURN_VALUE_IGNORED_INFERRED)</a></h3> 5072 <h3><a name="RV_RETURN_VALUE_IGNORED_INFERRED">RV: メソッドは戻り値を無視しています、これは間違いではないです か? (RV_RETURN_VALUE_IGNORED_INFERRED)</a></h3>
4956 5073
4957 5074
4958 <p> 5075 <p>
4959 このコードは、メソッドを呼び出して、戻り値を無視しています。 5076 このコードは、メソッドを呼び出して、戻り値を無視しています。
4960 戻り値は、メソッドが呼び出される型と同じ型です。そして、我々の解析から戻り値が重要であるかもしれないように見えます (たとえば、<code>String.toL owerCase()</code> の戻り値を無視するような)。 5077 戻り値は、メソッドが呼び出される型と同じ型です。そして、我々の解析から戻り値が重要であるかもしれないように見えます (たとえば、<code>String.toL owerCase()</code> の戻り値を無視するような)。
4961 </p> 5078 </p>
4962 <p> 5079 <p>
4963 我々は、戻り値を無視することがメソッド本体の単純な解析から悪い考えかもしれないと推測しています。 5080 我々は、戻り値を無視することがメソッド本体の単純な解析から悪い考えかもしれないと推測しています。
4964 このメソッドの戻り値を無視することが重要であるか許容できるかどうかに関して、FindBugs に指示する @CheckReturnValue アノテーションが使 えます。 5081 このメソッドの戻り値を無視することが重要であるか許容できるかどうかに関して、FindBugs に指示する @CheckReturnValue アノテーションが使 えます。
4965 </p> 5082 </p>
4966 <p> 5083 <p>
4967 戻り値を無視することが間違いではないか決めるために、厳密に調査してください 5084 戻り値を無視することが間違いではないか決めるために厳密に調査してください
4968 </p> 5085 </p>
4969 5086
4970 5087
5088 <h3><a name="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV: 副作用がないメソッドの戻り値は無視される (R V_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT)</a></h3>
5089
5090
5091 <p>
5092 このコードは、メソッドを呼び出して戻り値を無視しています。
5093 しかしながら、解析はメソッド (もしあればサブクラスの実装も含む) が戻り値以外の効果をもたらさないことを示しています。
5094 この呼び出しは除去できます。
5095 </p>
5096 <p>
5097 我々は、できる限り誤検出を減らそうとしていますが、いくつかのケースではこの警告が間違っているかもしれません。
5098 よくある誤検出です。
5099 </p>
5100 <p>
5101 - メソッドは、オーバライドされ解析対象外の他のプロジェクトで副作用がもたらされるように設計されている
5102 <p>
5103 <p>
5104 - メソッドは、副作用をもたらすかもしれないクラスローダをトリガーするように呼び出されている
5105 </p>
5106 <p>
5107 - メソッドは、例外を取得するために呼び出されている
5108 </p>
5109 <p>
5110 我々の仮定が正しくないと感じるなら、FindBugs にこのメソッドの戻り値が無視されることを許容するように指示する @CheckReturnValue アノテ ーションを使用することができます。
5111 </p>
5112
5113
4971 <h3><a name="SA_FIELD_DOUBLE_ASSIGNMENT">SA: フィールドの二重代入 (SA_FIELD_DOUBLE_ASSIGNM ENT)</a></h3> 5114 <h3><a name="SA_FIELD_DOUBLE_ASSIGNMENT">SA: フィールドの二重代入 (SA_FIELD_DOUBLE_ASSIGNM ENT)</a></h3>
4972 5115
4973 5116
4974 <p> 5117 <p>
4975 このメソッドにはフィールドの二重代入があります。<br> 5118 このメソッドにはフィールドの二重代入があります。<br>
4976 たとえば以下のようなコードです。 5119 たとえば以下のようなコードです。
4977 </p> 5120 </p>
4978 <blockquote><pre> 5121 <blockquote><pre>
4979 int x,y; 5122 int x,y;
4980 public void foo() { 5123 public void foo() {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
5020 <p> 5163 <p>
5021 そのような代入は役に立たないので、論理エラーかタイプミスかもしれません。 5164 そのような代入は役に立たないので、論理エラーかタイプミスかもしれません。
5022 </p> 5165 </p>
5023 5166
5024 5167
5025 <h3><a name="SF_SWITCH_FALLTHROUGH">SF: 1つの case が次の case へと通り抜ける switch 文を発見した (SF_SWITCH_FALLTHROUGH)</a></h3> 5168 <h3><a name="SF_SWITCH_FALLTHROUGH">SF: 1つの case が次の case へと通り抜ける switch 文を発見した (SF_SWITCH_FALLTHROUGH)</a></h3>
5026 5169
5027 5170
5028 <p> 5171 <p>
5029 このメソッドには1つの case が次の case へと通り抜ける switch 文があります。 5172 このメソッドには1つの case が次の case へと通り抜ける switch 文があります。
5030 通常、break か return でこの case を終わらせる必要があります。 5173 通常は、break か return でこの case を終わらせる必要があります。
5031 </p> 5174 </p>
5032 5175
5033 5176
5034 <h3><a name="SF_SWITCH_NO_DEFAULT">SF: default がない switch 文を発見した (SF_SWITCH_NO_D EFAULT)</a></h3> 5177 <h3><a name="SF_SWITCH_NO_DEFAULT">SF: default がない switch 文を発見した (SF_SWITCH_NO_D EFAULT)</a></h3>
5035 5178
5036 5179
5037 <p> 5180 <p>
5038 このメソッドにはdefault がない switch 文があります。 5181 このメソッドにはdefault がない switch 文があります。
5039 通常、default を用意する必要があります。 5182 通常は、default を用意する必要があります。
5040 </p> 5183 </p>
5041 <p> 5184 <p>
5042 解析は生成されたバイトコードを見るだけなので、default が switch 文の終わりにあって、break 文で終わらないならば、誤警告のトリガーとなりま 5185 解析は生成されたバイトコードを見るだけなので、default が switch 文の終わりにあって、他のケースに break 文が含まれていないなら誤検出のト リガーとなります
5043 </p> 5186 </p>
5044 5187
5045 5188
5046 <h3><a name="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: インスタンスメソッドから static フィ ールドへの書き込み (ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD)</a></h3> 5189 <h3><a name="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: インスタンスメソッドから static フィ ールドへの書き込み (ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD)</a></h3>
5047 5190
5048 5191
5049 <p> 5192 <p>
5050 このインスタンスメソッドは、static フィールドに書き込みをしています。 5193 このインスタンスメソッドは、static フィールドに書き込みをしています。
5051 複数のインスタンスが操作されているなら、正しくさせるのは難しいです。一般的に間違ったプラクティスです 5194 複数のインスタンスが操作されているなら、正しくさせるのは難しいです。一般的にバッドプラクティスです
5052 </p> 5195 </p>
5053 5196
5054 5197
5055 <h3><a name="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: サブクラスで継承できない private な r eadResolve メソッド (SE_PRIVATE_READ_RESOLVE_NOT_INHERITED)</a></h3> 5198 <h3><a name="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: サブクラスで継承できない private な r eadResolve メソッド (SE_PRIVATE_READ_RESOLVE_NOT_INHERITED)</a></h3>
5056 5199
5057 5200
5058 <p> 5201 <p>
5059 このクラスは、private な <code>readResolve</code> メソッドを定義しています。 5202 このクラスは、private な <code>readResolve</code> メソッドを定義しています。
5060 そのため、このメソッドはサブクラスで継承できません。 5203 そのため、このメソッドはサブクラスで継承できません。
5061 これが意図したことなら間違っていないかもしれませんが確認するためにレビューするべきです。 5204 これが意図したことなら間違っていないかもしれませんが確認するためにレビューするべきです。
5062 </p> 5205 </p>
5063 5206
5064 5207
5065 <h3><a name="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS">Se: Serializable でないクラ スの transient フィールド (SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS)</a></h3> 5208 <h3><a name="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS">Se: Serializable でないクラ スの transient フィールド (SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS)</a></h3>
5066 5209
5067 5210
5068 <p> 5211 <p>
5069 フィールドは、transient と宣言していますが、クラスは直列化可能ではないので、まったく効果がありません。 5212 フィールドは、transient と宣言していますが、クラスは直列化可能ではないので、まったく効果がありません。
5070 クラスが transient だったときの名残かもしれません、あるいは直列化機構を誤解しているのかもしれません 5213 クラスが transient だったときの名残かもしれません、または直列化機構を誤解しているのかもしれません
5071 </p> 5214 </p>
5072 5215
5073 5216
5074 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: 値は型修飾子を必要 としているが、不明としてマークされている (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a>< /h3> 5217 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: 値は型修飾子を必要 としているが、不明としてマークされている (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a>< /h3>
5075 5218
5076 5219
5077 <p> 5220 <p>
5078 値は、常に型修飾子によって示された値であることを必要とする方法で使われています。 5221 値は、常に型修飾子によって示された値であることを必要とする方法で使われています。
5079 しかし、値はどこでその型修飾子が必要なのかわからないと述べている明示的なアノテーションがあります。 5222 しかし、値はどこでその型修飾子が必要なのかわからないと述べている明示的なアノテーションがあります。
5080 使い方かアノテーションのどちらかが間違っています。 5223 使い方かアノテーションのどちらかが間違っています。
5081 </p> 5224 </p>
5082 5225
5083 5226
5084 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: 値は型修飾子を必要と しないが、不明としてマークされている (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK)</a></h3 > 5227 <h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: 値は型修飾子を必要と しないが、不明としてマークされている (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK)</a></h3 >
5085 5228
5086 5229
5087 <p> 5230 <p>
5088 値は、型修飾子によって示された値でないことを必要とする方法で使われています。 5231 値は、型修飾子によって示された値でないことを必要とする方法で使われています。
5089 しかし、値はどこでその型修飾子がいるのか禁止されていのるかわからないと述べている明示的なアノテーションがあります。 5232 しかし、値はどこでその型修飾子がいるのか禁止されていのるかわからないと述べている明示的なアノテーションがあります。
5090 使い方かアノテーションのどちらかが間違っています。 5233 使い方かアノテーションのどちらかが間違っています。
5091 </p> 5234 </p>
5092 5235
5093 5236
5237 <h3><a name="UC_USELESS_CONDITION">UC: 条件は効果がない (UC_USELESS_CONDITION)</a></h3>
5238
5239
5240 <p>
5241 この条件は常に関係している変数の値が前に絞られたのと同じ結果を作り出します。
5242 おそらく何かほかのことを意味していたのか、あるいは条件を除去できます。
5243 </p>
5244
5245
5246 <h3><a name="UC_USELESS_CONDITION_TYPE">UC: 条件は変数型のために効果がない (UC_USELESS_CONDITIO N_TYPE)</a></h3>
5247
5248
5249 <p>
5250 この条件は関係している変数の型範囲のために常に同じ結果を作り出します。
5251 おそらく何かほかのことを意味していたのか、あるいは条件を除去できます。
5252 </p>
5253
5254
5255 <h3><a name="UC_USELESS_OBJECT">UC: 役に立たないオブジェクトを作成した (UC_USELESS_OBJECT)</a></h 3>
5256
5257
5258 <p>
5259 我々の解析でオブジェクトが役に立たないことを示しています。
5260 作成され、変更されていますが、値はメソッドの外に出ないし、副作用をもたらしません。
5261 間違いかオブジェクトが使われることを意図していたかのどちらか、あるいは除去できます。
5262 </p>
5263 <p>
5264 この解析はめったに誤検出することはありません。よくある誤検出のケースです。
5265 </p>
5266 <p>- 暗黙のうちに曖昧な例外をスローした</p>
5267 <p>- コードを一般化してスタブとして使用された</p>
5268 <p>- 弱/ソフト参照オブジェクトへの強い参照を持っていた</p>
5269
5270
5271 <h3><a name="UC_USELESS_OBJECT_STACK">UC: 役に立たないオブジェクトをスタックで作成した (UC_USELESS_OBJ ECT_STACK)</a></h3>
5272
5273
5274 <p>
5275 このオブジェクトは副作用を持たない修正を行うために作成されています。
5276 おそらく何かほかのことを意味していたのか、あるいはオブジェクトを除去できます。
5277 </p>
5278
5279
5280 <h3><a name="UC_USELESS_VOID_METHOD">UC: 役に立たない空ではない void メソッド (UC_USELESS_VOID_ METHOD)</a></h3>
5281
5282
5283 <p>
5284 我々の解析は、この空ではない void メソッドが実際に有用な仕事を行わないことを示しています。
5285 確認してください。おそらくそのコードが間違っているか、またはボディを完全に除去できます。
5286 </p>
5287 <p>
5288 我々はできる限り誤検出を減らそうと努力しているが、いくつかのケースでは警告は間違っているかもしれません。
5289 よくある誤検出例です。
5290 </p>
5291 <p>
5292 - メソッドは、副作用を持つかもしれないクラスのロードをトリガすることを意図している
5293 </p>
5294 <p>
5295 - メソッドは、暗黙のわかりにくい例外をスローするように意図されている
5296 </p>
5297
5298
5094 <h3><a name="UCF_USELESS_CONTROL_FLOW">UCF: 役に立たない制御フロー (UCF_USELESS_CONTROL_FLO W)</a></h3> 5299 <h3><a name="UCF_USELESS_CONTROL_FLOW">UCF: 役に立たない制御フロー (UCF_USELESS_CONTROL_FLO W)</a></h3>
5095 5300
5096 5301
5097 <p> 5302 <p>
5098 このメソッドには分岐するのかどうかに関係なく、制御フローが同じ場所へと続く、役に立たない制御フロー文があります。<br> 5303 このメソッドには分岐するのかどうかに関係なく、制御フローが同じ場所へと続く、役に立たない制御フロー文があります。<br>
5099 たとえば、これは 空の <code>if</code> 文が原因になります。 5304 たとえば、これは 空の <code>if</code> 文が原因になります。
5100 </p> 5305 </p>
5101 <blockquote><pre> 5306 <blockquote><pre>
5102 if (argv.length == 0) { 5307 if (argv.length == 0) {
5103 // TODO: handle this case 5308 // TODO: handle this case
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
5146 どこかほかで、値がロードされて、null チェックなしで null 値が利用されます。 5351 どこかほかで、値がロードされて、null チェックなしで null 値が利用されます。
5147 フィールドが初期化される前に利用されると NullPointerException が発生するので、誤りか疑わしい設計かもしれません。 5352 フィールドが初期化される前に利用されると NullPointerException が発生するので、誤りか疑わしい設計かもしれません。
5148 </p> 5353 </p>
5149 5354
5150 5355
5151 <h3><a name="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF: 書き込まてれいない public または protected フィールド (UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3> 5356 <h3><a name="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF: 書き込まてれいない public または protected フィールド (UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3>
5152 5357
5153 5358
5154 <p> 5359 <p>
5155 この public または protected フィールドは書き込まれていません。このフィールドからの読み出しはデフォルト値を返します。 5360 この public または protected フィールドは書き込まれていません。このフィールドからの読み出しはデフォルト値を返します。
5156 誤りをチェックしてください (フィールドは初期化するべきでしたか?)。使わないなら除去してください 5361 誤りをチェックしてください (フィールドは初期化するべきでしたか?)。役に立たないなら除去してください
5157 </p> 5362 </p>
5158 5363
5159 5364
5160 <h3><a name="XFB_XML_FACTORY_BYPASS">XFB: XMLインタフェースの特定の実装のインスタンスを作成しているメソッド (XF B_XML_FACTORY_BYPASS)</a></h3> 5365 <h3><a name="XFB_XML_FACTORY_BYPASS">XFB: XMLインタフェースの特定の実装のインスタンスを作成しているメソッド (XF B_XML_FACTORY_BYPASS)</a></h3>
5161 5366
5162 5367
5163 <p> 5368 <p>
5164 このメソッドは、XMLインタフェースの特定の実装のインスタンスを作成しています。 5369 このメソッドは、XMLインタフェースの特定の実装のインスタンスを作成しています。
5165 実装が実行時に変更できるように、これらのオブジェクトを作成するために提供されたファクトリクラスを使うことが望ましいです。<br> 5370 提供されたファクトリクラスを使用してオブジェクトを作成して実行時に実装を変更できるようにすることが望ましいです。<br>
5166 詳細は、以下を参照してください。 5371 詳細は、以下を参照してください。
5167 </p> 5372 </p>
5168 <ul> 5373 <ul>
5169 <li>javax.xml.parsers.DocumentBuilderFactory</li> 5374 <li>javax.xml.parsers.DocumentBuilderFactory</li>
5170 <li>javax.xml.parsers.SAXParserFactory</li> 5375 <li>javax.xml.parsers.SAXParserFactory</li>
5171 <li>javax.xml.transform.TransformerFactory</li> 5376 <li>javax.xml.transform.TransformerFactory</li>
5172 <li>org.w3c.dom.Document.create<i>XXXX</i></li> 5377 <li>org.w3c.dom.Document.create<i>XXXX</i></li>
5173 </ul> 5378 </ul>
5174 5379
5175 5380
5176 5381
5177 5382
5178 <hr> <p> 5383 <hr> <p>
5179 <script language="JavaScript" type="text/javascript"> 5384 <script language="JavaScript" type="text/javascript">
5180 <!---//hide script from old browsers 5385 <!---//hide script from old browsers
5181 document.write( "Last updated "+ document.lastModified + "." ); 5386 document.write( "Last updated "+ document.lastModified + "." );
5182 //end hiding contents ---> 5387 //end hiding contents --->
5183 </script> 5388 </script>
5184 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu gs@cs.umd.edu</a> 5389 <p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbu gs@cs.umd.edu</a>
5185 <p> 5390 <p>
5186 <A href="http://sourceforge.net"><IMG src="http://sourceforge.net/sflogo.php?gro up_id=96405&amp;type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></A> 5391 <a href="http://sourceforge.net/projects/findbugs/"><img src="http://sourceforge .net/sflogo.php?group_id=96405&amp;type=5" width="210" height="62" border="0" al t="FindBugs on SourceForge.net" /></a>
5187 </td></tr></table> 5392 </td></tr></table>
5188 </body></html> 5393 </body></html>
OLDNEW
« no previous file with comments | « doc/bugDescriptions_fr.html ('k') | doc/contributing.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698