Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 153ba4f922480f6ff5c2f77936d5ea02 > files > 37

findbugs-3.0.1-14.mga7.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FindBugs Bug Descriptions</title>
<link rel="stylesheet" type="text/css" href="findbugs.css"/>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
</head><body>

<table width="100%"><tr>

<td bgcolor="#b9b9fe" valign="top" align="left" width="20%"> 
<table width="100%" cellspacing="0" border="0"> 
<tr><td><a class="sidebar" href="index.html"><img src="umdFindbugs.png" alt="FindBugs"></a></td></tr> 

<tr><td>&nbsp;</td></tr>

<tr><td><b>Docs and Info</b></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="findbugs2.html">FindBugs 2.0</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="demo.html">Demo and data</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="users.html">Users and supporters</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://findbugs.blogspot.com/">FindBugs blog</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="factSheet.html">Fact sheet</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="manual/index.html">Manual</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="ja/manual/index.html">Manual(ja/&#26085;&#26412;&#35486;)</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="FAQ.html">FAQ</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions.html">Bug descriptions</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions_ja.html">Bug descriptions(ja/&#26085;&#26412;&#35486;)</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="bugDescriptions_fr.html">Bug descriptions(fr)</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="mailingLists.html">Mailing lists</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="publications.html">Documents and Publications</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="links.html">Links</a></font></td></tr> 

<tr><td>&nbsp;</td></tr>

<tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr> 

<tr><td>&nbsp;</td></tr>

<tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs Swag</b></a></td></tr>

<tr><td>&nbsp;</td></tr>

<tr><td><b>Development</b></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/p/findbugs/bugs/">Open bugs</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="reportingBugs.html">Reporting bugs</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="contributing.html">Contributing</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="team.html">Dev team</a></font></td></tr> 
<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> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="Changes.html">Change log</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://sourceforge.net/projects/findbugs">SF project page</a></font></td></tr> 
<tr><td><font size="-1">&nbsp;<a class="sidebar" href="http://code.google.com/p/findbugs/source/browse/">Browse source</a></font></td></tr> 
<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> 
</table> 
</td>
<td align="left" valign="top">
<h1>FindBugs Bug Descriptions</h1>
<p>This document lists the standard bug patterns reported by
<a href="http://findbugs.sourceforge.net">FindBugs</a> version 3.0.1-dev-20190123.</p>
<h2>Summary</h2>
<table width="100%">
<tr bgcolor="#b9b9fe"><th>Description</th><th>Category</th></tr>
<tr bgcolor="#eeeeee"><td><a href="#BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">BC: equals ????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK">BIT: ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#CN_IDIOM">CN: Cloneable ??????????????????????????? clone ???????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#CN_IDIOM_NO_SUPER_CALL">CN: clone ??????????????? super.clone() ???????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: Cloneable ???????????????????????????????????? clone ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#CNT_ROUGH_CONSTANT_VALUE">CNT: ??????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#CO_ABSTRACT_SELF">Co: ??????????????????????????? compareTo ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#CO_COMPARETO_INCORRECT_FLOATING">Co: compareTo()/compare() ??????????????? float ????????? double ??????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() ??? Integer.MIN_VALUE ?????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#CO_SELF_NO_OBJECT">Co: ????????? compareTo ?????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DE_MIGHT_DROP">DE: ??????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DE_MIGHT_IGNORE">DE: ?????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: ??????????????????????????????????????????????????????Entry ????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_RANDOM_USED_ONLY_ONCE">DMI: Random ?????????????????????????????????1????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI: ?????????????????????????????????????????? removeAll ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_EXIT">Dm: System.exit(...) ????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_RUN_FINALIZERS_ON_EXIT">Dm: ????????????????????? runFinalizersOnExit ????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: String ?????????????????? == ??? != ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ES_COMPARING_STRINGS_WITH_EQ">ES: String ????????????????????? == ??? != ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_ABSTRACT_SELF">Eq: ??????????????????????????? equals ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">Eq: equals ???????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: compareTo(...) ??????????????????????????? Object.equals() ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals ??????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_SELF_NO_OBJECT">Eq: ????????? equals ?????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FI_EMPTY">FI: ????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#FI_EXPLICIT_INVOCATION">FI: ????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FI_FINALIZER_NULLS_FIELDS">FI: ?????????????????????????????????????????? null ?????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#FI_FINALIZER_ONLY_NULLS_FIELDS">FI: ?????????????????????????????????????????? null ???????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FI_MISSING_SUPER_CALL">FI: ????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#FI_NULLIFY_SUPER">FI: ?????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FI_USELESS">FI: ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_USES_NEWLINE">FS: ?????????????????? \n ????????? %n ?????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#GC_UNCHECKED_TYPE_IN_GENERIC_CALL">GC: ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HE_EQUALS_NO_HASHCODE">HE: equals ??????????????????????????????????????? hashCode ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#HE_EQUALS_USE_HASHCODE">HE: equals ??????????????????????????? Object.hashCode() ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HE_HASHCODE_NO_EQUALS">HE: hashCode ??????????????????????????????????????? equals ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#HE_HASHCODE_USE_OBJECT_EQUALS">HE: hashCode ??????????????????????????? Object.equals() ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HE_INHERITS_EQUALS_USE_HASHCODE">HE: equals ??????????????????????????? Object.hashCode() ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION">IC: ???????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IMSE_DONT_CATCH_IMSE">IMSE: ???????????? IllegalMonitorStateException ???????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ISC_INSTANTIATE_STATIC_CLASS">ISC: static ??????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IT_NO_SUCH_ELEMENT">It: Iterator.next() ??? NoSuchElementException ????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION">J2EE: HttpSession ???????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: ???????????????????????????????????? final ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ME_ENUM_FIELD_SETTER">ME: public ??????????????????????????????????????????????????????????????????Public enum method unconditionally sets its field</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ME_MUTABLE_ENUM_FIELD">ME: ??????????????????????????? public ??????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_BOOLEAN_RETURN_NULL">NP: ???????????? Boolean ?????????????????????????????? null ??????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_CLONE_COULD_RETURN_NULL">NP: null ??????????????????????????? clone ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: equals ??????????????? null ???????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_TOSTRING_COULD_RETURN_NULL">NP: null ??????????????????????????? toString ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_CLASS_NAMING_CONVENTION">Nm: ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_CLASS_NOT_EXCEPTION">Nm: ?????????????????????????????????????????????????????????????????? Exception ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_CONFUSING">Nm: ????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_FIELD_NAMING_CONVENTION">Nm: ???????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Java ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER">Nm: Java ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_NAMING_CONVENTION">Nm: ??????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: ???????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING_INTENTIONAL">Nm: ????????????????????????????????????????????? (???????????????)</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE_INTENTIONAL">Nm: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ODR_OPEN_DATABASE_RESOURCE">ODR: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH">ODR: ?????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#OS_OPEN_STREAM">OS: ???????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#OS_OPEN_STREAM_EXCEPTION_PATH">OS: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS">PZ: ??????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON_BAD_PRACTICE">RC: ????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN">RC: Boolean ??????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RR_NOT_CHECKED">RR: InputStream.read() ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SR_NOT_CHECKED">RR: InputStream.skip() ?????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_NEGATING_RESULT_OF_COMPARETO">RV: compareTo()/compare() ???????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_IGNORED_BAD_PRACTICE">RV: ???????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SI_INSTANCE_BEFORE_FINALS_ASSIGNED">SI: ????????????????????????????????????????????????????????? static final ????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">SW: Swing ??????????????? AWT ???????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_BAD_FIELD">Se: ?????????????????????????????? transient ?????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_BAD_FIELD_INNER_CLASS">Se: ????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_BAD_FIELD_STORE">Se: ????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_COMPARATOR_SHOULD_BE_SERIALIZABLE">Se: Comparator ??? Serializable ????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_INNER_CLASS">Se: ?????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_NONFINAL_SERIALVERSIONID">Se: serialVersionUID ??? final ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_NONLONG_SERIALVERSIONID">Se: serialVersionUID ??? long ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_NONSTATIC_SERIALVERSIONID">Se: serialVersionUID ??? static ????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_NO_SUITABLE_CONSTRUCTOR">Se: Serializable ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION">Se: Externalizable ????????????????????????????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_READ_RESOLVE_MUST_RETURN_OBJECT">Se: readResolve ????????????????????????????????? Object ???????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_TRANSIENT_FIELD_NOT_RESTORED">Se: ????????????????????????????????????????????? transient ??????????????? </a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_NO_SERIALVERSIONID">SnVI: Serializable ??????????????? serialVersionUID ????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UI_INHERITANCE_UNSAFE_GETRESOURCE">UI: ????????????????????????????????? getResource ???????????????????????????????????????????????????</a></td><td>Bad practice</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_CAST">BC: ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_DOWNCAST">BC: ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArray ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BC_IMPOSSIBLE_INSTANCEOF">BC: ?????? false ????????? instanceof</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BIT_ADD_OF_SIGNED_BYTE">BIT: ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BIT_AND">BIT: ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BIT_AND_ZZ">BIT: ((...) & 0) == 0 ???????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BIT_IOR">BIT: ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BIT_IOR_OF_SIGNED_BYTE">BIT: ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BIT_SIGNED_CHECK_HIGH_BIT">BIT: ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: ???????????????????????? Adapter ????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: ??????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32????????? int ???-31??????31??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: return ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: ???????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DLS_OVERWRITTEN_INCREMENT">DLS: ???????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_ARGUMENTS_WRONG_ORDER">DMI: ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_BAD_MONTH">DMI: ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: ???????????????????????? double ????????????????????? BigDecimal</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext ??????????????? next ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES">DMI: ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_DOH">DMI: D'oh! ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: ????????? hashCode ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI: int ???????????? Double.longBitsToDouble() ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION">Dm: ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<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>
<tr bgcolor="#ffffff"><td><a href="#DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS">Dm: ???????????????????????????0??? ScheduledThreadPoolExecutor ?????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: EasyMock ????????????????????????????????????/????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_INVALID_MIN_MAX">Dm: Math.max ??? Math.min ??????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EC_ARRAY_AND_NONARRAY">EC: equals ??????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EC_BAD_ARRAY_COMPARE">EC: ????????? equals ??????????????????????????? == ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(...) ????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EC_NULL_ARG">EC: equals(null) ???????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals ????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_INTERFACES">EC: equals ???????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EC_UNRELATED_TYPES">EC: equals ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">EC: ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_ALWAYS_FALSE">Eq: equals ????????????????????? false ?????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_ALWAYS_TRUE">Eq: equals ????????????????????? true ?????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_COMPARING_CLASS_NAMES">Eq: equals ???????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_DONT_DEFINE_EQUALS_FOR_ENUM">Eq: ????????????????????? equals ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_OTHER_NO_OBJECT">Eq: equals(Object) ??????????????????????????????????????????????????? equals ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_OTHER_USE_OBJECT">Eq: Object.equals(Object) ??????????????????????????????????????? equals ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC">Eq: equals ??????????????????????????????????????? equals ?????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_SELF_USE_OBJECT">Eq: ????????? equals ??????????????????????????????Object.equals(Object) ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER">FE: NaN ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_BAD_ARGUMENT">FS: ????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#VA_FORMAT_STRING_BAD_CONVERSION">FS: ??????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED">FS: printf ????????????????????????????????????????????????????????? MessageFormat ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED">FS: ????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_ILLEGAL">FS: ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#VA_FORMAT_STRING_MISSING_ARGUMENT">FS: ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT">FS: ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#GC_UNRELATED_TYPES">GC: ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS">HE: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#HE_USE_OF_UNHASHABLE_CLASS">HE: ?????????????????????????????? hashCode ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ICAST_INT_2_LONG_AS_INSTANT">ICAST: int ?????? long ??????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL">ICAST: ???????????? double ????????????????????? Math.ceil() ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND">ICAST: ???????????? float ????????????????????? Math.round() ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD">IJU: run ?????????????????? JUnit ????????????????????? JUnit ??????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IJU_BAD_SUITE_METHOD">IJU: TestCase ??? suite ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IJU_NO_TESTS">IJU: TestCase ????????????????????? </a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IJU_SETUP_NO_SUPER">IJU: TestCase ??? super.setup() ????????????????????? setUp ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IJU_SUITE_NOT_STATIC">IJU: TestCase ??? ??? static ??? suite ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IJU_TEARDOWN_NO_SUPER">IJU: TestCase ??? super.tearDown() ????????????????????? tearDown ????????????????????????????????? </a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IL_CONTAINER_ADDED_TO_ITSELF">IL: ??????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IL_INFINITE_LOOP">IL: ???????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IL_INFINITE_RECURSIVE_LOOP">IL: ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IM_MULTIPLYING_RESULT_OF_IREM">IM: ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int ?????? long ??????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: ?????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: ????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: ???????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MF_CLASS_MASKS_FIELD">MF: ?????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MF_METHOD_MASKS_FIELD">MF: ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_ALWAYS_NULL">NP: null ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_ALWAYS_NULL_EXCEPTION">NP: null ???????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_ARGUMENT_MIGHT_BE_NULL">NP: null ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_CLOSING_NULL">NP: ?????? null ??????????????????????????? close ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_GUARANTEED_DEREF">NP: null ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: null ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP: ??? null ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_NONNULL_PARAM_VIOLATION">NP: ?????????????????????????????? null ??????????????????????????? null ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NONNULL_RETURN_VIOLATION">NP: null ?????????????????????????????????????????? @Nonnull ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_NULL_INSTANCEOF">NP: null ????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH">NP: null ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF">NP: ?????????????????????????????? null ??????????????????????????? null ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">NP: ?????????????????????????????? null ??????????????????????????? null ??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: ??? null ?????????????????? null ??????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_OPTIONAL_RETURN_NULL">NP: Optional ???????????????????????????????????????????????? null ?????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_STORE_INTO_NONNULL_FIELD">NP: @Nonnull ????????????????????????????????????????????? null ?????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_UNWRITTEN_FIELD">NP: ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_BAD_EQUAL">Nm: ???????????? equal(Object) ???????????????????????????equals(Object) ??????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_LCASE_HASHCODE">Nm: ???????????? hashcode() ???????????????????????????hashCode() ??????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_LCASE_TOSTRING">Nm: ???????????? tostring() ???????????????????????????toString() ??????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: ?????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NM_VERY_CONFUSING">Nm: ?????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NM_WRONG_PACKAGE">Nm: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: ???????????? boolean ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_INDEX">RANGE: ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RANGE_ARRAY_LENGTH">RANGE: ???????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RANGE_ARRAY_OFFSET">RANGE: ?????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RANGE_STRING_INDEX">RANGE: ???????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RC_REF_COMPARISON">RC: ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: ?????????????????????????????? null ????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: ???????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION">RE: ?????????????????????????????????????????? File.separator</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RE_POSSIBLE_UNINTENDED_PATTERN">RE: ?????????????????????????????????????????? "." ????????? "|"</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_01_TO_INT">RV: 0??????1????????????????????????0??????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: ????????????32???????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: ????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE">RV: compareTo ????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_EXCEPTION_NOT_THROWN">RV: ??????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED">RV: ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RpC_REPEATED_CONDITIONAL_TEST">RpC: ??????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SA_FIELD_SELF_ASSIGNMENT">SA: ??????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SA_FIELD_SELF_COMPARISON">SA: ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SA_FIELD_SELF_COMPUTATION">SA: ?????????????????????????????????????????? (??????????????? x & x)</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD">SA: ???????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_SELF_COMPARISON">SA: ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_SELF_COMPUTATION">SA: ????????????????????????????????? (???????????????x & x)</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH">SF: switch ????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW">SF: ??????????????? switch ????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SIC_THREADLOCAL_DEADLY_EMBRACE">SIC: ??? static ???????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SIO_SUPERFLUOUS_INSTANCEOF">SIO: instanceof ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SQL_BAD_PREPARED_STATEMENT_ACCESS">SQL: ?????????????????????0??? PreparedStatement ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SQL_BAD_RESULTSET_ACCESS">SQL: ?????????????????????0??? ResultSet ???????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#STI_INTERRUPTED_ON_CURRENTTHREAD">STI: interrupted ????????????????????????????????????????????? currentThread ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#STI_INTERRUPTED_ON_UNKNOWNTHREAD">STI: ????????????????????????????????? static Thread.interrupted() ????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_METHOD_MUST_BE_PRIVATE">Se: ??????????????????????????? private ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_READ_RESOLVE_IS_STATIC">Se: readResolve ??????????????? static ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED">TQ: ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">TQ: ????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED">TQ: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ: ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS">UMAC: ??????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UR_UNINIT_READ">UR: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR">UR: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">USELESS_STRING: ???????????????????????? toString ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_INVOKING_TOSTRING_ON_ARRAY">USELESS_STRING: ????????? toString ????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY">USELESS_STRING: ????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UWF_NULL_FIELD">UwF: null ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UWF_UNWRITTEN_FIELD">UwF: ??????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG">VA: ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">LG: ????????????????????? OpenJDK ????????????????????????????????????????????????</a></td><td>Experimental</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#OBL_UNSATISFIED_OBLIGATION">OBL: ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Experimental</td></tr>
<tr bgcolor="#ffffff"><td><a href="#OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">OBL: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Experimental</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_CONVERT_CASE">Dm: ?????????????????????????????? Locale ???????????????????????????????????????</a></td><td>Internationalization</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_DEFAULT_ENCODING">Dm: ???????????????????????????????????????????????????</a></td><td>Internationalization</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">DP: doPrivileged ?????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DP_DO_INSIDE_DO_PRIVILEGED">DP: doPrivileged ????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EI_EXPOSE_REP">EI: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_REP2">EI2: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FI_PUBLIC_SHOULD_BE_PROTECTED">FI: ???????????????????????? public ???????????? protected ????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EI_EXPOSE_STATIC_REP2">MS: static ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_CANNOT_BE_FINAL">MS: final ???????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MS_EXPOSE_REP">MS: ?????????????????????????????????????????????????????????????????????????????? public static ????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_FINAL_PKGPROTECT">MS: final ?????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_ARRAY">MS: ??????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_COLLECTION">MS: ??????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MS_MUTABLE_COLLECTION_PKGPROTECT">MS: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_MUTABLE_HASHTABLE">MS: ?????? Hashtable ??????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MS_OOI_PKGPROTECT">MS: ??????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_PKGPROTECT">MS: ???????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MS_SHOULD_BE_FINAL">MS: final ???????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: final ???????????????????????????????????????????????????????????????</a></td><td>Malicious code vulnerability</td></tr>
<tr bgcolor="#ffffff"><td><a href="#AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION">AT: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DC_DOUBLECHECK">DC: ???????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DC_PARTIALLY_CONSTRUCTED">DC: ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE">DL: ?????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition ??? wait ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_USELESS_THREAD">Dm: ???????????????????????? run ??????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ESync_EMPTY_SYNC">ESync: ?????? synchronized ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IS2_INCONSISTENT_SYNC">IS: ???????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IS_FIELD_NOT_GUARDED">IS: ????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#JLM_JSR166_LOCK_MONITORENTER">JLM: Lock ????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM: java.util.concurrent ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">JLM: util.concurrent ????????????????????????????????? wait ?????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#LI_LAZY_INIT_STATIC">LI: static ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#LI_LAZY_INIT_UPDATE_STATIC">LI: ??????????????? static ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD">ML: ????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ML_SYNC_ON_UPDATED_FIELD">ML: ??????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MSF_MUTABLE_SERVLET_FIELD">MSF: ???????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MWN_MISMATCHED_NOTIFY">MWN: ???????????? notify ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MWN_MISMATCHED_WAIT">MWN: ???????????? wait ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NN_NAKED_NOTIFY">NN: ?????? notify ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_SYNC_AND_NULL_CHECK_FIELD">NP: ??????????????????????????????????????? null ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NO_NOTIFY_NOT_NOTIFYALL">No: notifyAll ???????????????????????? notify ?????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RS_READOBJECT_SYNC">RS: readObject ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent ?????????????????????????????? putIfAbsent ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RU_INVOKE_RUN">Ru: ??????????????? run ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SC_START_IN_CTOR">SC: Thread.start() ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SP_SPIN_ON_FIELD">SP: ?????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar ???????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE">STCAL: static DateFormat ???????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#STCAL_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar ???????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">STCAL: static DateFormat</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SWL_SLEEP_WITH_LOCK_HELD">SWL: ???????????????????????? Thread.sleep() ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#TLW_TWO_LOCK_WAIT">TLW: 2???????????????????????????????????? wait ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UG_SYNC_SET_UNSYNC_GET">UG: ???????????????????????? get ???????????????????????????????????? set ????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UL_UNRELEASED_LOCK">UL: ???????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: ?????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UW_UNCOND_WAIT">UW: wait ????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VO_VOLATILE_INCREMENT">VO: volatile ????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#VO_VOLATILE_REFERENCE_TO_ARRAY">VO: ???????????? volatile ??????????????????????????? volatile ?????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL">WL: ????????????????????????????????? getClass ????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#WS_WRITEOBJECT_SYNC">WS: writeObject ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await() ???????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#WA_NOT_IN_LOOP">Wa: wait ???????????????????????????????????????</a></td><td>Multithreaded correctness</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED">Bx: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: ????????????????????????3???????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ???????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: ????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ???????????????/?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_FP_NUMBER_CTOR">Bx: ?????????????????????????????? Number ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_NUMBER_CTOR">Bx: ??????????????? Number ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_BLOCKING_METHODS_ON_URL">Dm: URL ??? equals ??????????????? hashCode ?????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_COLLECTION_OF_URLS">Dm: URL ??? Map ??? Set ???????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_BOOLEAN_CTOR">Dm: ??????????????? Boolean ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_GC">Dm: ??????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_NEW_FOR_GETCLASS">Dm: ??????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_NEXTINT_VIA_NEXTDOUBLE">Dm: ?????????????????????????????????????????? nextDouble ???????????? ???????????? nextInt ???????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_STRING_CTOR">Dm: ??????????????? new String(String) ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DM_STRING_TOSTRING">Dm: String ??? toString ????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DM_STRING_VOID_CTOR">Dm: ??????????????? new String() ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HSC_HUGE_SHARED_STRING_CONSTANT">HSC: ??????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ?????????????????? + ?????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC">SIC: static ???????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: ???????????? static ?????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static ?????????????????????????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SS_SHOULD_BE_STATIC">SS: ????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UM_UNNECESSARY_MATH">UM: ???????????? Math ???????????? static ????????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UPM_UNCALLED_PRIVATE_METHOD">UPM: private ?????????????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_FIELD">UrF: ????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_FIELD">UuF: ???????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#ffffff"><td><a href="#WMI_WRONG_MAP_ITERATOR">WMI: entrySet ?????????????????????????????????????????? keySet ????????????????????????????????????</a></td><td>Performance</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_CONSTANT_DB_PASSWORD">Dm: ??????????????????????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_EMPTY_DB_PASSWORD">Dm: ???????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#HRS_REQUEST_PARAMETER_TO_COOKIE">HRS: ????????????????????????????????????????????? HTTP cookie</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#HRS_REQUEST_PARAMETER_TO_HTTP_HEADER">HRS: HTTP ????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#PT_ABSOLUTE_PATH_TRAVERSAL">PT: ???????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#PT_RELATIVE_PATH_TRAVERSAL">PT: ???????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQL: SQL ??? Statement ???  execute ????????? addBatch ?????????????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">SQL: PreparedStatement ??????????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: ????????????????????????????????????????????????????????????????????? JSP</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#XSS_REQUEST_PARAMETER_TO_SEND_ERROR">XSS: ????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER">XSS: ???????????????????????????????????????????????????????????????????????????????????????</a></td><td>Security</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: ??????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: ??????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BC_UNCONFIRMED_CAST">BC: ???????????????/????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: ????????????????????????????????????????????????/????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#BC_VACUOUS_INSTANCEOF">BC: ?????? true ????????? instanceof</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSHIFT: ??????????????????????????? short/byte ???????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#CI_CONFUSED_INHERITANCE">CI: final ??????????????? protected ????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DB_DUPLICATE_BRANCHES">DB: 2????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DB_DUPLICATE_SWITCH_CLAUSES">DB: switch ??????2?????? case ????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_LOCAL_STORE">DLS: ???????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_LOCAL_STORE_IN_RETURN">DLS: return ???????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DLS_DEAD_LOCAL_STORE_OF_NULL">DLS: ????????????????????????????????? null ??????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD">DLS: ???????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_HARDCODED_ABSOLUTE_FILENAME">DMI: ???????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_NONSERIALIZABLE_OBJECT_WRITTEN">DMI: ObjectOutput ?????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#DMI_USELESS_SUBSTRING">DMI: substring(0) ????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">Dm: Thread ????????????????????? Runnable ??????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#EQ_DOESNT_OVERRIDE_EQUALS">Eq: ???????????????????????? equals ????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#EQ_UNUSUAL">Eq: ????????? equals ???????????? </a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#FE_FLOATING_POINT_EQUALITY">FE: ????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Boolean ????????????????????? ???b ????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IC_INIT_CIRCULARITY">IC: ??????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#ICAST_IDIV_CAST_TO_DOUBLE">ICAST: ??????????????????????????? double ????????? float ???????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ICAST_INTEGER_MULTIPLY_CAST_TO_LONG">ICAST: ???????????????????????? long ???????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#IM_AVERAGE_COMPUTATION_COULD_OVERFLOW">IM: ???????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#IM_BAD_CHECK_FOR_ODD">IM: ??????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#INT_BAD_REM_BY_1">INT: 1??????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#INT_VACUOUS_BIT_OPERATION">INT: ????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#INT_VACUOUS_COMPARISON">INT: ??????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: Servlet ????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: Struts Action ???????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_DEREFERENCE_OF_READLINE_VALUE">NP: readLine ???????????????????????? null ???????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: readLine ???????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_LOAD_OF_KNOWN_NULL_VALUE">NP: null ????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP: ????????????????????????????????? nullness ??????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: ??????????????????????????? nullness ??????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP: null ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP: null ????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">NP: ??????????????????  ??? null ?????????????????????????????? null ?????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: ??????????????????????????? public ????????? protected ??????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: ?????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#NS_NON_SHORT_CIRCUIT">NS: ????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: null ?????????????????????0???????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#QF_QUESTIONABLE_FOR_LOOP">QF: ?????????????????????????????????????????????????????? for ?????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE">RCN: ??? null ?????? null ????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RCN: 2?????? null ?????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RCN: null ??????????????????????????????????????????????????? null ????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN: null ???????????????????????????????????? null ????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#REC_CATCH_EXCEPTION">REC: ?????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RI_REDUNDANT_INTERFACES">RI: ?????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_CHECK_FOR_POSITIVE_INDEXOF">RV: String.indexOf ?????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_DONT_JUST_NULL_CHECK_READLINE">RV: readLine ???????????????????????? null ????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_REM_OF_HASHCODE">RV: ??????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_REM_OF_RANDOM_INT">RV: ????????????32?????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#RV_RETURN_VALUE_IGNORED_INFERRED">RV: ???????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV: ????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SA_FIELD_DOUBLE_ASSIGNMENT">SA: ??????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SA_LOCAL_DOUBLE_ASSIGNMENT">SA: ?????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SA_LOCAL_SELF_ASSIGNMENT">SA: ?????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SF_SWITCH_FALLTHROUGH">SF: 1?????? case ????????? case ????????????????????? switch ??????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SF_SWITCH_NO_DEFAULT">SF: default ????????? switch ??????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: ???????????????????????????????????? static ?????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: ???????????????????????????????????? private ??? readResolve ????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS">Se: Serializable ????????????????????? transient ???????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: ???????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: ????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_CONDITION">UC: ????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UC_USELESS_CONDITION_TYPE">UC: ?????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_OBJECT">UC: ???????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UC_USELESS_OBJECT_STACK">UC: ??????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UC_USELESS_VOID_METHOD">UC: ????????????????????????????????? void ????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UCF_USELESS_CONTROL_FLOW">UCF: ?????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: ????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: ????????????????????? public ????????? protected ???????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: ???????????? public ????????? protected ???????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">UwF: ????????????????????????????????????????????????????????????????????? null ????????????????????? null ????????????????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#eeeeee"><td><a href="#UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF: ??????????????????????????? public ????????? protected ???????????????</a></td><td>Dodgy code</td></tr>
<tr bgcolor="#ffffff"><td><a href="#XFB_XML_FACTORY_BYPASS">XFB: XML?????????????????????????????????????????????????????????????????????????????????????????????</a></td><td>Dodgy code</td></tr>
</table>
<h2>Descriptions</h2>
<h3><a name="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">BC: equals ???????????????????????????????????????????????????????????? (BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS)</a></h3>


<p>
<code>equals(Object o)</code> ??????????????????<code>o</code> ????????????????????????????????????????????????????????????????????????
<code>o</code> ??? <code>this</code> ????????????????????????????????? false ????????????????????????
</p>

    
<h3><a name="BIT_SIGNED_CHECK">BIT: ????????????????????????????????????????????? (BIT_SIGNED_CHECK)</a></h3>


<p>
????????????????????????<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> ??????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>SWT.SELECTED</code> ???????????????) ?????????????????????????????????????????????
<code>SWT.SELECTED</code> ????????????????????????????????????????????????????????????
<code>SWT.SELECTED</code> ?????????????????????????????????'&gt; 0' ??????????????? '!= 0' ?????????????????????????????????????????????????????????????????????
</p>
<p>
Boris Bokowski
</p>

    
<h3><a name="CN_IDIOM">CN: Cloneable ??????????????????????????? clone ??????????????????????????????????????????????????????????????? (CN_IDIOM)</a></h3>


<p>
?????????????????????<code>Cloneable</code> ??????????????????????????????<code>clone</code> ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="CN_IDIOM_NO_SUPER_CALL">CN: clone ??????????????? super.clone() ??????????????????????????? (CN_IDIOM_NO_SUPER_CALL)</a></h3>


<p>
????????? final ???????????????<code>super.clone()</code> ????????????????????? <code>clone</code> ???????????????????????????????????????
????????? <i>A</i> ?????????????????? <i>B</i> ?????????????????????????????????????????? <i>B</i> ??? <code>super.clone()</code> ????????????????????????????????? <i>B</i> ??? <code>clone</code> ????????????????????? <i>A</i> ?????????????????????????????????????????????????????????
????????? <code>clone</code> ?????????????????????????????????????????????
</p>
<p>
???????????? <code>clone</code> ??????????????? <code>super.clone()</code> ????????????????????? <code>Object.clone()</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">CN: Cloneable ???????????????????????????????????? clone ????????????????????????????????? (CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE)</a></h3>


<p>
?????????????????????<code>Cloneable</code> ?????????????????????????????? <code>clone</code> ???????????????????????????????????????
????????? OK (???????????????????????????????????????????????????????????????????????????????????????????????????) ???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="CNT_ROUGH_CONSTANT_VALUE">CNT: ?????????????????????????????????????????? (CNT_ROUGH_CONSTANT_VALUE)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>


<h3><a name="CO_ABSTRACT_SELF">Co: ??????????????????????????? compareTo ????????????????????????????????? (CO_ABSTRACT_SELF)</a></h3>


<p>
?????????????????????????????? <code>compareTo</code> ???????????????????????????????????????
<code>Comparable</code> ???????????????????????? <code>compareTo</code> ???????????????????????????????????????????????? <code>compareTo</code> ??????????????????????????????????????????<code>java.lang.Object</code> ?????????????????????????????????
</p>

    
<h3><a name="CO_COMPARETO_INCORRECT_FLOATING">Co: compareTo()/compare() ??????????????? float ????????? double ?????????????????? (CO_COMPARETO_INCORRECT_FLOATING)</a></h3>


<p>
??????????????????????????????????????????????????????????????? double ????????? float ??????????????????????????? ??? val1 &gt; val2 ? 1 : val1 &lt; val2 ? -1 : 0???
?????????????????????  ???????????????????????????????????????????????????????????????????????????????????????????????? -0.0 ??? NaN ??????????????????????????????????????? ?????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????? Double.compare ????????? Float.compare ???????????????????????????????????????????????????
</p>

    
<h3><a name="CO_COMPARETO_RESULTS_MIN_VALUE">Co: compareTo()/compare() ??? Integer.MIN_VALUE ????????? (CO_COMPARETO_RESULTS_MIN_VALUE)</a></h3>


<p>
??????????????????????????????????????? <code>compareTo</code> ????????? <code>compare</code> ??????????????? Integer.MIN_VALUE ???????????????????????????????????????????????????????????????
<code>compareTo</code> ???????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????<code>compareTo</code> ??????????????????????????????????????????????????????????????????
?????????????????? Integer.MIN_VALUE ?????????????????????????????? Integer.MIN_VALUE ?????????-1???????????????????????????
</p>

    
<h3><a name="CO_SELF_NO_OBJECT">Co: ????????? compareTo ????????????????????? (CO_SELF_NO_OBJECT)</a></h3>


<p>
?????????????????????????????? <code>compareTo</code> ???????????????????????????????????????
<code>Comparable</code> ???????????????????????? <code>compareTo</code> ???????????????????????????????????????????????? <code>compareTo</code> ??????????????????????????????????????????<code>java.lang.Object</code> ?????????????????????????????????
</p>

    
<h3><a name="DE_MIGHT_DROP">DE: ?????????????????????????????????????????????????????? (DE_MIGHT_DROP)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DE_MIGHT_IGNORE">DE: ????????????????????????????????????????????????????????? (DE_MIGHT_IGNORE)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">DMI: ??????????????????????????????????????????????????????Entry ???????????????????????????????????????????????????????????????????????? (DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS)</a></h3>


<p>
entrySet ??????????????????????????? Entry ?????????????????????????????????????????????????????????????????? Map ?????????????????????????????????????????????????????????
Java 1.6 ???????????????IdentityHashMap ??? EnumMap ?????????????????????????????????
??????????????? Map ??????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????addAll ?????????????????????????????? entrySet ???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_RANDOM_USED_ONLY_ONCE">DMI: Random ?????????????????????????????????1???????????????????????? (DMI_RANDOM_USED_ONLY_ONCE)</a></h3>


<p>
?????????????????????<code>java.util.Random</code> ?????????????????????????????????1?????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????
???????????????<code>Random</code> ?????????????????????1???????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????? <code>Random</code> ????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????????????????????????????????????????????????????????????????????????????????????? <code>Random</code> ??????????????????????????????????????????????????? (?????????????????????????????????????????????)???
?????????????????? <code>java.security.SecureRandom</code> ?????????????????????????????????????????? (??????????????????????????????????????????????????? <code>SecureRandom</code> ????????????????????????????????????????????????????????????)??? 
</p>

    
<h3><a name="DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">DMI: ?????????????????????????????????????????? removeAll ?????????????????????????????? (DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION)</a></h3>


<p>
?????????????????? <code>c</code> ???????????????????????????????????????????????????<code>c.removeAll(c)</code> ???????????? <code>c.clear</code> ??????????????????????????????
?????????????????????????????????????????? <code>c.removeAll(c)</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<code>ConcurrentModificationException</code> ??????????????????????????????????????????
</p>

    
<h3><a name="DM_EXIT">Dm: System.exit(...) ???????????????????????????????????? (DM_EXIT)</a></h3>


<p>
<code>System.exit(...)</code> ???????????????????????????Java ????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????
<code>System.exit(...)</code> ?????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? RuntimeException ??????????????????????????????????????????????????????
</p>

    
<h3><a name="DM_RUN_FINALIZERS_ON_EXIT">Dm: ????????????????????? runFinalizersOnExit ???????????????????????????????????? (DM_RUN_FINALIZERS_ON_EXIT)</a></h3>


<p>
?????????????????????????????????????????? <code>System.runFinalizersOnExit</code> ??? <code>Runtime.runFinalizersOnExit</code> ???????????????????????????????????????
Java ????????????????????????????????????????????????1???????????? -- Joshua Bloch
</p>

    
<h3><a name="ES_COMPARING_PARAMETER_STRING_WITH_EQ">ES: String ?????????????????? == ??? != ????????????????????????????????? (ES_COMPARING_PARAMETER_STRING_WITH_EQ)</a></h3>


<p>
???????????????????????????????????????????????? == ??? != ??????????????? <code>java.lang.String</code> ??????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? <code>equals(Object)</code> ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ES_COMPARING_STRINGS_WITH_EQ">ES: String ????????????????????? == ??? != ????????????????????????????????? (ES_COMPARING_STRINGS_WITH_EQ)</a></h3>


<p>
???????????????????????????????????????????????? == ??? != ??????????????? <code>java.lang.String</code> ?????????????????????????????????????????????
?????????????????????????????????????????????????????????<code>String.intern()</code> ????????????????????????????????????????????????????????????????????????2??????????????? String ??????????????????????????????????????????????????????????????????
?????????????????? <code>equals(Object)</code> ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_ABSTRACT_SELF">Eq: ??????????????????????????? equals ????????????????????????????????? (EQ_ABSTRACT_SELF)</a></h3>


<p>
?????????????????????????????? <code>equals</code> ???????????????????????????????????????
<code>java.lang.Object</code> ??? <code>equals</code> ??????????????????????????????????????????????????????????????? <code>equals</code> ??????????????????????????????????????????<code>java.lang.Object</code> ?????????????????????????????????
</p>

    
<h3><a name="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">Eq: equals ??????????????????????????????????????????????????????????????????????????? (EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)</a></h3>


<p>
?????? <code>equals</code> ???????????????????????????????????????????????? (?????????????????????????????????????????????<code>equals</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????) ?????????????????????????????????
???????????????<code>Foo</code> ???????????? <code>equals</code> ???????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public boolean equals(Object o) {
    if (o instanceof Foo)
        return name.equals(((Foo)o).name);
    else if (o instanceof String)
        return name.equals(o);
    else return false;
}
</pre></blockquote>
<p>
??????????????????????????????????????? <code>equals</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_COMPARETO_USE_OBJECT_EQUALS">Eq: compareTo(...) ??????????????????????????? Object.equals() ?????????????????????????????? (EQ_COMPARETO_USE_OBJECT_EQUALS)</a></h3>


<p>
?????????????????????<code>compareTo(...)</code> ??????????????????????????????????????????<code>equals</code> ??????????????? <code>java.lang.Object</code> ??????????????????????????????
????????????<code>equals</code> ??????????????? true ???????????????????????????<code>compareTo</code> ???????????????0????????????????????????
?????????????????????????????????????????????????????????????????? PriorityQueue ???????????????????????????????????????
J2SE 5.0?????????<code>PriorityQueue.remove()</code> ??? <code>compareTo</code> ????????????????????????????????????Java SE 6?????????<code>equals</code> ?????????????????????????????????
</p>
<p>
Comparable ???????????????????????? compareTo ??????????????? JavaDoc ??????????????????????????????
</p>
<blockquote><p>
????????????????????????????????????????????????<code>(x.compareTo(y)==0) == (x.equals(y))</code> ?????????????????????????????????????????????
????????????<code>Comparable</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????:?????????????????? <code>equals</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????
</blockquote></p>

    
<h3><a name="EQ_GETCLASS_AND_CLASS_CONSTANT">Eq: equals ?????????????????????????????????????????????????????? (EQ_GETCLASS_AND_CLASS_CONSTANT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????? <code>equlas</code> ??????????????????????????????
<code>equals</code> ???????????????????????????????????????????????????????????????????????????????????? (???????????????<code>Foo</code> ???????????? <code>Foo.class == o.getClass()</code> ???????????????????????????????????????)???
<code>this.getClass() == o.getClass()</code> ??????????????????????????????
</p>

    
<h3><a name="EQ_SELF_NO_OBJECT">Eq: ????????? equals ????????????????????? (EQ_SELF_NO_OBJECT)</a></h3>


<p>
?????????????????????????????? <code>equals</code> ???????????????????????????????????????
<code>java.lang.Object</code> ??? <code>equals</code> ??????????????????????????????????????????????????????????????? <code>equals</code> ??????????????????????????????????????????<code>java.lang.Object</code> ?????????????????????????????????
</p>

    
<h3><a name="FI_EMPTY">FI: ???????????????????????????????????????????????? (FI_EMPTY)</a></h3>


<p>
?????? <code>finalize</code> ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="FI_EXPLICIT_INVOCATION">FI: ???????????????????????????????????????????????? (FI_EXPLICIT_INVOCATION)</a></h3>


<p>
????????????????????????????????????????????????????????? <code>finalize</code> ?????????????????????????????????????????????
???????????????????????? Java ???????????????????????????1?????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????Java ??????????????????????????????????????????????????? <code>finalize</code> ????????????????????????????????????
??????????????????????????????????????????????????????
??????????????????????????? <i>X</i> ??? <code>finalize</code> ???????????????????????? <i>X</i> ?????????????????????????????????????????????????????? <code>finalize</code> ???????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="FI_FINALIZER_NULLS_FIELDS">FI: ?????????????????????????????????????????? null ????????? (FI_FINALIZER_NULLS_FIELDS)</a></h3>


<p>
??????????????????????????????????????????????????? null ?????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="FI_FINALIZER_ONLY_NULLS_FIELDS">FI: ?????????????????????????????????????????? null ??????????????? (FI_FINALIZER_ONLY_NULLS_FIELDS)</a></h3>


<p>
??????????????????????????????????????????????????? null ?????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>finalize</code> ??????????????????????????????????????????
</p>

    
<h3><a name="FI_MISSING_SUPER_CALL">FI: ???????????????????????????????????????????????????????????????????????????????????????????????? (FI_MISSING_SUPER_CALL)</a></h3>


<p>
?????? <code>finalize</code> ?????????????????????????????????????????? <code>finalize</code> ?????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>super.finalize()</code> ?????????????????????????????????????????????
</p>

    
<h3><a name="FI_NULLIFY_SUPER">FI: ????????????????????????????????????????????????????????????????????????????????????????????? (FI_NULLIFY_SUPER)</a></h3>


<p>
???????????? <code>finalize</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="FI_USELESS">FI: ??????????????????????????????????????????????????????????????????????????????????????????????????? (FI_USELESS)</a></h3>


<p>
?????? <code>finalize</code> ?????????????????????????????????????????? <code>finalize</code> ???????????????????????????????????????????????????
??????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_USES_NEWLINE">FS: ?????????????????? \n ????????? %n ????????????????????? (VA_FORMAT_STRING_USES_NEWLINE)</a></h3>


<p>
??????????????????????????????????????? (\n) ???????????????????????????
????????????????????????????????? %n ???????????????????????????????????????????????????%n ??????????????????????????????????????????????????????????????????????????????
</p>

  
<h3><a name="GC_UNCHECKED_TYPE_IN_GENERIC_CALL">GC: ????????????????????????????????????????????? (GC_UNCHECKED_TYPE_IN_GENERIC_CALL)</a></h3>


<p>
??????????????????????????????????????????????????????????????? Object ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? Java ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HE_EQUALS_NO_HASHCODE">HE: equals ??????????????????????????????????????? hashCode ????????????????????????????????????????????? (HE_EQUALS_NO_HASHCODE)</a></h3>


<p>
?????????????????????<code>equals(Object)</code> ?????????????????????????????????????????????????????????<code>hashCode</code> ?????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HE_EQUALS_USE_HASHCODE">HE: equals ??????????????????????????? Object.hashCode() ?????????????????????????????? (HE_EQUALS_USE_HASHCODE)</a></h3>


<p>
?????????????????????<code>equals(Object)</code> ?????????????????????????????????????????????<code>hashCode</code> ??????????????? <code>java.lang.Object</code> ??????????????????????????? (?????????????????????????????? (Java ???????????????????????????????????????????????????????????????????????????) ???????????????)???
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????? HashMap/HashTable ???????????????????????????????????????????????????????????????????????? <code>hashCode</code> ?????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public int hashCode() {
    assert false : "hashCode????????????????????????????????????????????????????????????";
    return 42; // ???????????? 
}
</pre></blockquote>

    
<h3><a name="HE_HASHCODE_NO_EQUALS">HE: hashCode ??????????????????????????????????????? equals ????????????????????????????????????????????? (HE_HASHCODE_NO_EQUALS)</a></h3>


<p>
?????????????????????<code>hashCode</code> ??????????????????????????????????????????<code>equals</code> ??????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HE_HASHCODE_USE_OBJECT_EQUALS">HE: hashCode ??????????????????????????? Object.equals() ?????????????????????????????? (HE_HASHCODE_USE_OBJECT_EQUALS)</a></h3>


<p>
?????????????????????<code>hashCode</code> ?????????????????????????????????????????? <code>equals</code> ??????????????? <code>java.lang.Object</code> ??????????????????????????? (???????????????????????????????????????????????????????????????)???
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ????????????????????????????????????????????????????????????????????????
???????????????<code>hashCode</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????
(<code>hashCode</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)???
</p>
<p>
??????????????????????????????????????? HashMap/HashTable ???????????????????????????????????????????????????????????????????????? <code>hashCode</code> ?????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public int hashCode() {
    assert false : "hashCode????????????????????????????????????????????????????????????";
    return 42; // ???????????? 
}
</pre></blockquote>

    
<h3><a name="HE_INHERITS_EQUALS_USE_HASHCODE">HE: equals ??????????????????????????? Object.hashCode() ?????????????????????????????? (HE_INHERITS_EQUALS_USE_HASHCODE)</a></h3>


<p>
?????????????????????????????????????????????????????? <code>equals(Object)</code> ??????????????????????????????<code>java.lang.Object</code> ?????? <code>hashCode</code> ???????????????????????????????????? (?????????????????????????????? (Java ???????????????????????????????????????????????????????????????????????????) ???????????????)???
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????????????????????????????
</p>
<p>
<code>hashCode</code> ?????????????????????????????????????????????????????????????????? HashMap/Hashtable ??????????????????????????????????????????????????????????????? <code>UnsupportedOperationException</code> ?????????????????? <code>hashCode()</code> ??????????????????????????????????????????
</p>

    
<h3><a name="IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION">IC: ??????????????????????????????????????????????????????????????????????????? (IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????<code>foo</code> ??? null ?????????
</p>
<blockquote><pre>
public class CircularClassInitialization {
    static class InnerClassSingleton extends CircularClassInitialization {
        static InnerClassSingleton singleton = new InnerClassSingleton();
    }
    
    static CircularClassInitialization foo = InnerClassSingleton.singleton;
}
</pre></blockquote>

    
<h3><a name="IMSE_DONT_CATCH_IMSE">IMSE: ???????????? IllegalMonitorStateException ??????????????? (IMSE_DONT_CATCH_IMSE)</a></h3>


<p>
<code>IllegalMonitorStateException</code> ???????????????????????????????????? (?????????????????????????????????????????????????????? <code>wait</code> ????????????????????? <code>notify</code> ???????????????????????????) ??????????????????????????????????????????
</p>

    
<h3><a name="ISC_INSTANTIATE_STATIC_CLASS">ISC: static ?????????????????????????????????????????????????????????????????????????????? (ISC_INSTANTIATE_STATIC_CLASS)</a></h3>


<p>
?????????????????????static ??????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? static ????????????????????????????????????????????????
</p>

    
<h3><a name="IT_NO_SUCH_ELEMENT">It: Iterator.next() ??? NoSuchElementException ???????????????????????? (IT_NO_SUCH_ELEMENT)</a></h3>


<p>
?????????????????????<code>java.util.Iterator</code> ???????????????????????????
?????????????????????<code>next</code> ??????????????? <code>java.util.NoSuchElementException</code> ??????????????????????????????
<code>next</code> ??????????????????????????????????????????????????????????????????????????? <code>NoSuchElementException</code> ??????????????????????????????????????????????????????
</p>

    
<h3><a name="J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION">J2EE: HttpSession ??????????????????????????????????????????????????? (J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION)</a></h3>


<p>
?????????????????????HttpSession ?????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">JCIP: ???????????????????????????????????? final ???????????? (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS)</a></h3>


<p>
???????????????net.jcip.annotations.Immutable ????????? javax.annotation.concurrent.Immutable ???????????????????????????????????????
????????????????????????????????????????????????????????????????????? final ???????????????????????????????????????
</p>

    
<h3><a name="ME_ENUM_FIELD_SETTER">ME: public ??????????????????????????????????????????????????????????????????Public enum method unconditionally sets its field (ME_ENUM_FIELD_SETTER)</a></h3>


<p>
????????????????????????????????????????????????????????? public ???????????? public ???????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ME_MUTABLE_ENUM_FIELD">ME: ??????????????????????????? public ?????????????????? (ME_MUTABLE_ENUM_FIELD)</a></h3>


<p>
?????? public ?????????????????? public ?????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????? final ????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_BOOLEAN_RETURN_NULL">NP: ???????????? Boolean ?????????????????????????????? null ?????????????????? (NP_BOOLEAN_RETURN_NULL)</a></h3>


<p>
Boolean.TRUE???Boolean.FALSE???null ??????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? Boolean ?????????????????????????????????????????????????????????
null ???????????????????????? NullPointerException ???????????????????????????????????????
</p>

    
<h3><a name="NP_CLONE_COULD_RETURN_NULL">NP: null ??????????????????????????? clone ???????????? (NP_CLONE_COULD_RETURN_NULL)</a></h3>


<p>
?????? <code>clone</code> ?????????????????????????????????????????? null ??????????????????????????????
????????????<code>clone</code> ???????????????????????? null ????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????? <code>AssertionError</code> ?????????????????????????????????
</p>

    
<h3><a name="NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">NP: equals ??????????????? null ??????????????????????????????????????? (NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT)</a></h3>


<p>
?????? <code>equals(Object)</code> ????????????????????????????????????????????????????????? null ???????????????????????????????????????<code>java.lang.Object.equals()</code> ???????????????????????????????????????????????????
???????????? <code>equals</code> ???????????????????????? null ????????????????????? false ????????????????????????
</p>

    
<h3><a name="NP_TOSTRING_COULD_RETURN_NULL">NP: null ??????????????????????????? toString ???????????? (NP_TOSTRING_COULD_RETURN_NULL)</a></h3>


<p>
?????? <code>toString</code> ?????????????????????????????????????????? null ??????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
null ?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_CLASS_NAMING_CONVENTION">Nm: ????????????????????????????????????????????? (NM_CLASS_NAMING_CONVENTION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
?????????????????? (URL???HTML??????????????????????????????????????????????????????????????????????????????????????????????????????) ????????????????????????????????????
</p>

    
<h3><a name="NM_CLASS_NOT_EXCEPTION">Nm: ?????????????????????????????????????????????????????????????????? Exception ?????????????????????????????? (NM_CLASS_NOT_EXCEPTION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????Exception??????????????????????????????
???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_CONFUSING">Nm: ???????????????????????????????????? (NM_CONFUSING)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_FIELD_NAMING_CONVENTION">Nm: ??????????????????????????????????????????????????? (NM_FIELD_NAMING_CONVENTION)</a></h3>


<p>
final ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">Nm: Java ????????????????????????????????????????????????????????????????????????????????? (NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER)</a></h3>


<p>
???????????????Java ???????????????????????????????????????????????????????????????????????????????????????
???????????? Java ????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER">Nm: Java ????????????????????????????????????????????????????????????????????????????????? (NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER)</a></h3>


<p>
?????????????????????Java ?????????????????????????????????????????????????????????????????????
?????????????????? API ???????????????????????????????????????Java ????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_METHOD_NAMING_CONVENTION">Nm: ?????????????????????????????????????????????????????? (NM_METHOD_NAMING_CONVENTION)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_SAME_SIMPLE_NAME_AS_INTERFACE">Nm: ?????????????????????????????????????????????????????????????????????????????????????????? (NM_SAME_SIMPLE_NAME_AS_INTERFACE)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????/??????????????????????????????????????????????????????????????? (???????????????<code>alpha.Foo</code> ??? <code>beta.Foo</code> ??????????????????????????????????????????)???
???????????????????????????????????????????????????????????????????????? import ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">Nm: ??????????????????????????????????????????????????????????????????????????? (NM_SAME_SIMPLE_NAME_AS_SUPERCLASS)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>alpha.Foo</code> ??? <code>beta.Foo</code> ??????????????????)???
???????????????????????????????????????????????????????????????????????? import ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_VERY_CONFUSING_INTENTIONAL">Nm: ????????????????????????????????????????????? (???????????????) (NM_VERY_CONFUSING_INTENTIONAL)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????1????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
API????????????????????????????????????????????????????????????????????????????????????????????????1??????????????????????????????????????????????????? 
</p>

    
<h3><a name="NM_WRONG_PACKAGE_INTENTIONAL">Nm: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (NM_WRONG_PACKAGE_INTENTIONAL)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
import alpha.Foo;

public class A {
    public int f(Foo x) { return 17; }
}
----
import beta.Foo;

public class B extends A {
    public int f(Foo x) { return 42; }
    public int f(alpha.Foo x) { return 27; }
}
</pre></blockquote>
<p>
????????? <code>B</code> ?????????????????? <code>f(Foo)</code> ??????????????????????????? <code>A</code> ??? <code>f(Foo)</code> ???????????????????????????????????????????????????
????????????????????? <code>Foo</code> ??????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ODR_OPEN_DATABASE_RESOURCE">ODR: ?????????????????????????????????????????????????????????????????????????????????????????? (ODR_OPEN_DATABASE_RESOURCE)</a></h3>


<p>
?????????????????????????????????????????????????????? (??????????????????????????????????????????????????????????????????) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH">ODR: ????????????????????????????????????????????????????????????????????????????????????????????????????????? (ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH)</a></h3>


<p>
?????????????????????????????????????????????????????? (??????????????????????????????????????????????????????????????????) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="OS_OPEN_STREAM">OS: ??????????????????????????????????????????????????????????????????????????? (OS_OPEN_STREAM)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????? <code>finally</code> ?????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="OS_OPEN_STREAM_EXCEPTION_PATH">OS: ?????????????????????????????????????????????????????????????????????????????????????????? (OS_OPEN_STREAM_EXCEPTION_PATH)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????? <code>finally</code> ?????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS">PZ: ?????????????????????????????????????????????????????????????????? (PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS)</a></h3>


<p>
?????????????????????Iterator ??? Map.Entry ????????? Map ?????????????????????????????????????????????????????? entrySet ??????????????????????????????
?????????????????????????????????Map ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
Map <code>m</code> ??? entrySet ?????????????????????????????????????????????????????????<code>c.addAll(m.entrySet())</code> ?????????????????????????????????????????????
OpenJDK 1.7 ??? ???????????? Map ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RC_REF_COMPARISON_BAD_PRACTICE">RC: ???????????????????????????????????? (RC_REF_COMPARISON_BAD_PRACTICE)</a></h3>


<p>
???????????????????????? ???????????? == ????????? != ?????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????? <code>equals</code> ?????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? == ????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????<code>java.lang.Integer</code> ???<code>java.lang.Float</code> ???????????????
</p>

    
<h3><a name="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN">RC: Boolean ?????????????????????????????? (RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN)</a></h3>


<p>
????????????????????????== ????????? != ????????????????????????2?????? Boolean ??????????????????????????????
???????????????2?????? Boolean ??? (<code>Boolean.TRUE</code> ??? <code>Boolean.FALSE</code>) ??????????????????
<code>new Boolean(b)</code> ?????????????????????????????????????????? Boolean ????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????Boolean ???????????????????????????????????????????????????????????? <code>.equals(...)</code> ???????????? == ????????? != ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RR_NOT_CHECKED">RR: InputStream.read() ????????????????????????????????????????????? (RR_NOT_CHECKED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????? <code>java.io.InputStream.read()</code> (????????????????????????????????????) ???????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SR_NOT_CHECKED">RR: InputStream.skip() ????????????????????????????????????????????? (SR_NOT_CHECKED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????? <code>java.io.InputStream.skip()</code> ???????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
?????????????????????????????????????????????????????? ?????? <code>skip</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_NEGATING_RESULT_OF_COMPARETO">RV: compareTo()/compare() ??????????????????????????? (RV_NEGATING_RESULT_OF_COMPARETO)</a></h3>


<p>
?????????????????????<code>compareTo</code> ????????? <code>compare</code> ??????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????? Integer.MIN_VALUE ??????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE">RV: ??????????????????????????????????????????????????? (RV_RETURN_VALUE_IGNORED_BAD_PRACTICE)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>File.delete()</code> ??????????????????????????????????????????????????????????????????????????????????????????????????? false ??????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SI_INSTANCE_BEFORE_FINALS_ASSIGNED">SI: ????????????????????????????????????????????????????????? static final ???????????????????????????????????????????????????????????????????????? (SI_INSTANCE_BEFORE_FINALS_ASSIGNED)</a></h3>


<p>
???????????? static final ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">SW: Swing ??????????????? AWT ??????????????????????????????????????????????????????????????????????????? (SW_SWING_METHODS_INVOKED_IN_SWING_THREAD)</a></h3>


<p>
(<a href="http://web.archive.org/web/20090526170426/http://java.sun.com/developer/JDCTechTips/2003/tt1208.html">From JDC Tech Tip</a>)<br>
????????????????????????????????????Swing ??????????????????<code>show</code> ???????????????<code>setVisible</code> ???????????????<code>pack</code> ?????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????? <code>pack</code> ??????????????? <code>validate</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????2????????????????????? Swing ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>pack</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_BAD_FIELD">Se: ?????????????????????????????? transient ????????????????????????????????????????????????????????? (SE_BAD_FIELD)</a></h3>


<p>
????????????????????????????????????transient???Serializable???<code>java.lang.Object</code> ??????????????????????????????????????????????????????????????????????????????????????????
<code>Externalizable</code> ?????????????????????????????? <code>readObject</code> ??????????????? <code>writeObject</code> ??????????????????????????????????????????????????????
?????????<code>Externalizable</code> ???????????????????????????????????????????????????<code>readObject</code> ??????????????? <code>writeObject</code> ??????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_BAD_FIELD_INNER_CLASS">Se: ???????????????????????????????????????????????????????????????????????? (SE_BAD_FIELD_INNER_CLASS)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????????????????????????? static ?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????
</p>

    
<h3><a name="SE_BAD_FIELD_STORE">Se: ???????????????????????????????????????????????????????????????????????????????????????????????????????????? (SE_BAD_FIELD_STORE)</a></h3>


<p>
?????????????????????????????????????????????????????? ??? transient ??????????????????????????????????????????
</p>

    
<h3><a name="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE">Se: Comparator ??? Serializable ???????????????????????? (SE_COMPARATOR_SHOULD_BE_SERIALIZABLE)</a></h3>


<p>
?????????????????? <code>Comparator</code> ????????????????????????????????????????????????
<code>Serializable</code> ?????????????????????????????????????????????????????????????????????????????????
????????????????????? <code>TreeMap</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<code>TreeMap</code> ???????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_INNER_CLASS">Se: ????????????????????????????????? (SE_INNER_CLASS)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????? static ?????????????????????????????????????????????
</p>

    
<h3><a name="SE_NONFINAL_SERIALVERSIONID">Se: serialVersionUID ??? final ???????????? (SE_NONFINAL_SERIALVERSIONID)</a></h3>


<p>
?????????????????????final ????????? <code>serialVersionUID</code> ??????????????????????????????????????????
?????????????????????????????????????????? UID ?????????????????????????????????????????????????????????????????? final ?????????????????????
</p>

    
<h3><a name="SE_NONLONG_SERIALVERSIONID">Se: serialVersionUID ??? long ???????????? (SE_NONLONG_SERIALVERSIONID)</a></h3>


<p>
?????????????????????long ????????? <code>serialVersionUID</code> ??????????????????????????????????????????
?????????????????????????????????????????? UID ?????????????????????????????????????????????????????????????????? long ?????????????????????
</p>

    
<h3><a name="SE_NONSTATIC_SERIALVERSIONID">Se: serialVersionUID ??? static ???????????? (SE_NONSTATIC_SERIALVERSIONID)</a></h3>


<p>
?????????????????????static ????????? <code>serialVersionUID</code> ??????????????????????????????????????????
?????????????????????????????????????????? UID ?????????????????????????????????????????????????????????????????? static ?????????????????????
</p>

    
<h3><a name="SE_NO_SUITABLE_CONSTRUCTOR">Se: Serializable ??????????????????????????????????????????????????????????????????????????????????????????????????? (SE_NO_SUITABLE_CONSTRUCTOR)</a></h3>


<p>
?????????????????? <code>Serializable</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION">Se: Externalizable ???????????????????????????????????????????????????????????????????????? (SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION)</a></h3>


<p>
?????????????????????<code>Externalizable</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>Externalizable</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_READ_RESOLVE_MUST_RETURN_OBJECT">Se: readResolve ????????????????????????????????? Object ??????????????????????????? (SE_READ_RESOLVE_MUST_RETURN_OBJECT)</a></h3>


<p>
<code>readResolve</code> ?????????????????????????????????????????????????????????????????????????????? <code>Object</code> ????????????????????????????????????????????? 
</p>

    
<h3><a name="SE_TRANSIENT_FIELD_NOT_RESTORED">Se: ????????????????????????????????????????????? transient ???????????????  (SE_TRANSIENT_FIELD_NOT_RESTORED)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????? transient ?????????????????????????????? readObject/readResolve ?????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_NO_SERIALVERSIONID">SnVI: Serializable ??????????????? serialVersionUID ???????????????????????? (SE_NO_SERIALVERSIONID)</a></h3>


<p>
?????????????????? <code>Serializable</code> ???????????????????????????????????????????????????<code>serialVersionUID</code> ?????????????????????????????????????????????
.class ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????? <code>serialVersionUID</code> ??????????????? (???????????????<code>String.class</code> ?????????????????????????????????<code>class$java$lang$String</code> ????????? static ?????????????????????????????????)???
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????? Serializable ?????????????????????????????????????????????????????? serialVersionUID ???????????????????????????????????????????????????
</p>

    
<h3><a name="UI_INHERITANCE_UNSAFE_GETRESOURCE">UI: ????????????????????????????????? getResource ??????????????????????????????????????????????????? (UI_INHERITANCE_UNSAFE_GETRESOURCE)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????<code>this.getClass().getResource(...)</code> ??????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BC_IMPOSSIBLE_CAST">BC: ???????????????????????? (BC_IMPOSSIBLE_CAST)</a></h3>


<p>
?????????????????????????????? ClassCastException ????????????????????????
FindBugs ??????instanceof ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BC_IMPOSSIBLE_DOWNCAST">BC: ????????????????????????????????? (BC_IMPOSSIBLE_DOWNCAST)</a></h3>


<p>
?????????????????????????????? ClassCastException ????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????ClassCastException ???????????????????????????????????????????????? 
</p>

    
<h3><a name="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">BC: toArray ????????????????????????????????????????????????????????? (BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY)</a></h3>


<p>
??????????????????????????????????????????<code>Object[]</code> ?????????????????????????????????????????? <code>toArray</code> ??????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
String[] getAsArray(Collection&lt;String&gt; c) {
  return (String[]) c.toArray();
}
</pre></blockquote>
<p>
??????????????? ClassCastException ????????????????????????????????????
????????????????????????????????????????????? <code>toArray</code> ??????????????????<code>Object[]</code> ??????????????????
Collection ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????<code>c.toArray(new String[]);</code> ????????? <code>c.toArray(new String[c.size()]);</code> (??????????????????????????????????????????) ??????????????????????????????
??????????????????1?????????????????????????????????????????????????????????
<code>Arrays.asList(...)</code>???????????????????????????????????? <code>toArray()</code> ????????????????????????????????????????????????
???????????????<code>Arrays.asArray(new String[] { "a" }).toArray()</code> ??? <code>String []</code> ??????????????????
FindBugs ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BC_IMPOSSIBLE_INSTANCEOF">BC: ?????? false ????????? instanceof (BC_IMPOSSIBLE_INSTANCEOF)</a></h3>


<p>
?????? instanceof ????????? false ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BIT_ADD_OF_SIGNED_BYTE">BIT: ?????????????????????????????????????????? (BIT_ADD_OF_SIGNED_BYTE)</a></h3>


<p>
?????????????????????????????????8?????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????32??????????????????????????????????????????
??????????????????<code>b[0]</code> ????????? <code>0xff</code> ??????<code>x</code> ??????????????? <code>0</code> ??????????????????
<code>((x &lt;&lt; 8) + b[0])</code> ??????<code>0xff</code> ?????????????????? <code>0xffffffff</code> ????????????????????????????????? <code>0xffffffff</code> ????????????????????? 
</p>
<p>
???????????????????????? int ?????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
int result = 0;
for(int i = 0; i &lt; 4; i++) 
  result = ((result &lt;&lt; 8) + b[i]);
</pre></blockquote>
<p>
????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
int result = 0;
for(int i = 0; i &lt; 4; i++) 
  result = ((result &lt;&lt; 8) + (b[i] &amp; 0xff));
</pre></blockquote>

    
<h3><a name="BIT_AND">BIT: ???????????????????????????????????? (BIT_AND)</a></h3>


<p>
????????????????????????<i>(e &amp; C)</i> ??????????????? <i>D</i> ???????????????????????????
?????? <i>C</i> ?????????????????? <i>D</i> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BIT_AND_ZZ">BIT: ((...) & 0) == 0 ??????????????????????????? (BIT_AND_ZZ)</a></h3>


<p>
????????????????????????<i>(e &amp; 0)</i> ???????????????0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BIT_IOR">BIT: ???????????????????????????????????? (BIT_IOR)</a></h3>


<p>
????????????????????????<code>(e | C)</code> ??????????????? <code>D</code> ???????????????????????????
?????? <i>C</i> ?????????????????? <i>D</i> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????? ("&amp;") ?????????????????????????????????????????? ("|") ???????????????????????????
</p>

    
<h3><a name="BIT_IOR_OF_SIGNED_BYTE">BIT: ????????????????????????????????????????????? (BIT_IOR_OF_SIGNED_BYTE)</a></h3>


<p>
??????????????????????????? (????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????) ????????????????????????????????????????????????
???????????????????????????????????????????????????32??????????????????????????????????????????
??????????????????<code>b[0]</code> ????????? <code>0xff</code> ??????<code>x</code> ??????????????? <code>0</code> ??????????????????
<code>((x &lt;&lt; 8) | b[0])</code> ??????<code>0xff</code> ?????????????????? <code>0xffffffff</code> ????????????????????????????????? <code>0xffffffff</code> ????????????????????? 
</p>
<p>
???????????????????????? int ?????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
int result = 0;
for(int i = 0; i &lt; 4; i++) {
    result = ((result &lt;&lt; 8) | b[i]);
}
</pre></blockquote>
<p>
????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
int result = 0;
for(int i = 0; i &lt; 4; i++) {
    result = ((result &lt;&lt; 8) | (b[i] &amp; 0xff));
}
</pre></blockquote>

    
<h3><a name="BIT_SIGNED_CHECK_HIGH_BIT">BIT: ????????????????????????????????????????????? (BIT_SIGNED_CHECK_HIGH_BIT)</a></h3>


<p>
????????????????????????<code>((event.detail &amp; SWT.SELECTED) &gt; 0)</code> ??????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>SWT.SELECTED</code> ???????????????) ?????????????????????????????????????????????
<code>SWT.SELECTED</code> ????????????????????????????????????????????????????????????
<code>SWT.SELECTED</code> ?????????????????????????????????'&gt; 0' ??????????????? '!= 0' ?????????????????????????????????????????????????????????????????????
</p>
<p>
Boris Bokowski
</p>

    
<h3><a name="BOA_BADLY_OVERRIDDEN_ADAPTER">BOA: ???????????????????????? Adapter ???????????????????????????????????????????????????????????????????????????????????? (BOA_BADLY_OVERRIDDEN_ADAPTER)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????java.awt.event ??? javax.swing.event ??????????????????????????????????????????????????????????????? Adapter ?????????
????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BSHIFT_WRONG_ADD_PRIORITY">BSHIFT: ?????????????????????????????????????????????????????????????????? (BSHIFT_WRONG_ADD_PRIORITY)</a></h3>


<p>
???????????? (x &lt;&lt; 8 + y) ????????????????????????????????????
????????????????????????????????????????????????????????? (x &lt;&lt; 8) + y ?????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????? x &lt;&lt; (8 + y) ????????????????????????????????????
</p>

    
<h3><a name="ICAST_BAD_SHIFT_AMOUNT">BSHIFT: 32????????? int ???-31??????31?????????????????????????????????????????? (ICAST_BAD_SHIFT_AMOUNT)</a></h3>


<p>
?????????????????????32????????? int ???-31??????31???????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????5????????? (32??????????????????) ??????????????????????????? (???????????????40????????????????????????????????????8????????????????????????????????????????????????32????????????????????????????????????0????????????????????????????????????????????????)???
????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">DLS: return ????????????????????????????????????????????? (DLS_DEAD_LOCAL_INCREMENT_IN_RETURN)</a></h3>


<p>
<code>return x++;</code> ???????????? return ?????????????????????
??????????????????????????????/????????????????????? ???????????????????????????????????????????????????????????????/????????????????????????????????????????????????
??????????????????????????????????????????????????????
</p>

    
<h3><a name="DLS_DEAD_STORE_OF_CLASS_LITERAL">DLS: ??????????????????????????????????????? (DLS_DEAD_STORE_OF_CLASS_LITERAL)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
<a href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">The behavior of this differs in Java 1.4 and in Java 5</a><br>
J2SE 1.4 ????????????????????????????????????????????????<code>Foo.class</code> ??????????????? <code>Foo</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
J2SE 5.0 ???????????????????????????
</p>
<p>
?????????????????????????????? J2SE 5.0 ????????????????????????????????????????????????????????? Sun ??? <a href="//java.sun.com/j2se/1.5.0/compatibility.html#literal">article on Java SE compatibility</a> ??????????????????????????????
</p>

    
<h3><a name="DLS_OVERWRITTEN_INCREMENT">DLS: ??????????????????????????????????????? (DLS_OVERWRITTEN_INCREMENT)</a></h3>


<p>
???????????????????????????????????????????????? (???????????????<code>i++</code>) ???????????????????????????????????????????????????
???????????????<code>i = i++</code> ????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="DMI_ARGUMENTS_WRONG_ORDER">DMI: ????????????????????? (DMI_ARGUMENTS_WRONG_ORDER)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? <code>Preconditions.checkNotNull("message", message)</code> ????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_BAD_MONTH">DMI: ???????????????????????????????????? (DMI_BAD_MONTH)</a></h3>


<p>
????????????????????????????????????0??????11??????????????????????????????????????????????????? 
</p>

    
<h3><a name="DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">DMI: ???????????????????????? double ????????????????????? BigDecimal (DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE)</a></h3>


<p>
?????????????????????10?????????????????????????????????????????? double ????????? BigDecimal ???????????????????????????
???????????????Java ??? <code>new BigDecimal(0.1)</code> ???????????????0.1????????????????????? BigDecimal (???????????????1??????????????????????????????1) ??????????????????????????????????????????????????????
????????????0.1000000000000000055511151231257827021181583404541015625???????????????????????????
</p>
<p>
???????????? <code>BigDecimal.valueOf(double d)</code> ?????????????????????????????????????????????BigDecimal(???????????????<code>BigDecimal.valueOf(0.1)</code> ???0.1???????????????) ??????????????????????????? double ???????????????????????????????????????
</p>

    
<h3><a name="DMI_CALLING_NEXT_FROM_HASNEXT">DMI: hasNext ??????????????? next ???????????????????????????????????? (DMI_CALLING_NEXT_FROM_HASNEXT)</a></h3>


<p>
<code>hasNext</code> ??????????????????<code>next</code> ??????????????????????????????????????????
<code>hasNext</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>next</code> ????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES">DMI: ??????????????????????????????????????????????????????????????? (DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>s.contains(s)</code> ??? true) ?????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????? (???????????????????????????????????????????????????????????????????????????)???
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_DOH">DMI: D'oh! ???????????????????????????????????? (DMI_DOH)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_INVOKING_HASHCODE_ON_ARRAY">DMI: ????????? hashCode ???????????????????????????????????? (DMI_INVOKING_HASHCODE_ON_ARRAY)</a></h3>


<p>
?????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????
????????? <code>hashCode</code> ???????????????????????????????????????System.identityHashCode ????????????????????????????????????????????????????????????????????????????????????
?????? <code>a</code> ???????????????????????????????????????????????????????????????????????????<code>java.util.Arrays.hashCode(a)</code> ??????????????????????????????
</p>

    
<h3><a name="DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">DMI: int ???????????? Double.longBitsToDouble() ???????????????????????? (DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT)</a></h3>


<p>
<code>Double.longBitsToDouble()</code> ?????????????????????32????????? int ?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="DMI_VACUOUS_SELF_COLLECTION_CALL">DMI: ???????????????????????????????????????????????? (DMI_VACUOUS_SELF_COLLECTION_CALL)</a></h3>


<p>
????????????????????????????????????????????????
??????????????????????????? <code>c</code> ??? <code>c.containsAll(c)</code> ?????????????????????????????? true ????????????????????????
????????????<code>c.retainAll(c)</code> ?????????????????????????????????????????????
</p>

    
<h3><a name="DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION">Dm: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION)</a></h3>


<p>
???????????????????????????<code>@Retention(RetentionPolicy.RUNTIME)</code> ???????????????????????????????????????????????????????????? (???????????????<code>isAnnotationPresent(...)</code> ????????????) ??????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR">Dm: ScheduledThreadPoolExecutor ?????????????????????????????????????????????????????????????????? (DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR)</a></h3>


<p>
<code>ScheduledThreadPoolExecutor</code> ??? <code>ThreadPoolExecutor</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????corePoolSize ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????maximumPoolSize ????????????????????????????????????????????????<br>
(<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/ScheduledThreadPoolExecutor.html">Javadoc</a>)
</p>

    
<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>


<p>
???????????????????????????0??? <code>ScheduledThreadPoolExecutor</code> ???????????????????????????????????????
????????????????????????????????????????????????????????????<br>
(<a href="http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/ScheduledThreadPoolExecutor.html#ScheduledThreadPoolExecutor(int)">Javadoc</a>)
</p>

    
<h3><a name="DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD">Dm: EasyMock ????????????????????????????????????/???????????????????????? (DMI_VACUOUS_CALL_TO_EASYMOCK_METHOD)</a></h3>


<p>
????????????????????? EasyMock ????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DM_INVALID_MIN_MAX">Dm: Math.max ??? Math.min ?????????????????????????????? (DM_INVALID_MIN_MAX)</a></h3>


<p>
?????????????????????<code>Math.min(0, Math.max(100, value))</code> ?????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????? <code>Math.min(100, Math.max(0, value))</code> ?????????????????????
??????????????????????????????????????????????????? ??????????????? NaN ?????? NaN??? ????????????????????????
</p>

    
<h3><a name="EC_ARRAY_AND_NONARRAY">EC: equals ?????????????????????????????????????????????????????????????????? (EC_ARRAY_AND_NONARRAY)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????? <code>.equals(Object o)</code> ??????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????? <code>equals</code> ???????????????2????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????? <code>java.util.Arrays.equals(Object[], Object[])</code> ?????????????????????????????? 
</p>

    
<h3><a name="EC_BAD_ARRAY_COMPARE">EC: ????????? equals ??????????????????????????? == ?????????????????? (EC_BAD_ARRAY_COMPARE)</a></h3>


<p>
????????????????????????????????? <code>.equals(Object o)</code> ??????????????????????????????
????????????<code>Object</code> ??? <code>equals</code> ??????????????????????????????????????????????????????????????? <code>equals</code> ???????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????? <code>java.util.Arrays.equals(Object[], Object[])</code> ??????????????????????????????
????????????????????????????????????????????????????????? <code>==</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EC_INCOMPATIBLE_ARRAY_COMPARE">EC: equals(...) ???????????????????????????????????????????????????????????????????????? (EC_INCOMPATIBLE_ARRAY_COMPARE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????? <code>.equals(Object o)</code> ??????????????????????????? (???????????????<code>String[]</code> ??? <code>StringBuffer[]</code>???<code>String[]</code> ??? <code>int[]</code>) ???
??????????????????????????????????????????????????????
????????????<code>equals(...)</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EC_NULL_ARG">EC: equals(null) ??????????????? (EC_NULL_ARG)</a></h3>


<p>
???????????????????????? null ???????????????????????? <code>equals(Object)</code> ??????????????????????????????
<code>equals</code> ??????????????????????????????????????????????????????????????? false ????????????????????????
</p>

    
<h3><a name="EC_UNRELATED_CLASS_AND_INTERFACE">EC: equals ???????????????????????????????????????????????????????????????????????????????????????????????? (EC_UNRELATED_CLASS_AND_INTERFACE)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????2??????????????? <code>equals(Object)</code> ??????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????2??????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)???
<code>equals</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????<code>java.lang.Object.equals(Object)</code> ?????????????????????????????????????????????????????????????????????????????????????????? false ??????????????????
</p>

    
<h3><a name="EC_UNRELATED_INTERFACES">EC: equals ??????????????????????????????????????????????????????????????????????????????????????? (EC_UNRELATED_INTERFACES)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????2??????????????? <code>equals(Object)</code> ??????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????2??????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)???
<code>equals</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????<code>java.lang.Object.equals(Object)</code> ?????????????????????????????????????????????????????????????????????????????????????????? false ??????????????????
</p>

    
<h3><a name="EC_UNRELATED_TYPES">EC: equals ??????????????????????????????????????????????????????????????? (EC_UNRELATED_TYPES)</a></h3>


<p>
????????????????????????????????????????????????2???????????????  <code>equals(Object)</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????equals ????????????????????????????????????????????????????????? false ???????????????
???????????? equals ????????????????????? (Object ???????????? equals ????????????????????????????????????) ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">EC: ??????????????????????????????????????????????????????????????? (EC_UNRELATED_TYPES_USING_POINTER_EQUALITY)</a></h3>


<p>
????????????????????????????????????????????????2??????????????????????????????????????????????????????????????????????????????
????????????????????????????????? false ?????????
</p>

    
<h3><a name="EQ_ALWAYS_FALSE">Eq: equals ????????????????????? false ????????? (EQ_ALWAYS_FALSE)</a></h3>


<p>
?????????????????????????????? false ????????? <code>equlas</code> ???????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Map ??? Set ???????????????????????????
?????????????????????<code>equals</code> ????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????? <code>Object</code> ???????????????????????????????????????????????????
??????????????????????????????????????????????????? <code>equals</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public boolean equals(Object o) {
    return this == o;
}
</pre></blockquote>

    
<h3><a name="EQ_ALWAYS_TRUE">Eq: equals ????????????????????? true ????????? (EQ_ALWAYS_TRUE)</a></h3>


<p>
??????????????????????????? true ????????? <code>equals</code> ???????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????<code>equals</code> ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_COMPARING_CLASS_NAMES">Eq: equals ??????????????????????????????????????????????????????????????????????????????????????? (EQ_COMPARING_CLASS_NAMES)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????2???????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_DONT_DEFINE_EQUALS_FOR_ENUM">Eq: ????????????????????? equals ????????????????????????????????? (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????? <code>equals</code> ????????????????????????????????????????????????????????????????????????????????????
2??????????????????????????? <code>equals</code> ????????????????????????????????????????????????????????????????????? <code>equals</code> ???????????????????????????????????????????????????????????????
????????? <code>equals</code> ????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_OTHER_NO_OBJECT">Eq: equals(Object) ??????????????????????????????????????????????????? equals ????????????????????? (EQ_OTHER_NO_OBJECT)</a></h3>


<p>
?????????????????????<code>equals</code> ??????????????????????????????????????????<code>java.lang.Object</code> ???????????? <code>equals(Object)</code> ?????????????????????????????????????????????????????????
???????????????????????????????????????????????? <code>equals(Object)</code> ??????????????????????????????<code>boolean equals(Object)</code> ??????????????????????????????????????????
</p>

    
<h3><a name="EQ_OTHER_USE_OBJECT">Eq: Object.equals(Object) ??????????????????????????????????????? equals ????????????????????? (EQ_OTHER_USE_OBJECT)</a></h3>


<p>
?????????????????????<code>equals</code> ??????????????????????????????????????????<code>java.lang.Object</code> ???????????? <code>equals(Object)</code> ?????????????????????????????????????????????????????????
???????????????<code>boolean equals(Object)</code> ??????????????????????????????????????????
</p>

    
<h3><a name="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC">Eq: equals ??????????????????????????????????????? equals ????????????????????????????????????????????????????????????????????????????????????????????? (EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC)</a></h3>


<p>
?????????????????????????????????????????? <code>equals</code> ?????????????????????????????????????????? <code>equals</code> ???????????????????????????????????????
????????? <code>equals</code> ??????????????????2???????????????????????????????????????????????????????????????<code>instanceof</code> ???????????????????????????
<code>equals</code> ???????????????????????? (<code>a.equals(b) == b.equals(a)</code>) ????????????????????????????????????????????????????????????????????????
<i>B</i> ??? <i>A</i> ???????????????????????? <i>A</i> ??? <code>equals</code> ???????????????????????? <code>instanceof A</code> ?????????????????????????????????
????????????<i>B</i> ??? <code>equals</code> ???????????????????????? <code>instanceof B</code> ?????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_SELF_USE_OBJECT">Eq: ????????? equals ??????????????????????????????Object.equals(Object) ????????????????????? (EQ_SELF_USE_OBJECT)</a></h3>


<p>
?????????????????????????????? <code>equals</code> ?????????????????????????????????????????? <code>equals(Object)</code> ??????????????? <code>java.lang.Object</code> ???????????????????????????????????????
???????????????<code>boolean equals(Object)</code> ??????????????????????????????????????????
</p>

    
<h3><a name="FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER">FE: NaN ???????????????????????????????????????????????? (FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????? (???????????? <code>if (x == Double.NaN)</code>)???
?????????????????????<code>NaN</code> ???????????????????????????????????? <code>NaN</code> ?????????????????????????????????
??????????????????<code>x == Double.NaN</code> ????????? false ?????????????????????
<code>x</code> ?????????????????????????????????????????????????????????????????????????????? <code>Double.isNaN(x)</code> ?????????????????? (????????? <code>x</code> ??????????????????????????????????????? <code>Float.isNaN(x)</code>)???
</p>

    
<h3><a name="VA_FORMAT_STRING_BAD_ARGUMENT">FS: ???????????????????????????????????????????????????????????? (VA_FORMAT_STRING_BAD_ARGUMENT)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????
???????????????<code>System.out.println("%d\n", "hello");</code> ??? %d ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_BAD_CONVERSION">FS: ?????????????????????????????????????????????????????????????????? (VA_FORMAT_STRING_BAD_CONVERSION)</a></h3>


<p>
?????????1????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>String.format("%d", "1")</code> ??????????????? "1" ?????????????????? "%d" ??????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED">FS: printf ????????????????????????????????????????????????????????? MessageFormat ???????????????????????? (VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED)</a></h3>


<p>
Java ??? printf ????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????? (???????????????%s) ??????????????????????????????????????????????????????????????? (???????????????{0}) ????????????????????????
printf ??????????????????????????????????????????????????????MessageFormat ?????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED">FS: ???????????????????????????????????????????????????????????????????????????????????? (VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_ILLEGAL">FS: ???????????????????????? (VA_FORMAT_STRING_ILLEGAL)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_MISSING_ARGUMENT">FS: ????????????????????????????????????????????????????????? (VA_FORMAT_STRING_MISSING_ARGUMENT)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT">FS: ????????????????????????????????????????????? (VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ("&lt;")??????????????????????????????
??????????????????????????????????????????????????????
???????????????<code>formatter.format("%&lt;s %s", "a", "b")</code> ????????????????????? MissingFormatArgumentException ????????????????????????
</p>

    
<h3><a name="GC_UNRELATED_TYPES">GC: ????????????????????????????????????????????????????????? (GC_UNRELATED_TYPES)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)???
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????
????????????2?????????????????????????????????????????????????????????????????????????????????
???????????????<code>Foo</code> ??? <code>Bar</code> ???????????????????????????????????????????????????????????????<code>Foo</code> ???????????????????????? <code>Bar</code> ????????????????????????????????????????????????????????????
?????????????????????????????????????????? <code>equals</code> ????????????????????????????????????????????????
???????????????<code>Foo</code> ??? <code>String</code> ??????????????????????????? <code>Foo</code> ?????????????????????????????????<code>String</code> ??? <code>String</code> ?????????????????????????????????<code>equals</code> ????????????????????????????????????????????????
</p>
<p>
????????????????????? <code>equals</code> ???????????????????????????????????????????????????????????????????????????????????????????????????
API????????????????????????????????????????????????????????????????????????<code>Collection&lt;String&gt;</code> ??? <code>Foo</code> ??????????????????????????????????????????
????????? <code>equals</code> ???????????? (???????????????<code>Foo</code>???????????? <code>equals</code> ????????????) ???????????????????????????????????????????????????
</p>

    
<h3><a name="HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS">HE: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>equals</code> ??????????????????????????????????????????<code>hashCode</code> ??????????????? <code>java.lang.Object</code> ??????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HE_USE_OF_UNHASHABLE_CLASS">HE: ?????????????????????????????? hashCode ??????????????????????????????????????????????????? (HE_USE_OF_UNHASHABLE_CLASS)</a></h3>


<p>
?????????????????????<code>equals(Object)</code> ??????????????????????????????????????????<code>hashCode</code> ??????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>hashCode</code> ??????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ICAST_INT_2_LONG_AS_INSTANT">ICAST: int ?????? long ?????????????????????????????????????????????????????? (ICAST_INT_2_LONG_AS_INSTANT)</a></h3>


<p>
?????????????????????32????????? int ??????64????????? long ?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????1970???1???1??????00:00:00 GMT????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????? ?????????????????????????????? Date ??????????????????????????????????????? ?????????????????????????????????
</p>
<blockquote><pre>
Date getDate(int seconds) { return new Date(seconds * 1000); }
</pre></blockquote>
<p>
?????????32?????????????????????????????????64????????????????????????????????????
32??????????????????64???????????????????????????????????????????????????????????????????????????????????????1969???12??????1970???1????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
// ?????????2037???????????????
Date getDate(int seconds) { return new Date(seconds * 1000L); }

// ????????????????????????????????????????????????
Date getDate(long seconds) { return new Date(seconds * 1000); }
</pre></blockquote>

    
<h3><a name="ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL">ICAST: ???????????? double ????????????????????? Math.ceil() ?????????????????? (ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL)</a></h3>


<p>
?????????????????????????????? (???????????????int ??? long) ?????????????????????????????????????????????????????????????????? <code>Math.ceil()</code> ????????????????????????
????????? double ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>Math.ceil()</code>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND">ICAST: ???????????? float ????????????????????? Math.round() ?????????????????? (ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND)</a></h3>


<p>
????????????????????????????????? float ???????????????????????????????????????????????????????????? <code>Math.round()</code> ????????????????????????????????? int/long ??????????????????
????????? float ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>Math.round()</code>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD">IJU: run ?????????????????? JUnit ????????????????????? JUnit ?????????????????????????????? (IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD)</a></h3>


<p>
<code>run</code> ??????????????? JUnit ???????????????????????????????????????????????????????????? JUnit ???????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="IJU_BAD_SUITE_METHOD">IJU: TestCase ??? suite ???????????????????????????????????????????????? (IJU_BAD_SUITE_METHOD)</a></h3>


<p>
JUnit ??? TestCase ???????????????<code>suite</code> ???????????????????????????????????????
?????????????????????<code>suite</code> ??????????????????
</p>
<blockquote><pre>
public static junit.framework.Test suite()
</pre></blockquote>
<p>???</p>
<blockquote><pre>
public static junit.framework.TestSuite suite()
</pre></blockquote>
<p>
??????????????????????????????????????????????????????
</p>

    
<h3><a name="IJU_NO_TESTS">IJU: TestCase ?????????????????????  (IJU_NO_TESTS)</a></h3>


<p>
JUnit ??? TestCase ???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IJU_SETUP_NO_SUPER">IJU: TestCase ??? super.setup() ????????????????????? setUp ????????????????????????????????? (IJU_SETUP_NO_SUPER)</a></h3>


<p>
JUnit ??? TestCase ???????????????<code>setUp</code> ???????????????????????????????????????
<code>setUp</code> ??????????????????<code>super.setUp()</code> ?????????????????????????????????????????????????????????
</p>

    
<h3><a name="IJU_SUITE_NOT_STATIC">IJU: TestCase ??? ??? static ??? suite ????????????????????????????????? (IJU_SUITE_NOT_STATIC)</a></h3>


<p>
JUnit ??? TestCase ???????????????<code>suite</code> ???????????????????????????????????????
<code>suite</code> ??????????????? static ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IJU_TEARDOWN_NO_SUPER">IJU: TestCase ??? super.tearDown() ????????????????????? tearDown ?????????????????????????????????  (IJU_TEARDOWN_NO_SUPER)</a></h3>


<p>
JUnit ??? TestCase ???????????????<code>tearDown</code> ???????????????????????????????????????
<code>tearDown</code> ??????????????????<code>super.tearDown()</code> ?????????????????????????????????????????????????????????
 </p>

    
<h3><a name="IL_CONTAINER_ADDED_TO_ITSELF">IL: ?????????????????????????????????????????????????????? (IL_CONTAINER_ADDED_TO_ITSELF)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????hashCode ?????????????????? <code>StackOverflowException</code> ????????????????????????
</p>

    
<h3><a name="IL_INFINITE_LOOP">IL: ??????????????????????????? (IL_INFINITE_LOOP)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IL_INFINITE_RECURSIVE_LOOP">IL: ????????????????????????????????? (IL_INFINITE_RECURSIVE_LOOP)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IM_MULTIPLYING_RESULT_OF_IREM">IM: ???????????????????????????????????? (IM_MULTIPLYING_RESULT_OF_IREM)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????
???????????????i % 60 * 1000 ??????i % (60 * 1000) ???????????? (i % 60) * 1000 ?????????????????? 
</p>

    
<h3><a name="INT_BAD_COMPARISON_WITH_INT_VALUE">INT: int ?????? long ?????????????????????????????? (INT_BAD_COMPARISON_WITH_INT_VALUE)</a></h3>


<p>
?????????????????????int ?????? int ?????????????????????????????????????????? long ?????????????????????????????????
??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">INT: ????????????????????????????????????????????????????????????????????? (INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">INT: ?????????????????????????????????????????? (INT_BAD_COMPARISON_WITH_SIGNED_BYTE)</a></h3>


<p>
????????????????????????????????????????????????-128???127?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????? <code>b</code> ????????????0???255????????????????????????????????????????????? <code>0xff &amp; b</code> ?????????????????????????????? 
</p>

    
<h3><a name="IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">IO: ???????????????????????????????????????????????????????????????????????? (IO_APPENDING_TO_OBJECT_OUTPUT_STREAM)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p> 

    
<h3><a name="IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">IP: ??????????????????????????????????????????????????????????????????????????? (IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="MF_CLASS_MASKS_FIELD">MF: ????????????????????????????????????????????????????????????????????????????????????????????? (MF_CLASS_MASKS_FIELD)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MF_METHOD_MASKS_FIELD">MF: ??????????????????????????????????????????????????????????????? (MF_METHOD_MASKS_FIELD)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_ALWAYS_NULL">NP: null ???????????????????????? (NP_ALWAYS_NULL)</a></h3>


<p>
????????? null ??????????????????????????????????????????
?????????????????????????????? NullPointerException ?????????????????????
</p>

    
<h3><a name="NP_ALWAYS_NULL_EXCEPTION">NP: null ??????????????????????????????????????? (NP_ALWAYS_NULL_EXCEPTION)</a></h3>


<p>
??????????????????????????? null ???????????????????????????????????????????????????????????? NullPointerException ?????????????????????
????????? FindBugs ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
switch ?????? default ?????????????????????????????????????????? FindBugs ???????????????????????? default ????????????????????????????????????????????????
</p>

    
<h3><a name="NP_ARGUMENT_MIGHT_BE_NULL">NP: null ??????????????????????????????????????????????????? (NP_ARGUMENT_MIGHT_BE_NULL)</a></h3>


<p>
?????????????????????????????????????????? null ??????????????????????????????????????????????????????????????????????????????????????????????????????
????????????null ??????????????????????????????null ?????????????????????????????????
</p>

    
<h3><a name="NP_CLOSING_NULL">NP: ?????? null ??????????????????????????? close ???????????????????????????????????? (NP_CLOSING_NULL)</a></h3>


<p>
<code>close</code> ???????????????????????? null ?????????????????????????????????????????????????????????
????????????????????????????????? NullPointerException ?????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_GUARANTEED_DEREF">NP: null ???????????????????????????????????????????????? (NP_GUARANTEED_DEREF)</a></h3>


<p>
?????????????????????????????????????????????????????????????????? null ????????????null ?????????????????? (???????????????????????????????????????????????????????????????) ????????????????????????????????????
</p>
<p>
?????????<code>if (x == null) throw new NullPointerException();</code> ??? <code>x</code> ?????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">NP: null ??????????????????????????????????????????????????????????????? (NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????? null ????????????null ?????????????????? (???????????????????????????????????????????????????????????????) ????????????????????????????????????
</p>

    
<h3><a name="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">NP: ??? null ????????????????????????????????????????????? (NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR)</a></h3>


<p>
???????????????????????? null ???????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

       
<h3><a name="NP_NONNULL_PARAM_VIOLATION">NP: ?????????????????????????????? null ??????????????????????????? null ?????????????????? (NP_NONNULL_PARAM_VIOLATION)</a></h3>


<p>
??????????????????????????? null ?????????????????????????????????????????????????????????????????????null ???????????????????????????
???????????????????????????@Nonnull ????????????????????????????????????????????????????????????????????????????????? null ?????????????????????????????????????????????
</p>

    
<h3><a name="NP_NONNULL_RETURN_VIOLATION">NP: null ?????????????????????????????????????????? @Nonnull ????????????????????? (NP_NONNULL_RETURN_VIOLATION)</a></h3>


<p>
????????????????????????null ???????????????????????????????????????????????? (?????????????????????????????????????????????) ??????????????? @Nonnull ??????????????????????????????
</p>

    
<h3><a name="NP_NULL_INSTANCEOF">NP: null ???????????????????????????????????????????????????????????????????????????????????? (NP_NULL_INSTANCEOF)</a></h3>


<p>
????????????????????????????????? null ????????????????????????????????????????????????instanceof ????????? faluse ??????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_NULL_ON_SOME_PATH">NP: null ?????????????????????????????????????????? (NP_NULL_ON_SOME_PATH)</a></h3>


<p>
??????????????????????????????????????????????????? null ????????????????????? NullPointerException ?????????????????????
??????????????????????????????????????????????????????????????????NullPointerException ?????????????????????????????????????????????????????????????????????????????????
???????????????????????? FindBugs ?????????????????????????????????
</p>

    
<h3><a name="NP_NULL_ON_SOME_PATH_EXCEPTION">NP: null ????????????????????????????????????????????????????????? (NP_NULL_ON_SOME_PATH_EXCEPTION)</a></h3>


<p>
??????????????????????????? null ??????????????????????????????????????????????????????????????? NullPointerException ??????????????????????????????????????????
????????? FindBugs ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
switch ?????? default ?????????????????????????????????????????? FindBugs ???????????????????????? default ????????????????????????????????????????????????
</p>

    
<h3><a name="NP_NULL_PARAM_DEREF">NP: ?????????????????????????????? null ??????????????????????????? null ?????????????????? (NP_NULL_PARAM_DEREF)</a></h3>


<p>
???????????????????????????????????? null ??????????????????????????????????????? null ???????????????????????????
?????????????????????????????? null ???????????????????????????????????????????????????????????????????????????????????????????????? null ?????????????????????????????????????????????
</p>

    
<h3><a name="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">NP: ?????????????????????????????? null ??????????????????????????? null ?????????????????? (NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS)</a></h3>


<p>
?????????????????????????????????????????????????????? null ???????????????????????????????????????????????????????????????????????????????????? null ???????????????????????????
?????????????????????????????? null ???????????????????????????????????????????????????????????????????????????????????????????????? null ?????????????????????????????????????????????
</p>

    
<h3><a name="NP_NULL_PARAM_DEREF_NONVIRTUAL">NP: ??? null ?????????????????? null ?????????????????????????????????????????????????????? (NP_NULL_PARAM_DEREF_NONVIRTUAL)</a></h3>


<p>
null ??????????????????????????? ??? null ??????????????????????????????????????????????????????
?????????????????????????????? null ???????????????????????????????????????????????????????????????????????????????????????????????? null ?????????????????????????????????????????????
</p>

    
<h3><a name="NP_OPTIONAL_RETURN_NULL">NP: Optional ???????????????????????????????????????????????? null ????????? (NP_OPTIONAL_RETURN_NULL)</a></h3>


<p>
Optional ???????????????????????????????????????????????? null ?????????????????????????????????????????????????????????????????????
null ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_STORE_INTO_NONNULL_FIELD">NP: @Nonnull ????????????????????????????????????????????? null ????????????????????? (NP_STORE_INTO_NONNULL_FIELD)</a></h3>


<p>
@Nonnull ??????????????????????????????????????????????????? null ???????????????????????????????????????????????? 
</p>

    
<h3><a name="NP_UNWRITTEN_FIELD">NP: ????????????????????????????????????????????????????????? (NP_UNWRITTEN_FIELD)</a></h3>


<p>
?????????????????????????????? null ????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? NullPointerException ?????????????????????
</p>

    
<h3><a name="NM_BAD_EQUAL">Nm: ???????????? equal(Object) ???????????????????????????equals(Object) ?????????????????????? (NM_BAD_EQUAL)</a></h3>


<p>
?????????????????????<code>equal(Object)</code> ?????????????????????????????????????????????????????????
????????????????????????<code>java.lang.Object</code> ??? <code>equals(Object)</code> ??? (????????????????????????) ??????????????????????????????????????????
</p>

    
<h3><a name="NM_LCASE_HASHCODE">Nm: ???????????? hashcode() ???????????????????????????hashCode() ?????????????????????? (NM_LCASE_HASHCODE)</a></h3>


<p>
?????????????????????<code>hashcode()</code> ?????????????????????????????????????????????????????????
????????????????????????<code>java.lang.Object</code> ??? <code>hashCode</code> ??????????????? (????????????????????????) ??????????????????????????????????????????
</p>

    
<h3><a name="NM_LCASE_TOSTRING">Nm: ???????????? tostring() ???????????????????????????toString() ?????????????????????? (NM_LCASE_TOSTRING)</a></h3>


<p>
?????????????????????<code>tostring()</code> ?????????????????????????????????????????????????????????
????????????????????????<code>java.lang.Object</code> ??? <code>toString</code> ??????????????? (????????????????????????) ??????????????????????????????????????????
</p>

    
<h3><a name="NM_METHOD_CONSTRUCTOR_CONFUSION">Nm: ????????????????????????????????????????????????????????? (NM_METHOD_CONSTRUCTOR_CONFUSION)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????? void ????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_VERY_CONFUSING">Nm: ????????????????????????????????????????????? (NM_VERY_CONFUSING)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????1????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NM_WRONG_PACKAGE">Nm: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (NM_WRONG_PACKAGE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
import alpha.Foo;

public class A {
    public int f(Foo x) { return 17; }
}
----
import beta.Foo;

public class B extends A {
    public int f(Foo x) { return 42; }
}
</pre></blockquote>
<p>
????????? <code>B</code> ?????????????????? <code>f(Foo)</code> ??????????????????????????? <code>A</code> ??? <code>f(Foo)</code> ?????????????????????????????????????????????????????????
????????????????????? <code>Foo</code> ??????????????????????????????????????????
</p>

    
<h3><a name="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">QBA: ???????????? boolean ???????????????????????????????????????????????? (QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT)</a></h3>


<p>
????????????????????????if ????????? while ??????????????? boolean ????????? boolean ??????????????? (true ????????? false) ???????????????????????????
???????????????????????? = ??????????????????????????????== ?????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RANGE_ARRAY_INDEX">RANGE: ???????????????????????????????????? (RANGE_ARRAY_INDEX)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????? ArrayIndexOutOfBoundsException ??????????????????????????????
</p>

    
<h3><a name="RANGE_ARRAY_LENGTH">RANGE: ??????????????????????????? (RANGE_ARRAY_LENGTH)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? IndexOutOfBoundsException ??????????????????????????????
</p>

    
<h3><a name="RANGE_ARRAY_OFFSET">RANGE: ????????????????????????????????? (RANGE_ARRAY_OFFSET)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? IndexOutOfBoundsException ??????????????????????????????
</p>

    
<h3><a name="RANGE_STRING_INDEX">RANGE: ??????????????????????????????????????? (RANGE_STRING_INDEX)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? StringIndexOutOfBoundsException ??????????????????????????????
</p>

    
<h3><a name="RC_REF_COMPARISON">RC: ???????????????????????? (RC_REF_COMPARISON)</a></h3>


<p>
???????????????????????? == ????????? != ????????????????????????2??????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????? <code>equals</code> ?????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? == ????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????<code>java.lang.Integer</code> ???<code>java.lang.Float</code> ???????????????
</p>

    
<h3><a name="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">RCN: ?????????????????????????????? null ???????????? (RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)</a></h3>


<p>
??????????????? null ?????????????????????????????????????????????????????????????????????????????? null ???????????????????????????????????????
?????? null ???????????????????????? NullPointerException ????????????????????????????????????
????????????????????? null ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">RE: ??????????????????????????????????????? (RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????? PatternSyntaxException ???????????????????????? 
</p>

    
<h3><a name="RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION">RE: ?????????????????????????????????????????? File.separator (RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION)</a></h3>


<p>
?????????????????????????????????????????????????????????<code>File.separator</code> ???????????????????????????
????????? <code>File.separator</code> ???????????????????????????????????? Windows ?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????<code>File.separator</code> ??????????????? <code>File.separatorChar=='\\' ? "\\\\" : File.separator</code> ???????????????????????? 
</p>

    
<h3><a name="RE_POSSIBLE_UNINTENDED_PATTERN">RE: ?????????????????????????????????????????? "." ????????? "|" (RE_POSSIBLE_UNINTENDED_PATTERN)</a></h3>


<p>
String ????????????????????????????????????"." ????????? "|" ?????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????
????????????
</p>
<ul>
  <li><code>s.replaceAll(".", "/")</code> ??????????????????????????? '/' ???????????????????????? String ?????????</li>
  <li><code>s.split(".")</code> ?????????????????????0??? String ???????????????</li>
  <li><code>"ab|cd".replaceAll("|", "/")</code> ??????<code>"/a/b/|/c/d/"</code> ?????????</li>
  <li><code>"ab|cd".split("|")</code> ??????6????????????????????????????????????: <code>[, a, b, |, c, d]</code></li>
</ul>

    
<h3><a name="RV_01_TO_INT">RV: 0??????1????????????????????????0?????????????????? (RV_01_TO_INT)</a></h3>


<p>
0??????1????????????????????????0????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>Random.nextInt(n)</code> ???????????????????????????????????????????????????
</p>

    
<h3><a name="RV_ABSOLUTE_VALUE_OF_HASHCODE">RV: ????????????32??????????????????????????????????????????????????????????????????????????? (RV_ABSOLUTE_VALUE_OF_HASHCODE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????? <code>Integer.MIN_VALUE</code> ????????????????????????????????? (<code>Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE</code> ?????????)???
</p>
<p>
????????????2^32??????1?????? <code>Integer.MIN_VALUE</code> ????????????????????????????????????????????????polygenelubricants?????????GydZG_?????????DESIGNING WORKHOUSES????????????????????????
</p>

    
<h3><a name="RV_ABSOLUTE_VALUE_OF_RANDOM_INT">RV: ???????????????????????????????????????????????????????????????????????? (RV_ABSOLUTE_VALUE_OF_RANDOM_INT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????? <code>Integer.MIN_VALUE</code> ????????????????????????????????? (<code>Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE</code> ?????????)??? 
(??????????????? long ??????????????????????????????)???
</p>

    
<h3><a name="RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE">RV: compareTo ???????????????????????????????????????????????????????????? (RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE)</a></h3>


<p>
?????????????????????compareTo ????????? compare ????????????????????????????????????????????????????????????????????????1?????????-1??? ?????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? compareTo ????????????????????????-1???0?????????1???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_EXCEPTION_NOT_THROWN">RV: ?????????????????????????????????????????????????????????????????? (RV_EXCEPTION_NOT_THROWN)</a></h3>


<p>
??????????????????????????? (??????????????????) ???????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
if (x &lt; 0) {
    new IllegalArgumentException("x must be nonnegative");
}
</pre></blockquote>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????? 
</p>
<blockquote><pre>
if (x &lt; 0) {
    throw new IllegalArgumentException("x must be nonnegative");
}
</pre></blockquote>

    
<h3><a name="RV_RETURN_VALUE_IGNORED">RV: ?????????????????????????????????????????? (RV_RETURN_VALUE_IGNORED)</a></h3>


<p>
??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
String dateString = getHeaderField(name);
dateString.trim();
</pre></blockquote>
<p>
?????????????????????<code>trim</code> ??????????????? <code>dateString</code> ??????????????????????????? String ????????????????????????????????????????????????????????????
????????????String ?????????????????????????????????<code>trim</code> ???????????????????????? String ?????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
String dateString = getHeaderField(name);
dateString = dateString.trim();
</pre></blockquote>

    
<h3><a name="RpC_REPEATED_CONDITIONAL_TEST">RpC: ?????????????????????????????? (RpC_REPEATED_CONDITIONAL_TEST)</a></h3>


<p>
???????????????????????????????????????2??????????????????1?????????????????????????????????????????????2????????????????????????????????????????????? (???????????????<code>x == 0 || x == 0</code>)???
?????????2????????????????????????????????????????????????????????????????????? (???????????????<code>x == 0 || y == 0</code>)???
</p>

    
<h3><a name="SA_FIELD_SELF_ASSIGNMENT">SA: ?????????????????????????????? (SA_FIELD_SELF_ASSIGNMENT)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
int x;
public void foo() {
    x = x;
}
</pre></blockquote>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SA_FIELD_SELF_COMPARISON">SA: ???????????????????????????????????????????????? (SA_FIELD_SELF_COMPARISON)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="SA_FIELD_SELF_COMPUTATION">SA: ?????????????????????????????????????????? (??????????????? x & x) (SA_FIELD_SELF_COMPUTATION)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????x &amp; x ????????? x - x)???
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????
</p>

    
<h3><a name="SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD">SA: ??????????????????????????????????????????????????????????????????????????? (SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
    int foo;
    public void setFoo(int foo) {
        foo = foo;
    }
</pre></blockquote>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SA_LOCAL_SELF_COMPARISON">SA: ??????????????????????????????????????????????????? (SA_LOCAL_SELF_COMPARISON)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="SA_LOCAL_SELF_COMPUTATION">SA: ????????????????????????????????? (???????????????x & x) (SA_LOCAL_SELF_COMPUTATION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????x &amp; x ????????? x - x)???
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????? 
</p>

    
<h3><a name="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH">SF: switch ???????????????????????????????????????????????????????????????????????? (SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH)</a></h3>


<p>
?????? case ???????????????????????? switch ??????????????????????????????????????????????????????????????????????????????
?????? case ??????????????? break ????????? return ?????????????????????????????????????????????????????? 
</p>

    
<h3><a name="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW">SF: ??????????????? switch ???????????????????????????????????????????????????????????????????????? (SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW)</a></h3>


<p>
?????? case ???????????????????????????????????????????????????????????????switch ????????????????????????????????????????????????????????????????????????
?????? case ??????????????? break ????????? return ??????????????????????????????????????????????????????
</p>

    
<h3><a name="SIC_THREADLOCAL_DEADLY_EMBRACE">SIC: ??? static ??????????????????????????????????????????????????????????????? (SIC_THREADLOCAL_DEADLY_EMBRACE)</a></h3>


<p>
????????????????????????????????????????????????????????? static ????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? static ??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SIO_SUPERFLUOUS_INSTANCEOF">SIO: instanceof ??????????????????????????????????????????????????? (SIO_SUPERFLUOUS_INSTANCEOF)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????? instanceof ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SQL_BAD_PREPARED_STATEMENT_ACCESS">SQL: ?????????????????????0??? PreparedStatement ??????????????????????????????????????????????????? (SQL_BAD_PREPARED_STATEMENT_ACCESS)</a></h3>


<p>
?????????????????????0??????<code>PreparedStatement</code> ??? setXXX ??????????????????????????????????????????
?????????????????????1????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SQL_BAD_RESULTSET_ACCESS">SQL: ?????????????????????0??? ResultSet ??????????????????????????????????????????????????? (SQL_BAD_RESULTSET_ACCESS)</a></h3>


<p>
?????????????????????0??????<code>ResultSet</code> ??? getXXX???updateXXX ??????????????????????????????????????????
<code>ResultSet</code> ????????????????????????1????????????????????????????????????????????????????????????
</p>

    
<h3><a name="STI_INTERRUPTED_ON_CURRENTTHREAD">STI: interrupted ????????????????????????????????????????????? currentThread ???????????????????????????????????? (STI_INTERRUPTED_ON_CURRENTTHREAD)</a></h3>


<p>
????????????????????????<code>interrupted</code> ???????????????????????????????????? <code>Thread.currentThread()</code> ??????????????????????????????
<code>interrupted</code> ??????????????? static ????????????????????????<code>Thread.interrupted()</code> ?????????????????????????????????????????????
</p>

    
<h3><a name="STI_INTERRUPTED_ON_UNKNOWNTHREAD">STI: ????????????????????????????????? static Thread.interrupted() ???????????????????????? (STI_INTERRUPTED_ON_UNKNOWNTHREAD)</a></h3>


<p>
????????????????????????????????????????????????????????? Thread ????????????????????????????????????????????? Thread ????????????????????? <code>Thread.interrupted()</code> ??????????????????????????????
<code>interrupted</code> ??????????????? static ??????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_METHOD_MUST_BE_PRIVATE">Se: ??????????????????????????? private ?????????????????????????????????????????? (SE_METHOD_MUST_BE_PRIVATE)</a></h3>


<p>
?????????????????????<code>Serializable</code> ????????????????????????????????????????????????????????????/??????????????????????????????????????????????????????????????????
????????????????????????????????? private ???????????????????????????????????????????????????/??????????????? API ?????????????????????????????????
</p>

    
<h3><a name="SE_READ_RESOLVE_IS_STATIC">Se: readResolve ??????????????? static ?????????????????????????????????????????? (SE_READ_RESOLVE_IS_STATIC)</a></h3>


<p>
<code>readResolve</code> ???????????????????????????????????????????????????????????? static ??????????????????????????????????????????????????????
</p>

    
<h3><a name="TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED">TQ: ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????when=ALWAYS ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? when=NEVER ????????????????????????????????????????????????
</p>
<p>
???????????????@NonNegative ???????????????????????????????????? @Negative(when=When.NEVER) ????????????????????????
????????????????????????return ?????? ???NonNegative ????????????????????? ???Negative ??????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public @NonNegative Integer example(@Negative Integer value) {
    return value;
}
</pre></blockquote>

    
<h3><a name="TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">TQ: ???????????????????????????????????????????????? (TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????when=ALWAYS ????????????????????????????????????????????????????????????????????????????????? when=NEVER ?????????????????????????????????????????????
</p>
<p>
???????????????@NonNegative ???????????????????????????????????? @Negative(when=When.NEVER) ????????????????????????
????????????????????????return ?????? @NonNegative ????????????????????????@Negative ??????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
public boolean example(@Negative Integer value1, @NonNegative Integer value2) {
    return value1.equals(value2);
}
</pre></blockquote>

    
<h3><a name="TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED">TQ: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????when=NEVER ????????????????????????????????????????????????????????????????????????????????? when=ALWAYS ????????????????????????????????????????????????
</p>

    
<h3><a name="TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">TQ: ????????????????????????????????????????????????????????????????????????????????? (TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS">UMAC: ?????????????????????????????????????????????????????????????????????????????? (UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UR_UNINIT_READ">UR: ?????????????????????????????????????????????????????????????????????????????????????????? (UR_UNINIT_READ)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR">UR: ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
abstract class A {
    int hashCode;
    abstract Object getValue();
    
    A() {
        hashCode = getValue().hashCode();
    }
}

class B extends A {
    Object value;

    B(Object v) {
        this.value = v;
    }

    Object getValue() {
        return value;
    }
}
</pre></blockquote>
<p>
<code>B</code> ???????????????????????????<code>B</code> ??????????????????????????? <code>value</code> ??????????????????????????????<code>A</code> ????????????????????????????????????????????????????????????
??????????????????<code>A</code> ??????????????????????????? <code>getValue</code> ????????????????????????<code>value</code> ????????????????????????????????????????????????????????????
</p>


    
<h3><a name="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">USELESS_STRING: ???????????????????????? toString ???????????????????????????????????? (DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY)</a></h3>


<p>
??????????????????????????????????????? <code>toString</code> ?????????????????????????????????????????????[C@16f0472?????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????? <code>Arrays.toString()</code> ???????????????????????????????????????????????????<br>
???Programming Puzzlers?????????3???????????????12??????????????????????????????
</p>

    
<h3><a name="DMI_INVOKING_TOSTRING_ON_ARRAY">USELESS_STRING: ????????? toString ???????????????????????????????????? (DMI_INVOKING_TOSTRING_ON_ARRAY)</a></h3>


<p>
?????????????????????????????? <code>toString</code> ?????????????????????????????????????????????[C@16f0472?????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????? <code>Arrays.toString()</code> ???????????????????????????????????????????????????<br>
???Programming Puzzlers?????????3???????????????12??????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY">USELESS_STRING: ???????????????????????????????????????????????????????????????????????????????????????????????? (VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY)</a></h3>


<p>
????????????????????????????????????????????????????????????1?????????????????????
[I@304282 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????? <code>Arrays.asList(...)</code> ???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UWF_NULL_FIELD">UwF: null ?????????????????????????????????????????? (UWF_NULL_FIELD)</a></h3>


<p>
????????????????????????????????? null ??????????????????????????????????????????????????????????????????????????? null ??????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UWF_UNWRITTEN_FIELD">UwF: ?????????????????????????????????????????? (UWF_UNWRITTEN_FIELD)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????? (??????????????????????????????????????????????????????)??????????????????????????????????????????????????????
</p>

    
<h3><a name="VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG">VA: ??????????????????????????????????????????????????????????????????????????????????????????????????? (VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????1??????????????????????????????????????????????????????
</p>

    
<h3><a name="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">LG: ????????????????????? OpenJDK ???????????????????????????????????????????????? (LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)</a></h3>


<p>
OpenJDK ???????????????????????????????????????????????????????????????<code>java.util.logging.Logger</code> ?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
???????????????????????????????????????????????????
</p>
<blockquote><pre>
public static void initLogging() throws Exception {
    Logger logger = Logger.getLogger("edu.umd.cs");
    logger.addHandler(new FileHandler()); // ???????????????????????????
    logger.setUseParentHandlers(false); // ?????????????????????????????????
}
</pre></blockquote>
<p>
???????????????????????????????????????????????? (?????????????????????????????????) ????????????????????????
<code>initLogging</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????? Logger ??????????????????????????????????????????)???
</p>
<blockquote><pre>
public static void main(String[] args) throws Exception {
    initLogging(); // ??????????????????????????????????????????????????????
    System.gc(); // ?????????????????????????????????
    Logger.getLogger("edu.umd.cs").info("Some message"); // ?????????????????????????????????????????????????????????
}
</pre></blockquote>
<p>
Ulf Ochsenfahrt ??? Eric Fellheimer
</p>

    
<h3><a name="OBL_UNSATISFIED_OBLIGATION">OBL: ??????????????????????????????????????????????????????????????????????????????????????????????????? (OBL_UNSATISFIED_OBLIGATION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????) ???????????????????????????????????????
</p>   
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? try/finally ??????????????????????????????????????????
</p>
<p>
??????????????????????????????OS_OPEN_STREAM ??? ODR_OPEN_DATABASE_RESOURCE ??????????????????????????????????????? (??????????????????????????????????????????) ?????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
</p>
<ul>
  <li>send email to findbugs@cs.umd.edu</li>
  <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs.html">http://findbugs.sourceforge.net/reportingBugs.html</a></li>
</ul>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>
<p>
???????????????????????????Weimer ??? Necula ????????? <i>Finding and Preventing Run-Time Error Handling Mistakes</i> ?????????????????????????????? 
</p>

    
<h3><a name="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">OBL: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????) ???????????????????????????????????????
</p>   
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? try/finally ??????????????????????????????????????????
</p>
<p>
??????????????????????????????OS_OPEN_STREAM ??? ODR_OPEN_DATABASE_RESOURCE ??????????????????????????????????????? (??????????????????????????????????????????) ?????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
</p>
<ul>
  <li>send email to findbugs@cs.umd.edu</li>
  <li>file a bug report: <a href="http://findbugs.sourceforge.net/reportingBugs.html">http://findbugs.sourceforge.net/reportingBugs.html</a></li>
</ul>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>
<p>
???????????????????????????Weimer ??? Necula ????????? <i>Finding and Preventing Run-Time Error Handling Mistakes</i> ?????????????????????????????? 
</p>

      
<h3><a name="DM_CONVERT_CASE">Dm: ?????????????????????????????? Locale ??????????????????????????????????????? (DM_CONVERT_CASE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
</p>
<ul>
  <li>String.toUpperCase(Locale l)</li>
  <li>String.toLowerCase(Locale l)</li>
</ul>

    
<h3><a name="DM_DEFAULT_ENCODING">Dm: ??????????????????????????????????????????????????? (DM_DEFAULT_ENCODING)</a></h3>


<p>
byte ?????? String (????????? String ?????? byte) ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? API ????????????????????????????????????????????? Charset ?????????????????????????????????????????????????????????
</p>

    
<h3><a name="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">DP: doPrivileged ????????????????????????????????????????????????????????? (DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? doPrivileged ???????????????????????????????????????????????????
</p>

    
<h3><a name="DP_DO_INSIDE_DO_PRIVILEGED">DP: doPrivileged ???????????????????????????????????????????????? (DP_DO_INSIDE_DO_PRIVILEGED)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? doPrivileged ?????????????????????????????????????????????????????????
</p>

    
<h3><a name="EI_EXPOSE_REP">EI: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (EI_EXPOSE_REP)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EI_EXPOSE_REP2">EI2: ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (EI_EXPOSE_REP2)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="FI_PUBLIC_SHOULD_BE_PROTECTED">FI: ???????????????????????? public ???????????? protected ???????????? (FI_PUBLIC_SHOULD_BE_PROTECTED)</a></h3>


<p>
?????????????????? <code>finalize</code> ??????????????? public ???????????????protected ?????????????????????
</p>

    
<h3><a name="EI_EXPOSE_STATIC_REP2">MS: static ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (EI_EXPOSE_STATIC_REP2)</a></h3>


<p>
?????????????????????static ??????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_CANNOT_BE_FINAL">MS: final ??????????????????????????????????????????????????????????????????????????? (MS_CANNOT_BE_FINAL)</a></h3>


<p>
???????????? static ?????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_EXPOSE_REP">MS: ?????????????????????????????????????????????????????????????????????????????? public static ???????????? (MS_EXPOSE_REP)</a></h3>


<p>
public static ?????????????????????????????? ??????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_FINAL_PKGPROTECT">MS: final ????????????????????????????????????????????????????????????????????? (MS_FINAL_PKGPROTECT)</a></h3>


<p>
???????????? static ?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????? final ?????????/????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_MUTABLE_ARRAY">MS: ?????????????????????????????? (MS_MUTABLE_ARRAY)</a></h3>


<p>
?????? final static ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_MUTABLE_COLLECTION">MS: ?????????????????????????????????????????? (MS_MUTABLE_COLLECTION)</a></h3>


<p>
???????????????????????????????????????????????? final static ???????????????????????????????????????????????????
?????????????????? ???????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????  Collections.unmodifiableSet/List/Map ????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_MUTABLE_COLLECTION_PKGPROTECT">MS: ?????????????????????????????????????????????????????????????????????????????????????????? (MS_MUTABLE_COLLECTION_PKGPROTECT)</a></h3>


<p>
???????????????????????????????????????????????? final static ???????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? Collections.unmodifiableSet/List/Map ????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_MUTABLE_HASHTABLE">MS: ?????? Hashtable ?????????????????? (MS_MUTABLE_HASHTABLE)</a></h3>


<p>
?????? final static ?????????????????? Hashtable ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????Hashtable ???????????????????????????????????????????????????
</p>

    
<h3><a name="MS_OOI_PKGPROTECT">MS: ?????????????????????????????????????????????????????????????????????????????????????????????????????? (MS_OOI_PKGPROTECT)</a></h3>


<p>
??????????????????????????????????????? final static ??????????????????????????? Hashtable ????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_PKGPROTECT">MS: ??????????????????????????????????????????????????????????????? (MS_PKGPROTECT)</a></h3>


<p>
???????????? static ?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MS_SHOULD_BE_FINAL">MS: final ??????????????????????????? (MS_SHOULD_BE_FINAL)</a></h3>


<p>
final ????????? public static ?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????? final ???????????????
</p>

    
<h3><a name="MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">MS: final ??????????????????????????????????????????????????????????????? (MS_SHOULD_BE_REFACTORED_TO_BE_FINAL)</a></h3>


<p>
final ????????? public static ?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????? final ???????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION">AT: ?????????????????????????????????????????????????????????????????????????????????????????? (AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION)</a></h3>


<p>
???????????????????????????????????? ???????????????????????????????????????????????? ????????????????????????????????????????????????
???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DC_DOUBLECHECK">DC: ??????????????????????????????????????????????????? (DC_DOUBLECHECK)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Java ??????????????????????????????????????????????????????<br>
????????????<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html" >http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a> ??????????????????????????????
</p>

    
<h3><a name="DC_PARTIALLY_CONSTRUCTED">DC: ????????????????????????????????????????????????????????????????????????????????? (DC_PARTIALLY_CONSTRUCTED)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? volatile ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? volatile ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DL_SYNCHRONIZATION_ON_BOOLEAN">DL: Boolean ???????????? (DL_SYNCHRONIZATION_ON_BOOLEAN)</a></h3>


<p>
<code>Boolean</code> ????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private static Boolean inited = Boolean.FALSE;

synchronized(inited) { 
    if (!inited) {
        init();
        inited = Boolean.TRUE;
    }
}
</pre></blockquote>
<p>
????????????2?????? <code>Boolean</code> ???????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">DL: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????? (DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE)</a></h3>


<p>
?????????????????????Integer ????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private static Integer count = 0;

synchronized(count) { 
    count++;
}
</pre></blockquote>
<p>
<code>Integer</code> ???????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
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> ??????????????????????????????
</p>

    
<h3><a name="DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">DL: ???????????????????????????????????? (DL_SYNCHRONIZATION_ON_SHARED_CONSTANT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private static String LOCK = "LOCK";

synchronized(LOCK) {
    ...
}
</pre></blockquote>
<p>
????????????????????????????????????Java ????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <br>
????????????<a href="http://www.javalobby.org/java/forums/t96352.html">http://www.javalobby.org/java/forums/t96352.html</a> ??? <a href="http://jira.codehaus.org/browse/JETTY-352">http://jira.codehaus.org/browse/JETTY-352</a> ??????????????????????????????
</p>

    
<h3><a name="DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE">DL: ????????????????????????????????????????????????????????? (DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE)</a></h3>


<p>
????????????????????????????????????????????????????????? <code>Integer</code> ???????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private static final Integer fileLock = new Integer(1);

synchronized(fileLock) { 
    .. do something ..
}
</pre></blockquote>
<p>
????????????????????? fileLock ???????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private static final Object fileLock = new Object();
</pre></blockquote>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????IntelliJ ??? "Remove Boxing" ??????????????????????????????????????? Java ???????????????????????????????????????????????????????????? <code>Integer</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DM_MONITOR_WAIT_ON_CONDITION">Dm: Condition ??? wait ???????????????????????????????????? (DM_MONITOR_WAIT_ON_CONDITION)</a></h3>


<p>
????????????????????????<code>java.util.concurrent.locks.Condition</code> ????????????????????? <code>wait</code> ??????????????????????????????????????????
<code>Condition</code> ???????????????????????????????????????????????? <code>Condition</code> ??????????????????????????????????????? <code>await</code> ??????????????????????????????????????????
</p>

    
<h3><a name="DM_USELESS_THREAD">Dm: ???????????????????????? run ?????????????????????????????????????????????????????? (DM_USELESS_THREAD)</a></h3>


<p>
????????????????????????<code>Thread</code> ??????????????????????????? <code>run</code> ??????????????????????????????????????????<code>Runnable</code> ?????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????
</p>

    
<h3><a name="ESync_EMPTY_SYNC">ESync: ?????? synchronized ???????????? (ESync_EMPTY_SYNC)</a></h3>


<p>
??????????????????????????? synchronized ??????????????????????????????
</p>
<blockquote><pre>
synchronized() {
}
</pre></blockquote>
<p>
?????? synchronized ??????????????????????????????????????????????????????????????????
?????? synchronized ????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IS2_INCONSISTENT_SYNC">IS: ??????????????????????????? (IS2_INCONSISTENT_SYNC)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<ul>
  <li>?????????????????????????????????????????????????????????????????????????????????????????????????????????</li>
  <li>???????????????javax.annotation.concurrent.NotThreadSafe ???????????????????????????????????????</li>
  <li>???????????????1????????????????????????????????????????????????????????????????????????1??????????????????????????????</li>
  <li>???????????????2???????????????????????????????????????????????????????????????????????????????????? (???????????????????????????) ??????????????????????????????????????????1/3</li>
</ul>
<p
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IS_FIELD_NOT_GUARDED">IS: ???????????????????????????????????????????????????????????????????????? (IS_FIELD_NOT_GUARDED)</a></h3>


<p>
???????????????????????????net.jcip.annotations.GuardedBy ????????? javax.annotation.concurrent.GuardedBy ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="JLM_JSR166_LOCK_MONITORENTER">JLM: Lock ???????????????????????? (JLM_JSR166_LOCK_MONITORENTER)</a></h3>


<p>
????????????????????????<code>java.util.concurrent.locks.Lock</code> ???????????????????????????????????????????????????????????????
???????????????????????????????????? <code>synchronized (...)</code> ??????????????? <code>acquire()</code>/<code>release()</code> ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="JLM_JSR166_UTILCONCURRENT_MONITORENTER">JLM: java.util.concurrent ????????????????????????????????????????????? (JLM_JSR166_UTILCONCURRENT_MONITORENTER)</a></h3>


<p>
????????????????????????java.util.concurrent ??????????????????????????? (????????????????????????) ???????????????????????????????????????????????????
????????????????????????????????????????????????<code>synchronized</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>AtomicBoolean</code> ?????????????????????????????????????????? <code>AtomicBoolean</code> ???????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">JLM: util.concurrent ????????????????????????????????? wait ????????????????????????????????? (JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT)</a></h3>


<p>
????????????????????????<code>await()</code> ???????????????<code>signal</code> ???????????????<code>signalAll</code> ?????????????????????????????????????????????
(???????????????util.concurrent ??? Condition ??????????????????) ??????<code>wait</code> ???????????????<code>notify</code> ???????????????<code>notifyAll</code> ??????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>


<h3><a name="LI_LAZY_INIT_STATIC">LI: static ????????????????????????????????????????????? (LI_LAZY_INIT_STATIC)</a></h3>


<p>
????????????????????????volatile ????????? static ???????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????? volatile ??????????????????<br>
????????????<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/">Java Memory Model web site</a> ??????????????????????????????
</p>

    
<h3><a name="LI_LAZY_INIT_UPDATE_STATIC">LI: ??????????????? static ????????????????????????????????????????????? (LI_LAZY_INIT_UPDATE_STATIC)</a></h3>


<p>
????????????????????????static ???????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? static ????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD">ML: ???????????????????????????????????????????????????????????????????????? (ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????
????????????????????? (????????????????????????) ????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
private Long myNtfSeqNbrCounter = new Long(0);
private Long getNotificationSequenceNumber() {
     Long result = null;
     synchronized(myNtfSeqNbrCounter) {
         result = new Long(myNtfSeqNbrCounter.longValue() + 1);
         myNtfSeqNbrCounter = new Long(result.longValue());
     }
     return result;
}
</pre></blockquote>

    
<h3><a name="ML_SYNC_ON_UPDATED_FIELD">ML: ?????????????????????????????????????????????????????????????????? (ML_SYNC_ON_UPDATED_FIELD)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MSF_MUTABLE_SERVLET_FIELD">MSF: ??????????????????????????????????????? (MSF_MUTABLE_SERVLET_FIELD)</a></h3>


<p>
Web ???????????????????????????????????????????????? JSP ?????????????????????????????????1???????????????????????? (??????????????????????????????????????????????????????)???
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MWN_MISMATCHED_NOTIFY">MWN: ???????????? notify ???????????? (MWN_MISMATCHED_NOTIFY)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????? <code>Object.notify()</code> ??? <code>Object.notifyAll()</code> ??????????????????????????????
?????????????????????????????????????????????<code>notify</code> ??????????????? <code>notifyAll</code> ???????????????????????????????????????<code>IllegalMonitorStateException</code> ??????????????????????????????????????????
</p>

    
<h3><a name="MWN_MISMATCHED_WAIT">MWN: ???????????? wait ???????????? (MWN_MISMATCHED_WAIT)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????<code>Object.wait()</code> ??????????????????????????????
?????????????????????????????????????????????<code>wait</code> ???????????????????????????????????????<code>IllegalMonitorStateException</code> ??????????????????????????????????????????
</p>

    
<h3><a name="NN_NAKED_NOTIFY">NN: ?????? notify ???????????? (NN_NAKED_NOTIFY)</a></h3>


<p>
<code>notify</code> ????????????????????? <code>notifyAll</code> ??????????????????????????????????????????????????????????????????????????? (????????????) ?????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????? <code>notify</code> ???????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_SYNC_AND_NULL_CHECK_FIELD">NP: ??????????????????????????????????????? null ???????????? (NP_SYNC_AND_NULL_CHECK_FIELD)</a></h3>


<p>
???????????????????????????????????????????????????????????? null ?????????????????????????????????
null ??????????????????????????????????????? NullPointerException ??????????????????????????????null ??????????????????????????????????????????
???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NO_NOTIFY_NOT_NOTIFYALL">No: notifyAll ???????????????????????? notify ????????????????????????????????? (NO_NOTIFY_NOT_NOTIFYALL)</a></h3>


<p>
????????????????????????<code>notifyAll</code> ???????????????????????? <code>notify</code> ??????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
<code>notify</code> ??????????????????????????????1??????????????????????????????????????????????????????????????????????????????????????????????????????????????????1??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RS_READOBJECT_SYNC">RS: readObject ????????????????????????????????????????????? (RS_READOBJECT_SYNC)</a></h3>


<p>
???????????????????????????????????????????????? <code>readObject</code> ???????????? ??????????????????????????????
???????????????????????????????????????????????????????????????1?????????????????????????????????????????????????????????
??????????????????<code>readObject</code> ?????????????????????????????????????????????????????????
<code>readObject</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">RV: putIfAbsent ?????????????????????????????? putIfAbsent ???????????????????????????????????? (RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED)</a></h3>


<p>
<code>putIfAbsent</code> ??????????????????1????????????????????????????????? (???????????????????????????????????????????????????) ???????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????1????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RU_INVOKE_RUN">Ru: ??????????????? run ???????????????????????????????????? (RU_INVOKE_RUN)</a></h3>


<p>
??????????????????????????????????????? ???????????? <code>run</code> ??????????????????????????????????????????
????????????????????????????????????????????????????????? <code>run</code> ???????????????????????????????????????????????? <code>Runnable</code> ??????????????????????????????????????????
??????????????????<code>Thread.start()</code> ???????????????????????????????????????
</p>

    
<h3><a name="SC_START_IN_CTOR">SC: Thread.start() ????????????????????????????????????????????? (SC_START_IN_CTOR)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SP_SPIN_ON_FIELD">SP: ????????????????????????????????????????????? (SP_SPIN_ON_FIELD)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? (wait/notify ??????????????????????????????) ?????????????????????????????????????????????????????????
</p>

    
<h3><a name="STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar ??????????????? (STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE)</a></h3>


<p>
????????? JavaDoc ?????????????????????????????????????????????????????????Calendar ?????????????????????????????????????????????????????????????????????????????????
?????????????????????static ????????????????????????????????? Calendar ????????????????????????????????????????????????????????????
????????????????????????????????????
????????????????????????<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> ??????????????????????????????
</p>

    
<h3><a name="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE">STCAL: static DateFormat ??????????????? (STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE)</a></h3>


<p>
JavaDoc ?????????????????????????????? DateFormat ?????????????????????????????????????????????????????????????????????????????????
?????????????????????static ????????????????????????????????? DateFormat ????????????????????????????????????????????????????????????
????????????????????????????????????
????????????????????????<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> ??????????????????????????????
</p>

    
<h3><a name="STCAL_STATIC_CALENDAR_INSTANCE">STCAL: static Calendar ??????????????? (STCAL_STATIC_CALENDAR_INSTANCE)</a></h3>


<p>
????????? JavaDoc ?????????????????????????????????????????????????????????Calendar ??????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????1?????????????????????????????????????????????????????????????????????????????????????????????????????????
JDK 5.0???????????? JDK 1.4 ????????????????????????????????????????????????????????????????????? sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate() ??? ArrayIndexOutOfBoundsExceptions ??? IndexOutOfBoundsExceptions ????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????<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> ??????????????????????????????
</p>

    
<h3><a name="STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">STCAL: static DateFormat (STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE)</a></h3>


<p>
JavaDoc ?????????????????????????????? DateFormat ?????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????1?????????????????????????????????????????????????????????????????????????????????????????????????????????
JDK 5.0???????????? JDK 1.4 ????????????????????????????????????????????????????????????????????? sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate() ??? ArrayIndexOutOfBoundsExceptions ??? IndexOutOfBoundsExceptions ????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????<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> ??????????????????????????????
</p>

    
<h3><a name="SWL_SLEEP_WITH_LOCK_HELD">SWL: ???????????????????????? Thread.sleep() ???????????????????????????????????? (SWL_SLEEP_WITH_LOCK_HELD)</a></h3>


<p>
???????????????????????????????????????????????????<code>Thread.sleep()</code> ??????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? <code>wait</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="TLW_TWO_LOCK_WAIT">TLW: 2???????????????????????????????????? wait ???????????????????????????????????? (TLW_TWO_LOCK_WAIT)</a></h3>


<p>
2?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<code>wait</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UG_SYNC_SET_UNSYNC_GET">UG: ???????????????????????? get ???????????????????????????????????? set ???????????? (UG_SYNC_SET_UNSYNC_GET)</a></h3>


<p>
?????????????????????????????????????????? get ??????????????? set ????????????????????????set ???????????????????????????????????????get ?????????????????????????????????????????????
get ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
get ?????????????????????????????????????????????
</p>

    
<h3><a name="UL_UNRELEASED_LOCK">UL: ??????????????????????????????????????????????????????????????? (UL_UNRELEASED_LOCK)</a></h3>


<p>
????????????????????????JSR-166(<code>java.util.concurrent</code>) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? JSR-166????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
Lock l = ...;
l.lock();
try {
    // do something
} finally {
    l.unlock();
}
</pre></blockquote>

    
<h3><a name="UL_UNRELEASED_LOCK_EXCEPTION_PATH">UL: ????????????????????????????????????????????????????????????????????? (UL_UNRELEASED_LOCK_EXCEPTION_PATH)</a></h3>


<p>
????????????????????????JSR-166(<code>java.util.concurrent</code>) ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? JSR-166????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
Lock l = ...;
l.lock();
try {
    // do something
} finally {
    l.unlock();
}
</pre></blockquote>

    
<h3><a name="UW_UNCOND_WAIT">UW: wait ???????????????????????????????????? (UW_UNCOND_WAIT)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????? <code>java.lang.Object.wait()</code> ?????????????????????????????????
?????????????????????<code>wait</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????
</p>

    
<h3><a name="VO_VOLATILE_INCREMENT">VO: volatile ???????????????????????????????????????????????????????????????????????? (VO_VOLATILE_INCREMENT)</a></h3>


<p>
?????????????????????volatile ?????????????????????????????????????????????????????????
volatile ?????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="VO_VOLATILE_REFERENCE_TO_ARRAY">VO: ???????????? volatile ??????????????????????????? volatile ????????????????????? (VO_VOLATILE_REFERENCE_TO_ARRAY)</a></h3>


<p>
????????? volatile ????????????????????????????????????????????????????????????????????????????????????????????????
???????????? volatile ??????????????????????????????????????????????????????????????? volatile ????????????????????????????????????????????? volatile ??????????????????????????????
??????????????? volatile ???????????????????????????????????????J2SE 5.0?????????????????? java.util.concurrent ???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL">WL: ????????????????????????????????? getClass ???????????????????????? (WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL)</a></h3>


<p>
??????????????????????????????????????????<code>this.getClass()</code> ??????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>java.awt.Label</code> ???????????????????????????????????????????????????
</p>
<blockquote><pre>
private static final String base = "label";
private static int nameCounter = 0;

String constructComponentName() {
    synchronized (getClass()) {
        return base + nameCounter++;
    }
}
</pre></blockquote>
<p>
<code>Label</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????<code>Label.class</code> ?????????????????????????????????
</p>
<blockquote><pre>
private static final String base = "label";
private static int nameCounter = 0;

String constructComponentName() {
    synchronized (Label.class) {
        return base + nameCounter++;
    }
}
</pre></blockquote>
<p>
Jason Mehrens ?????????????????????????????????????????????
</p>

    
<h3><a name="WS_WRITEOBJECT_SYNC">WS: writeObject ??????????????????????????????????????????????????????????????????????????????????????????????????? (WS_WRITEOBJECT_SYNC)</a></h3>


<p>
?????????????????????????????????????????? <code>writeObject</code> ??????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="WA_AWAIT_NOT_IN_LOOP">Wa: Condition.await() ??????????????????????????? (WA_AWAIT_NOT_IN_LOOP)</a></h3>


<p>
???????????????????????????????????????????????? <code>java.util.concurrent.await()</code> (????????????????????????????????????) ??????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="WA_NOT_IN_LOOP">Wa: wait ??????????????????????????????????????? (WA_NOT_IN_LOOP)</a></h3>


<p>
???????????????????????????????????????????????? <code>java.lang.Object.wait()</code> ??????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED">Bx: ?????????????????????????????????????????????????????????????????????????????????????????? (BX_BOXING_IMMEDIATELY_UNBOXED)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">Bx: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????? <code>new Double(d).intValue()</code>)???
?????????????????????????????????????????????????????????????????? (???????????? <code>(int) d</code>)???
</p>

    
<h3><a name="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">Bx: ????????????????????????3??????????????????????????????????????????????????????????????????????????? (BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR)</a></h3>


<p>
?????????????????????????????????????????????3???????????? (<code> b ? e1 : e2</code>) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
Java ?????????????????????<code>e1</code> ??? <code>e2</code> ?????????????????????????????????????????????????????????????????????????????????????????????/?????????????????????
(???????????????<code>e1</code> ??? <code>Integer</code> ??????<code>e2</code> ??? <code>Float</code> ?????? <code>e1</code> ???????????????????????? (<code>int</code> ?????????) ?????????<code>float</code> ????????????????????????????????? (<code>Float</code> ?????????) ????????????)???
JLS ???????????????15.25??????????????????????????????
</p>

    
<h3><a name="BX_UNBOXING_IMMEDIATELY_REBOXED">Bx: ??????????????????????????????????????????????????????????????????????????????????????????????????? (BX_UNBOXING_IMMEDIATELY_REBOXED)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DM_BOXED_PRIMITIVE_FOR_COMPARE">Bx: ???????????????????????????????????????????????????????????? (DM_BOXED_PRIMITIVE_FOR_COMPARE)</a></h3>


<p>
??????????????????????????????????????????????????? compareTo ????????????????????????????????????????????????????????????
????????????????????????????????? static compare ???????????? (double ??????float ??? Java 1.4??????????????????????????????????????? Java 1.7??????) ??????????????????????????????????????????
</p>

    
<h3><a name="DM_BOXED_PRIMITIVE_FOR_PARSING">Bx: ???????????????/????????????????????????????????????????????????????????? (DM_BOXED_PRIMITIVE_FOR_PARSING)</a></h3>


<p>
????????????????????????????????????????????????String ??????????????????????????????????????????????????????????????????????????????????????????????????????
static parseXXX ???????????????????????????????????????????????????
</p>

    
<h3><a name="DM_BOXED_PRIMITIVE_TOSTRING">Bx: toString ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (DM_BOXED_PRIMITIVE_TOSTRING)</a></h3>


<p>
<code>toString</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????? static ??? <code>toString</code> ??????????????????????????????????????????????????????
</p>
<table>
   <tr><th>?????????</th><th>?????????</th></tr>
   <tr><td>new Integer(1).toString()</td><td>Integer.toString(1)</td></tr>
   <tr><td>new Long(1).toString()</td><td>Long.toString(1)</td></tr>
   <tr><td>new Float(1.0).toString()</td><td>Float.toString(1.0)</td></tr>
   <tr><td>new Double(1.0).toString()</td><td>Double.toString(1.0)</td></tr>
   <tr><td>new Byte(1).toString()</td><td>Byte.toString(1)</td></tr>
   <tr><td>new Short(1).toString()</td><td>Short.toString(1)</td></tr>
   <tr><td>new Boolean(true).toString()</td><td>Boolean.toString(true)</td></tr>
</table>

    
<h3><a name="DM_FP_NUMBER_CTOR">Bx: ?????????????????????????????? Number ????????????????????????????????????????????????????????? (DM_FP_NUMBER_CTOR)</a></h3>


<p>
<code>new Double(double)</code> ??????????????????????????????????????????????????????????????????????????????????????????
?????????????????????<code>Double.valueOf(double)</code> ???????????????????????????????????????????????????Java ??????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????? J2SE 5.0???????????? Java ??????????????????????????????????????????????????????????????????????????? <code>Double</code>???<code>Float</code> ??? <code>valueOf</code> ??????????????????????????????????????????
</p>

    
<h3><a name="DM_NUMBER_CTOR">Bx: ??????????????? Number ????????????????????????????????????????????????????????? (DM_NUMBER_CTOR)</a></h3>


<p>
<code>new Integer(int)</code> ??????????????????????????????????????????????????????????????????????????????????????????
?????????????????????<code>Integer.valueOf(int)</code> ???????????????????????????????????????????????????Java ??????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
-128??????127??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????<code>valueOf</code> ????????????????????????????????????????????????????????????????????????3.5??????????????????
???????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????? J2SE 5.0???????????? Java ????????????????????????????????????????????????<code>Long</code>???<code>Integer</code>???<code>Short</code>???<code>Character</code>???<code>Byte</code> ??????????????????????????????????????????????????????????????????????????? <code>valueOf</code> ??????????????????????????????????????????
</p>

    
<h3><a name="DMI_BLOCKING_METHODS_ON_URL">Dm: URL ??? equals ??????????????? hashCode ????????????????????????????????? (DMI_BLOCKING_METHODS_ON_URL)</a></h3>


<p>
URL ??? <code>equals</code> ??????????????? <code>hashCode</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html</a> ??????????????????????????????<br>
?????????????????? <code>java.net.URI</code> ???????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_COLLECTION_OF_URLS">Dm: URL ??? Map ??? Set ??????????????????????????? (DMI_COLLECTION_OF_URLS)</a></h3>


<p>
????????????????????????????????????????????????URL ??? <code>Map</code> ??? <code>Set</code> ???????????????????????????
URL ??? <code>equals</code> ??? <code>hashCode</code> ?????????????????????????????????????????????????????????????????????????????????<br>
????????????<a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html</a> ??????????????????????????????<br>
?????????????????? <code>java.net.URI</code> ???????????????????????????????????????????????????
</p>

    
<h3><a name="DM_BOOLEAN_CTOR">Dm: ??????????????? Boolean ????????????????????????????????????????????????????????? (DM_BOOLEAN_CTOR)</a></h3>


<p>
<code>java.lang.Boolean</code> ??????????????????????????????????????????????????????????????????????????????
<code>Boolean</code> ?????????????????????????????????2?????????????????? (<code>Boolean.TRUE</code> ??? <code>Boolean.FALSE</code>) ??????????????????
?????????????????? <code>Boolean.valueOf</code> ???????????? (????????? J2SE 5.0 ???????????????????????????) ??????????????? <code>Boolean</code> ????????????????????????????????????????????????
</p>

    
<h3><a name="DM_GC">Dm: ?????????????????????????????????????????? (DM_GC)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????<code>close</code> ??????????????? <code>finalize</code> ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DM_NEW_FOR_GETCLASS">Dm: ?????????????????????????????????????????????????????????????????????????????????????????????????????? (DM_NEW_FOR_GETCLASS)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????? <code>getClass</code> ??????????????????????????????????????????
????????????????????? (<code>Foo.class</code>) ?????????????????????????????????
</p>

    
<h3><a name="DM_NEXTINT_VIA_NEXTDOUBLE">Dm: ?????????????????????????????????????????? nextDouble ???????????? ???????????? nextInt ??????????????????????????? (DM_NEXTINT_VIA_NEXTDOUBLE)</a></h3>


<p>
<code>java.util.Random</code> ????????????????????? <code>r</code> ??????<code>0</code> ?????? <code>n-1</code> ?????????????????????????????????????????????<code>(int)(r.nextDouble() * n)</code> ???????????? <code>r.nextInt(n)</code> ?????????????????????
</p>
<p>
<code>nextInt</code> ??????????????????????????????????????????????????????????????????
???????????????-99??????0??????????????????????????????????????????<code>-r.nextInt(100)</code> ??????????????????????????????
</p>

    
<h3><a name="DM_STRING_CTOR">Dm: ??????????????? new String(String) ????????????????????????????????????????????????????????? (DM_STRING_CTOR)</a></h3>


<p>
<code>new String(String)</code> ???????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????? ???????????????????????????????????? <code>String</code> ???????????????????????????????????????????????????
????????? <code>String</code> ??????????????????????????????????????????
</p>

    
<h3><a name="DM_STRING_TOSTRING">Dm: String ??? toString ???????????????????????????????????????????????? (DM_STRING_TOSTRING)</a></h3>


<p>
<code>String.toString()</code> ????????????????????????????????????<code>String</code> ??????????????????????????????
</p>

    
<h3><a name="DM_STRING_VOID_CTOR">Dm: ??????????????? new String() ????????????????????????????????????????????????????????? (DM_STRING_VOID_CTOR)</a></h3>


<p>
??????????????????????????????????????????????????????????????? <code>java.lang.String()</code> ??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????? <code>""</code> ???????????????????????????????????????????????????
Java??????????????????????????????????????? <code>String</code> ?????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HSC_HUGE_SHARED_STRING_CONSTANT">HSC: ?????????????????????????????????????????????????????????????????????????????????????????? (HSC_HUGE_SHARED_STRING_CONSTANT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????
final ??????????????????????????????????????????????????????Java ?????????????????????????????????????????? final ????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
JDK ??????????????????????????????????????????1MB????????????????????????????????????<br>
????????????<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6447475">JDK bug 6447475</a> ??????????????????????????????
</p>

    
<h3><a name="SBSC_USE_STRINGBUFFER_CONCATENATION">SBSC: ?????????????????? + ????????????????????????????????????????????????????????? (SBSC_USE_STRINGBUFFER_CONCATENATION)</a></h3>


<p>
?????????????????????????????????????????? + ??????????????? <code>String</code> ??????????????????????????????????????????
????????????????????????????????????<code>String</code> ??? <code>StringBuffer</code>/<code>StringBuilder</code> ???????????????????????????<code>String</code> ????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
<code>StringBuffer</code> (????????? J2SE 5.0??? <code>StringBuilder</code>) ???????????????????????????????????????????????????????????????
</p>
<p>
???????????????
</p>
<blockquote><pre>
// This is bad
String s = "";
for (int i = 0; i &lt; field.length; ++i) {
    s = s + field[i];
}

// This is better
StringBuffer buf = new StringBuffer();
for (int i = 0; i &lt; field.length; ++i) {
    buf.append(field[i]);
}
String s = buf.toString();
</pre></blockquote>

    
<h3><a name="SIC_INNER_SHOULD_BE_STATIC">SIC: static ??????????????????????????? (SIC_INNER_SHOULD_BE_STATIC)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? static ?????????????????????
</p>

    
<h3><a name="SIC_INNER_SHOULD_BE_STATIC_ANON">SIC: ???????????? static ????????????????????????????????????????????????????????????????????? (SIC_INNER_SHOULD_BE_STATIC_ANON)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? static ????????????????????????????????????
???????????????????????? static ????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">SIC: static ????????????????????????????????????????????????????????????????????? (SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? static ????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SS_SHOULD_BE_STATIC">SS: ???????????????????????????????????? (SS_SHOULD_BE_STATIC)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????? final ?????????????????????????????????
static ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UM_UNNECESSARY_MATH">UM: ???????????? Math ???????????? static ???????????????????????????????????????????????? (UM_UNNECESSARY_MATH)</a></h3>


<p>
???????????????????????????????????? <code>java.lang.Math</code> ??? static ??????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
???????????????????????????????????????????????????????????? 
</p>
<table>
<tr>
   <th>????????????</th> <th>???????????????</th>
</tr>
<tr>
   <td>abs</td> <td>-any-</td>
</tr>
<tr>
   <td>acos</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>asin</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>atan</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>atan2</td> <td>0.0</td>
</tr>
<tr>
   <td>cbrt</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>ceil</td> <td>-any-</td>
</tr>
<tr>
   <td>cos</td> <td>0.0</td>
</tr>
<tr>
   <td>cosh</td> <td>0.0</td>
</tr>
<tr>
   <td>exp</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>expm1</td> <td>0.0</td>
</tr>
<tr>
   <td>floor</td> <td>-any-</td>
</tr>
<tr>
   <td>log</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>log10</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>rint</td> <td>-any-</td>
</tr>
<tr>
   <td>round</td> <td>-any-</td>
</tr>
<tr>
   <td>sin</td> <td>0.0</td>
</tr>
<tr>
   <td>sinh</td> <td>0.0</td>
</tr>
<tr>
   <td>sqrt</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>tan</td> <td>0.0</td>
</tr>
<tr>
   <td>tanh</td> <td>0.0</td>
</tr>
<tr>
   <td>toDegrees</td> <td>0.0 or 1.0</td>
</tr>
<tr>
   <td>toRadians</td> <td>0.0</td>
</tr>
</table>

    
<h3><a name="UPM_UNCALLED_PRIVATE_METHOD">UPM: private ????????????????????????????????????????????? (UPM_UNCALLED_PRIVATE_METHOD)</a></h3>


<p>
?????? private ??????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="URF_UNREAD_FIELD">UrF: ???????????????????????????????????? (URF_UNREAD_FIELD)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UUF_UNUSED_FIELD">UuF: ??????????????????????????? (UUF_UNUSED_FIELD)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="WMI_WRONG_MAP_ITERATOR">WMI: entrySet ?????????????????????????????????????????? keySet ???????????????????????????????????? (WMI_WRONG_MAP_ITERATOR)</a></h3>


<p>
????????????????????????keySet ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Map ??? entrySet ??????????????????????????????????????? <code>Map.get(key)</code> ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_CONSTANT_DB_PASSWORD">Dm: ?????????????????????????????????????????????????????????????????? (DMI_CONSTANT_DB_PASSWORD)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_EMPTY_DB_PASSWORD">Dm: ??????????????????????????????????????? (DMI_EMPTY_DB_PASSWORD)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HRS_REQUEST_PARAMETER_TO_COOKIE">HRS: ????????????????????????????????????????????? HTTP cookie (HRS_REQUEST_PARAMETER_TO_COOKIE)</a></h3>


<p>
???????????????????????????????????? HTTP ?????????????????????????????? HTTP ???????????????????????????????????????
????????????????????? HTTP ??????????????????????????????????????????HRS(HTTP ???????????????????????????????????????) ?????????????????????????????????<br>
????????????<a href="http://en.wikipedia.org/wiki/HTTP_response_splitting">http://en.wikipedia.org/wiki/HTTP_response_splitting</a> ??????????????????????????????
</p>
<p>
FindBugs ??????HRS ????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
HRS ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER">HRS: HTTP ???????????????????????????????????????????????? (HRS_REQUEST_PARAMETER_TO_HTTP_HEADER)</a></h3>


<p>
?????????????????????HTTP ???????????? HTTP ???????????????????????????????????????????????????????????? HRS(HTTP ???????????????????????????????????????) ?????????????????????????????????<br>
????????????<a href="http://en.wikipedia.org/wiki/HTTP_response_splitting">http://en.wikipedia.org/wiki/HTTP_response_splitting</a> ??????????????????????????????
</p>
<p>
FindBugs ??????HRS ????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
HRS ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="PT_ABSOLUTE_PATH_TRAVERSAL">PT: ??????????????????????????????????????????????????? (PT_ABSOLUTE_PATH_TRAVERSAL)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????HTTP??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????/abs/path????????????????????????????????????????????????????????????????????????????????????
????????????<a href="http://cwe.mitre.org/data/definitions/36.html">http://cwe.mitre.org/data/definitions/36.html</a> ??????????????????????????????
</p>
<p>
FindBugs ????????????????????????????????????????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="PT_RELATIVE_PATH_TRAVERSAL">PT: ??????????????????????????????????????????????????? (PT_RELATIVE_PATH_TRAVERSAL)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????HTTP??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????..????????????????????????????????????????????????????????????????????????
????????????<a href="http://cwe.mitre.org/data/definitions/23.html">http://cwe.mitre.org/data/definitions/23.html</a> ??????????????????????????????
</p>
<p>
FindBugs ????????????????????????????????????????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">SQL: SQL ??? Statement ???  execute ????????? addBatch ????????????????????????????????????????????????????????? (SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????? SQL ??? ??? <code>execute</code> ????????? <code>addBatch</code> ??????????????????????????????????????????
?????????????????? <code>PreparedStatement</code> ???????????????????????????????????????????????????
???????????????SQL ????????????????????????????????????????????????
</p>

    
<h3><a name="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">SQL: PreparedStatement ?????????????????????????????????????????????????????? (SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING)</a></h3>


<p>
??????????????????????????????????????????????????? SQL ??? <code>PreparedStatement</code> ???????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<code>PreparedStatement</code> ????????????????????????????????????????????????????????? SQL ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="XSS_REQUEST_PARAMETER_TO_JSP_WRITER">XSS: ????????????????????????????????????????????????????????????????????? JSP (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)</a></h3>


<p>
?????????????????????JSP ???????????? HTTP ???????????????????????????????????????????????????????????? XSS(??????????????????????????????????????????) ?????????????????????????????????<br>
????????????<a href="http://en.wikipedia.org/wiki/Cross-site_scripting">http://en.wikipedia.org/wiki/Cross-site_scripting</a> ??????????????????????????????
</p>
<p>
FindBugs ??????XSS ????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
XSS ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="XSS_REQUEST_PARAMETER_TO_SEND_ERROR">XSS: ???????????????????????????????????????????????????????????????????????????????????????????????????????????? (XSS_REQUEST_PARAMETER_TO_SEND_ERROR)</a></h3>


<p>
??????????????????????????????????????????????????????????????? <code>HttpServletResponse.sendError</code> ??????????????? HTTP ???????????????????????????????????????????????????
??????????????????????????????????????????????????? XSS(??????????????????????????????????????????) ?????????????????????????????????<br>
????????????<a href="http://en.wikipedia.org/wiki/Cross-site_scripting">http://en.wikipedia.org/wiki/Cross-site_scripting</a> ??????????????????????????????
</p>
<p>
FindBugs ??????XSS ????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
XSS ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER">XSS: ??????????????????????????????????????????????????????????????????????????????????????? (XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER)</a></h3>


<p>
??????????????????????????????????????????????????? HTTP ????????????????????????????????????????????????????????????????????? XSS(??????????????????????????????????????????) ?????????????????????????????????<br>
????????????<a href="http://en.wikipedia.org/wiki/Cross-site_scripting">http://en.wikipedia.org/wiki/Cross-site_scripting</a> ??????????????????????????????
</p>
<p>
FindBugs ??????XSS ????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????? FindBugs ??????????????????????????????????????????????????????????????????
XSS ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BC_BAD_CAST_TO_ABSTRACT_COLLECTION">BC: ?????????????????????????????????????????????????????? (BC_BAD_CAST_TO_ABSTRACT_COLLECTION)</a></h3>


<p>
?????????????????????Collection ????????????????????????????????????????????????????????? (???????????? <code>List</code>???<code>Set</code>???<code>Map</code>)???
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????? Set ????????? List ????????????????????????????????????????????????
</p>

    
<h3><a name="BC_BAD_CAST_TO_CONCRETE_COLLECTION">BC: ?????????????????????????????????????????????????????? (BC_BAD_CAST_TO_CONCRETE_COLLECTION)</a></h3>


<p>
?????????????????????????????????????????? (???????????????Collection???List???Set) ???????????????????????? (???????????????ArrayList???HashSet) ?????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="BC_UNCONFIRMED_CAST">BC: ???????????????/???????????????????????? (BC_UNCONFIRMED_CAST)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????  
</p>

    
<h3><a name="BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">BC: ????????????????????????????????????????????????/???????????????????????? (BC_UNCONFIRMED_CAST_OF_RETURN_VALUE)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FindBugs ??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="BC_VACUOUS_INSTANCEOF">BC: ?????? true ????????? instanceof (BC_VACUOUS_INSTANCEOF)</a></h3>


<p>
?????? instanceof ????????? true ??????????????? (??????????????????????????? null ??????????????????)???
?????????????????????????????????????????????????????????????????????????????????????????????????????????
????????? null ???????????????????????????????????????????????????instanceof ???????????? null ??????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">BSHIFT: ??????????????????????????? short/byte ??????????????????????????? (ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT)</a></h3>


<p>
??????????????????????????????????????????????????????????????? short ????????? byte ?????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????) ?????????????????????????????????????????????
</p>

    
<h3><a name="CI_CONFUSED_INHERITANCE">CI: final ??????????????? protected ???????????????????????????????????? (CI_CONFUSED_INHERITANCE)</a></h3>


<p>
?????????????????????final ??????????????????????????????????????????????????? protected ??????????????????????????????
???????????? fainal ????????????????????????????????????protected ???????????????????????????????????? 
?????????????????????????????????????????????????????????????????????????????????????????????????????? private ??? public ??????????????????????????????
</p>

    
<h3><a name="DB_DUPLICATE_BRANCHES">DB: 2???????????????????????????????????????????????????????????????????????? (DB_DUPLICATE_BRANCHES)</a></h3>


<p>
???????????????????????????????????????2???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DB_DUPLICATE_SWITCH_CLAUSES">DB: switch ??????2?????? case ???????????????????????????????????????????????????????????? (DB_DUPLICATE_SWITCH_CLAUSES)</a></h3>


<p>
????????????????????????switch ??????2?????? case ??????????????????????????????????????????????????????????????????
?????????????????? case ????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DLS_DEAD_LOCAL_STORE">DLS: ??????????????????????????????????????? (DLS_DEAD_LOCAL_STORE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
Sun ??? javac ?????????????????? final ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
FindBugs ??????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="DLS_DEAD_LOCAL_STORE_IN_RETURN">DLS: return ??????????????????????????????????????? (DLS_DEAD_LOCAL_STORE_IN_RETURN)</a></h3>


<p>
???????????????return ????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????
</p>

    
<h3><a name="DLS_DEAD_LOCAL_STORE_OF_NULL">DLS: ????????????????????????????????? null ?????? (DLS_DEAD_LOCAL_STORE_OF_NULL)</a></h3>


<p>
??????????????????????????????????????? null ?????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????Java SE 6 ?????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD">DLS: ??????????????????????????????????????????????????????????????? (DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_HARDCODED_ABSOLUTE_FILENAME">DMI: ??????????????????????????????????????????????????????????????? (DMI_HARDCODED_ABSOLUTE_FILENAME)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????? File ?????????????????????????????????????????? (???????????? <code>new File("/home/dannyc/workspace/j2ee/src/share/com/sun/enterprise/deployment");</code>)???
</p>

    
<h3><a name="DMI_NONSERIALIZABLE_OBJECT_WRITTEN">DMI: ObjectOutput ????????????????????????????????????????????????????????? (DMI_NONSERIALIZABLE_OBJECT_WRITTEN)</a></h3>


<p>
?????????????????????<code>ObjectOutput.writeObject</code> ??????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_USELESS_SUBSTRING">DMI: substring(0) ???????????????????????????????????? (DMI_USELESS_SUBSTRING)</a></h3>


<p>
????????????????????????????????? <code>substring(0)</code> ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">Dm: Thread ????????????????????? Runnable ?????????????????????????????????????????????????????? (DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED)</a></h3>


<p>
Thread????????????????????? Runnable ??????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_DOESNT_OVERRIDE_EQUALS">Eq: ???????????????????????? equals ???????????????????????????????????????????????????????????? (EQ_DOESNT_OVERRIDE_EQUALS)</a></h3>


<p>
?????????????????????<code>equals</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????<code>equals</code> ??????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????<code>equals</code> ????????????????????????????????????????????????????????????????????????????????????????????????
????????? <code>equals</code> ??????????????????????????????????????????????????????????????????????????????????????????????????? <code>equals</code> ??????????????? <code>super.equals(o)</code> ?????????????????????????????????????????????????????????????????????????????????????????????<code>equals</code> ??????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="EQ_UNUSUAL">Eq: ????????? equals ????????????  (EQ_UNUSUAL)</a></h3>


<p>
?????????????????? <code>equals</code> ????????????????????????????????? <code>this</code> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="FE_FLOATING_POINT_EQUALITY">FE: ???????????????????????????????????????????????? (FE_FLOATING_POINT_EQUALITY)</a></h3>


<p>
???????????????????????????????????????2???????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????? float ??? double ???????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????? <code>BigDecimal</code> ??????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>if (Math.abs(x - y) &lt; .0000001)</code>???<br>
????????? Java ????????????4.2.4??????????????????????????????
</p>

    
<h3><a name="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">FS: Boolean ????????????????????? ???b ???????????????????????????????????????????????????????????? (VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN)</a></h3>


<p>
Boolean ????????????????????? %b ????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????  null ????????? true ???null ?????? false ?????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">IA: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????<code>foo(17)</code> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Java ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????? super ???????????? (??????super.foo(17)) ??????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? FindBugs ???????????????????????????
</p>
<p>
<code>this.foo(17)</code> ?????????????????????????????????????????????????????????????????????????????????
?????????????????????FindBugs ???????????????????????????????????????????????????<code>this.foo(17)</code> ??? <code>foo(17)</code> ??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="IC_INIT_CIRCULARITY">IC: ?????????????????????????????? (IC_INIT_CIRCULARITY)</a></h3>


<p>
???????????????????????????????????????????????????2?????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ICAST_IDIV_CAST_TO_DOUBLE">ICAST: ??????????????????????????? double ????????? float ??????????????????????????? (ICAST_IDIV_CAST_TO_DOUBLE)</a></h3>


<p>
?????????????????? ??????????????????????????? double ????????? float ?????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
????????? double ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????1????????????????????? double ???????????????????????????????????????<br>
?????????????????????????????? 
</p>
<blockquote><pre>
int x = 2;
int y = 5;
// Wrong: yields result 0.0
double value1 =  x / y;

// Right: yields result 0.4
double value2 =  x / (double) y;
</pre></blockquote>

    
<h3><a name="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG">ICAST: ???????????????????????? long ??????????????????????????? (ICAST_INTEGER_MULTIPLY_CAST_TO_LONG)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????? long ???????????????????????????
</p>
<blockquote><pre>
long convertDaysToMilliseconds(int days) { return 1000*3600*24*days; } 
</pre></blockquote>
<p>
long ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
???????????????????????????????????????????????????
</p>
<blockquote><pre>
long convertDaysToMilliseconds(int days) { return 1000L*3600*24*days; } 
</pre></blockquote>
<p>
?????????
</p>
<blockquote><pre>
static final long MILLISECONDS_PER_DAY = 24L*3600*1000;
long convertDaysToMilliseconds(int days) { return days * MILLISECONDS_PER_DAY; } 
</pre></blockquote>

    
<h3><a name="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW">IM: ??????????????????????????????????????????????????????????????? (IM_AVERAGE_COMPUTATION_COULD_OVERFLOW)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????2????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????????????????)???
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????<code>(low+high)/2</code> ???????????? <code>(low+high) &gt;&gt;&gt; 1</code> ??????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????
Martin Buchholz ??? <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6412541">JDK ????????????????????????????????????????????????????????????</a>???
Joshua Bloch ??? <a href="http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html">?????????????????????????????????????????????</a>???
</p>

    
<h3><a name="IM_BAD_CHECK_FOR_ODD">IM: ?????????????????????????????????????????? (IM_BAD_CHECK_FOR_ODD)</a></h3>


<p>
?????????????????????<code>x % 2 == 1</code> ????????????????????????????????????????????????????????????????????? (???????????????<code>(-5) % 2 == -1</code>) ??????????????????????????????
????????????????????????????????????????????????<code>x &amp; 1 == 1</code> ????????? <code>x % 2 != 0</code> ???????????????????????????????????????????????????
</p>

    
<h3><a name="INT_BAD_REM_BY_1">INT: 1?????????????????????????????? (INT_BAD_REM_BY_1)</a></h3>


<p>
???????????? <code>(exp % 1)</code> ?????????0?????????????????????????????????????????????
?????????????????????<code>(exp &amp; 1)</code> ????????? <code>(exp &amp; 2)</code> ?????????????????????????????????
</p>

    
<h3><a name="INT_VACUOUS_BIT_OPERATION">INT: ???????????????????????????????????????????????? (INT_VACUOUS_BIT_OPERATION)</a></h3>


<p>
????????????????????????????????????????????????????????? (AND???OR???XOR) ?????? (???????????? <code>v & 0xffffffff</code>)???
</p>

    
<h3><a name="INT_VACUOUS_COMPARISON">INT: ?????????????????????????????? (INT_VACUOUS_COMPARISON)</a></h3>


<p>
?????????????????????????????????????????????????????? (???????????? <code>x &lt;= Integer.MAX_VALUE</code>)??? 
</p>

    
<h3><a name="MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">MTIA: Servlet ???????????????????????????????????????????????????????????????????????? (MTIA_SUSPECT_SERVLET_INSTANCE_FIELD)</a></h3>


<p>
Servlet??????????????????????????????????????????????????????????????????????????????????????????
Servlet ????????????1????????????????????????????????? Java EE ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">MTIA: Struts Action ??????????????????????????????????????????????????????????????? (MTIA_SUSPECT_STRUTS_INSTANCE_FIELD)</a></h3>


<p>
Struts Action ??????????????????????????????????????????????????????????????????????????????????????????
Struts Action ????????????1????????????????????????????????? Struts ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_DEREFERENCE_OF_READLINE_VALUE">NP: readLine ???????????????????????? null ??????????????????????????????????????????????????? (NP_DEREFERENCE_OF_READLINE_VALUE)</a></h3>


<p>
<code>readLine</code> ???????????????????????? null ?????????????????????????????????????????????????????????
<code>readLine</code> ???????????????????????????????????????????????????????????????????????? null ??????????????????NullPointerException ?????????????????????
</p>

    
<h3><a name="NP_IMMEDIATE_DEREFERENCE_OF_READLINE">NP: readLine ??????????????????????????????????????????????????? (NP_IMMEDIATE_DEREFERENCE_OF_READLINE)</a></h3>


<p>
<code>readLine</code> ?????????????????????????????????????????????????????????
<code>readLine</code> ???????????????????????????????????????????????????????????????????????? null ??????????????????NullPointerException ?????????????????????
</p>

    
<h3><a name="NP_LOAD_OF_KNOWN_NULL_VALUE">NP: null ???????????????????????????????????? (NP_LOAD_OF_KNOWN_NULL_VALUE)</a></h3>


<p>
??????????????????????????????????????????????????? null ???????????????????????????????????????  null ??????????????????????????????????????????
????????????????????????????????????????????????????????? (??????????????????????????????????????????????????????????????????????????????????????? null ???????????????  null ??????????????????????????????????????????)???
</p>

    
<h3><a name="NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">NP: ????????????????????????????????? nullness ?????????????????????????????????????????? (NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????? @Nullable ????????????????????????????????????????????????????????????????????????????????????????????????????????? @Nonnull ??????????????????????????????????????????????????????????????????????????????
?????????????????????????????? null ?????????????????????????????????????????????????????????
</p>

      
<h3><a name="NP_METHOD_RETURN_RELAXING_ANNOTATION">NP: ??????????????????????????? nullness ?????????????????????????????????????????? (NP_METHOD_RETURN_RELAXING_ANNOTATION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????? @Nonnull ?????????????????????????????????????????????????????????????????????????????????????????????  @Nullable ????????? @CheckForNull ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????? null ??????????????????????????????????????????????????????
</p>

      
<h3><a name="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">NP: null ????????????????????????????????????????????????????????????????????????????????? (NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE)</a></h3>


<p>
????????????????????????????????? null ??????????????????????????????????????????????????????????????????????????? null ??????????????????????????????????????????
?????????????????????????????? NullPointerException ??????????????????????????????????????????
</p>

    
<h3><a name="NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">NP: null ???????????????????????????????????????????????????????????????????????????????????? (NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE)</a></h3>


<p>
?????????????????????????????????????????????null ????????????????????? NullPointerException ?????????????????????
??????????????????????????????????????????????????????????????????NullPointerException ?????????????????????????????????????????????????????????????????????????????????
???????????????????????? FindBugs ?????????????????????????????????
?????????????????? null ???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<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>


<p>
????????????????????????????????? ??? null ??????????????????????????????????????????????????????????????????????????????????????????????????? null ???????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">NP: ??????????????????????????? public ????????? protected ?????????????????????????????? (NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3>


<p>
?????????????????????????????? null ???????????????????????????????????????????????? public ????????? protected ?????????????????? null ??????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? NullPointerException ?????????????????????
</p>

    
<h3><a name="NS_DANGEROUS_NON_SHORT_CIRCUIT">NS: ????????????????????????????????????????????? (NS_DANGEROUS_NON_SHORT_CIRCUIT)</a></h3>


<p>
????????????????????????????????? (&amp;&amp; ??? ||) ??????????????????????????? (&amp; ??? |) ??????????????????????????????????????????
??????????????????????????????????????????????????????????????? (??????????????????????????????????????????????????????????????????) ?????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????????????????<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.22.2">the Java Language Specification</a> ??????????????????????????????
</p>

    
<h3><a name="NS_NON_SHORT_CIRCUIT">NS: ???????????????????????????????????? (NS_NON_SHORT_CIRCUIT)</a></h3>


<p>
????????????????????????????????? (&amp;&amp; ??? ||) ??????????????????????????? (&amp; ??? |) ??????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????????????????<a href="http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.22.2">the Java Language Specification</a> ??????????????????????????????
</p>

    
<h3><a name="PZLA_PREFER_ZERO_LENGTH_ARRAYS">PZLA: null ?????????????????????0??????????????????????????????????????? (PZLA_PREFER_ZERO_LENGTH_ARRAYS)</a></h3>


<p>
?????????????????????  (???????????????????????????????????????) ?????????????????? null ???????????????????????????0????????? ???????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????? null ???????????????????????????????????????????????????
???????????????<code>File.listFiles()</code> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? null ??????????????????
</p>

    
<h3><a name="QF_QUESTIONABLE_FOR_LOOP">QF: ?????????????????????????????????????????????????????? for ????????? (QF_QUESTIONABLE_FOR_LOOP)</a></h3>


<p>
??????????????? for ????????????????????????????????????????????????????????????????????????
??????????????? for ???????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE">RCN: ??? null ?????? null ???????????????????????? (RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE)</a></h3>


<p>
????????????????????????null ????????????????????????????????????????????? null ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">RCN: 2?????? null ????????????????????? (RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES)</a></h3>


<p>
???????????????????????????????????????????????? null ?????????????????????2????????????????????????????????????????????????
</p>

    
<h3><a name="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">RCN: null ??????????????????????????????????????????????????? null ???????????? (RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE)</a></h3>


<p>
???????????????????????? null ??????????????????????????????????????????????????? null ??????????????????????????????
</p>

    
<h3><a name="RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">RCN: null ???????????????????????????????????? null ???????????? (RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE)</a></h3>


<p>
????????????????????????null ???????????????????????????????????? null ??????????????????????????????
</p>

    
<h3><a name="REC_CATCH_EXCEPTION">REC: ????????????????????????????????????????????????????????????????????? (REC_CATCH_EXCEPTION)</a></h3>


<p>
????????????????????????????????????????????????????????????????????? try-catch ??????????????????????????????????????????????????? try ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????? catch ???????????????????????????????????????????????????????????????????????????????????????????????? <code>try { ... } catch (Exception e) { something }</code> ????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????? RuntimeException ????????????????????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
try {
    ...
} catch (RuntimeException e) {
    throw e;
} catch (Exception e) {
    ... deal with all non-runtime exceptions ...
}
</pre></blockquote>

    
<h3><a name="RI_REDUNDANT_INTERFACES">RI: ????????????????????????????????????????????????????????????????????????????????? (RI_REDUNDANT_INTERFACES)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
    
    
<h3><a name="RV_CHECK_FOR_POSITIVE_INDEXOF">RV: String.indexOf ????????????????????????????????????????????? (RV_CHECK_FOR_POSITIVE_INDEXOF)</a></h3>


<p>
????????????????????? <code>String.indexOf</code> ??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_DONT_JUST_NULL_CHECK_READLINE">RV: readLine ???????????????????????? null ???????????????????????????????????????????????? (RV_DONT_JUST_NULL_CHECK_READLINE)</a></h3>


<p>
<code>readLine</code> ??????????????????????????? null ??????????????????????????????????????????????????????
????????????????????????????????????????????? null ?????????????????????????????????????????????????????????
?????? <code>readLine</code> ???????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_REM_OF_HASHCODE">RV: ?????????????????????????????????????????????????????? (RV_REM_OF_HASHCODE)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????2?????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>x.hashCode()%n</code> ??????????????? <code>x.hashCode()&amp;(n-1)</code> ???????????????????????????)???
??????????????????????????????????????????????????????????????????
?????????2?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (???????????? <code>Math.abs(x.hashCode()%n)</code>)???
</p>

    
<h3><a name="RV_REM_OF_RANDOM_INT">RV: ????????????32????????????????????????????????? (RV_REM_OF_RANDOM_INT)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? <code>Random.nextInt(int)</code> ?????????????????????????????????????????????
</p>

    
<h3><a name="RV_RETURN_VALUE_IGNORED_INFERRED">RV: ??????????????????????????????????????????????????????????????????????????????????????????? (RV_RETURN_VALUE_IGNORED_INFERRED)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????<code>String.toLowerCase()</code> ?????????????????????????????????????????? 
</p>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????FindBugs ??????????????? @CheckReturnValue ???????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT">RV: ???????????????????????????????????????????????????????????? (RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????? (????????????????????????????????????????????????) ??????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????
</p>
<p>
- ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<p>
<p>
- ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
- ????????????????????????????????????????????????????????????????????????
</p>
<p>
??????????????????????????????????????????????????????FindBugs ????????????????????????????????????????????????????????????????????????????????????????????? @CheckReturnValue ????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SA_FIELD_DOUBLE_ASSIGNMENT">SA: ?????????????????????????????? (SA_FIELD_DOUBLE_ASSIGNMENT)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
int x,y;
public void foo() {
    x = x = 17;
}
</pre></blockquote>
<p>
??????????????????2????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SA_LOCAL_DOUBLE_ASSIGNMENT">SA: ????????????????????????????????? (SA_LOCAL_DOUBLE_ASSIGNMENT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
public void foo() {
    int x,y;
    x = x = 17;
}
</pre></blockquote>
<p>
?????????????????????2????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SA_LOCAL_SELF_ASSIGNMENT">SA: ????????????????????????????????? (SA_LOCAL_SELF_ASSIGNMENT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<blockquote><pre>
public void foo() {
    int x = 3;
    x = x;
}
</pre></blockquote>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SF_SWITCH_FALLTHROUGH">SF: 1?????? case ????????? case ????????????????????? switch ?????????????????? (SF_SWITCH_FALLTHROUGH)</a></h3>


<p>
????????????????????????1?????? case ????????? case ????????????????????? switch ?????????????????????
????????????break ??? return ????????? case ??????????????????????????????????????????
</p>

    
<h3><a name="SF_SWITCH_NO_DEFAULT">SF: default ????????? switch ?????????????????? (SF_SWITCH_NO_DEFAULT)</a></h3>


<p>
????????????????????????default ????????? switch ?????????????????????
????????????default ???????????????????????????????????????
</p>
<p>
?????????????????????????????????????????????????????????????????????default ???  switch ???????????????????????????????????????????????? break ???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">ST: ???????????????????????????????????? static ????????????????????????????????? (ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD)</a></h3>


<p>
??????????????????????????????????????????static ???????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">Se: ???????????????????????????????????? private ??? readResolve ???????????? (SE_PRIVATE_READ_RESOLVE_NOT_INHERITED)</a></h3>


<p>
?????????????????????private ??? <code>readResolve</code> ???????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS">Se: Serializable ????????????????????? transient ??????????????? (SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS)</a></h3>


<p>
?????????????????????transient ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? transient ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
</p>

    
<h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">TQ: ??????????????????????????????????????????????????????????????????????????????????????? (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">TQ: ???????????????????????????????????????????????????????????????????????????????????? (TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UC_USELESS_CONDITION">UC: ???????????????????????? (UC_USELESS_CONDITION)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UC_USELESS_CONDITION_TYPE">UC: ????????????????????????????????????????????? (UC_USELESS_CONDITION_TYPE)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UC_USELESS_OBJECT">UC: ??????????????????????????????????????????????????? (UC_USELESS_OBJECT)</a></h3>


<p>
???????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>- ???????????????????????????????????????????????????</p>
<p>- ????????????????????????????????????????????????????????????</p>
<p>- ???/?????????????????????????????????????????????????????????????????????</p>

    
<h3><a name="UC_USELESS_OBJECT_STACK">UC: ?????????????????????????????????????????????????????????????????? (UC_USELESS_OBJECT_STACK)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UC_USELESS_VOID_METHOD">UC: ????????????????????????????????? void ???????????? (UC_USELESS_VOID_METHOD)</a></h3>


<p>
?????????????????????????????????????????? void ????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????
</p>
<p>
- ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
</p>
<p>
- ???????????????????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UCF_USELESS_CONTROL_FLOW">UCF: ????????????????????????????????? (UCF_USELESS_CONTROL_FLOW)</a></h3>


<p>
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
???????????????????????? ?????? <code>if</code> ??????????????????????????????
</p>
<blockquote><pre>
if (argv.length == 0) {
    // TODO: handle this case
}
</pre></blockquote>

    
<h3><a name="UCF_USELESS_CONTROL_FLOW_NEXT_LINE">UCF: ???????????????????????????????????????????????????????????? (UCF_USELESS_CONTROL_FLOW_NEXT_LINE)</a></h3>


<p>
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
?????????????????????????????? <code>if</code> ?????????????????????????????????????????????????????????????????????
</p>
<blockquote><pre>
if (argv.length == 1);
    System.out.println("Hello, " + argv[0]);
</pre></blockquote>

    
<h3><a name="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">UrF: ????????????????????? public ????????? protected ??????????????? (URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD)</a></h3>


<p>
???????????????????????????????????????????????????????????? 
?????????????????????public ??? protected ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">UuF: ???????????? public ????????? protected ??????????????? (UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD)</a></h3>


<p>
?????????????????????????????????????????????????????????
?????????????????????public ??? protected ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">UwF: ????????????????????????????????????????????????????????????????????? null ????????????????????? null ???????????????????????? (UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR)</a></h3>


<p>
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????null ????????????????????????????????????
????????????????????????????????????????????????null ????????????????????? null ???????????????????????????
???????????????????????????????????????????????????????????? NullPointerException ???????????????????????????????????????????????????????????????????????????
</p>

    
<h3><a name="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">UwF: ??????????????????????????? public ????????? protected ??????????????? (UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD)</a></h3>


<p>
?????? public ????????? protected ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????? (??????????????????????????????????????????????????????)??????????????????????????????????????????????????????
</p>

    
<h3><a name="XFB_XML_FACTORY_BYPASS">XFB: XML????????????????????????????????????????????????????????????????????????????????????????????? (XFB_XML_FACTORY_BYPASS)</a></h3>


<p>
????????????????????????XML???????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<br>
????????????????????????????????????????????????
</p>
<ul>
  <li>javax.xml.parsers.DocumentBuilderFactory</li>
  <li>javax.xml.parsers.SAXParserFactory</li>
  <li>javax.xml.transform.TransformerFactory</li>
  <li>org.w3c.dom.Document.create<i>XXXX</i></li>
</ul>

    


<hr> <p> 
<script language="JavaScript" type="text/javascript"> 
<!---//hide script from old browsers 
document.write( "Last updated "+ document.lastModified + "." ); 
//end hiding contents ---> 
</script> 
<p> Send comments to <a class="sidebar" href="mailto:findbugs@cs.umd.edu">findbugs@cs.umd.edu</a> 
<p> 
<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" alt="FindBugs on SourceForge.net" /></a>
</td></tr></table>
</body></html>