<!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> </td></tr> <tr><td><b>Docs and Info</b></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="findbugs2.html">FindBugs 2.0</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="demo.html">Demo and data</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="users.html">Users and supporters</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="http://findbugs.blogspot.com/">FindBugs blog</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="factSheet.html">Fact sheet</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="manual/index.html">Manual</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="ja/manual/index.html">Manual(ja/日本語)</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="FAQ.html">FAQ</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="bugDescriptions.html">Bug descriptions</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="bugDescriptions_ja.html">Bug descriptions(ja/日本語)</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="bugDescriptions_fr.html">Bug descriptions(fr)</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="mailingLists.html">Mailing lists</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="publications.html">Documents and Publications</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="links.html">Links</a></font></td></tr> <tr><td> </td></tr> <tr><td><a class="sidebar" href="downloads.html"><b>Downloads</b></a></td></tr> <tr><td> </td></tr> <tr><td><a class="sidebar" href="http://www.cafeshops.com/findbugs"><b>FindBugs Swag</b></a></td></tr> <tr><td> </td></tr> <tr><td><b>Development</b></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/p/findbugs/bugs/">Open bugs</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="reportingBugs.html">Reporting bugs</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="contributing.html">Contributing</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="team.html">Dev team</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="api/index.html">API</a> <a class="sidebar" href="api/overview-summary.html">[no frames]</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="Changes.html">Change log</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="http://sourceforge.net/projects/findbugs">SF project page</a></font></td></tr> <tr><td><font size="-1"> <a class="sidebar" href="http://code.google.com/p/findbugs/source/browse/">Browse source</a></font></td></tr> <tr><td><font size="-1"> <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 & SWT.SELECTED) > 0)</code> ?????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>SWT.SELECTED</code> ???????????????) ????????????????????????????????????????????? <code>SWT.SELECTED</code> ???????????????????????????????????????????????????????????? <code>SWT.SELECTED</code> ?????????????????????????????????'> 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 > val2 ? 1 : val1 < 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<String> 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 << 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 < 4; i++) result = ((result << 8) + b[i]); </pre></blockquote> <p> ???????????????????????????????????????????????????????????????????????? </p> <blockquote><pre> int result = 0; for(int i = 0; i < 4; i++) result = ((result << 8) + (b[i] & 0xff)); </pre></blockquote> <h3><a name="BIT_AND">BIT: ???????????????????????????????????? (BIT_AND)</a></h3> <p> ????????????????????????<i>(e & 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 & 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> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????? ("&") ?????????????????????????????????????????? ("|") ??????????????????????????? </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 << 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 < 4; i++) { result = ((result << 8) | b[i]); } </pre></blockquote> <p> ???????????????????????????????????????????????????????????????????????? </p> <blockquote><pre> int result = 0; for(int i = 0; i < 4; i++) { result = ((result << 8) | (b[i] & 0xff)); } </pre></blockquote> <h3><a name="BIT_SIGNED_CHECK_HIGH_BIT">BIT: ????????????????????????????????????????????? (BIT_SIGNED_CHECK_HIGH_BIT)</a></h3> <p> ????????????????????????<code>((event.detail & SWT.SELECTED) > 0)</code> ?????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? (???????????????<code>SWT.SELECTED</code> ???????????????) ????????????????????????????????????????????? <code>SWT.SELECTED</code> ???????????????????????????????????????????????????????????? <code>SWT.SELECTED</code> ?????????????????????????????????'> 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 << 8 + y) ???????????????????????????????????? ????????????????????????????????????????????????????????? (x << 8) + y ????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????? x << (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> ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ("<")?????????????????????????????? ?????????????????????????????????????????????????????? ???????????????<code>formatter.format("%<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<String></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 & 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 < 0) { new IllegalArgumentException("x must be nonnegative"); } </pre></blockquote> <p> ???????????????????????????????????????????????????????????????????????????????????????????????? </p> <blockquote><pre> if (x < 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 & 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 & 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 < field.length; ++i) { s = s + field[i]; } // This is better StringBuffer buf = new StringBuffer(); for (int i = 0; i < 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) < .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) >>> 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 & 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 & 1)</code> ????????? <code>(exp & 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 <= 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> ????????????????????????????????? (&& ??? ||) ??????????????????????????? (& ??? |) ?????????????????????????????????????????? ??????????????????????????????????????????????????????????????? (??????????????????????????????????????????????????????????????????) ????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? </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> ????????????????????????????????? (&& ??? ||) ??????????????????????????? (& ??? |) ?????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? </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()&(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&type=5" width="210" height="62" border="0" alt="FindBugs on SourceForge.net" /></a> </td></tr></table> </body></html>