Bug: PerfmSingleGraphPanel$RSCategory defines equals and uses Object.hashCode() Pattern id: HE_EQUALS_USE_HASHCODE, type: HE, category: BAD_PRACTICE ½âÊÍ£º
ÖØÔØÁËequals·½·¨£¬È´Ã»ÓÐÖØÔØhashCode·½·¨£¬Èç¹ûʹÓÃobject×Ô¼ºµÄhashCode£¬ÎÒÃÇ¿É ÒÔ´ÓJDKÔ´´úÂë¿ÉÒÔ¿´µ½objectµÄhashCode·½·¨ÊÇnativeµÄ£¬ËüµÄÖµÓÉÐéÄâ»ú·ÖÅ䣨ijÖÖ Çé¿öÏ´ú±íÁËÔÚÐéÄâ»úÖеĵØÖ·»òÕßΨһ±êʶ£©£¬Ã¿¸ö¶ÔÏó¶¼²»Ò»Ñù¡£ËùÒÔÕâºÜ¿ÉÄÜÎ¥·´ ¡°EqualsÏàµÈ£¬hashcodeÒ»¶¨ÏàµÈ£»hashcodeÏàµÈ£¬equals²»Ò»¶¨ÏàµÈ¡£¡±³ý·ÇÄã±£Ö¤²»ÔË Óõ½HashMap/HashTableµÈÔËÓÃÉ¢Áбí²éÕÒÖµµÄÊý¾Ý½á¹¹ÖС£·ñÔò£¬·¢ÉúÈκÎÊÂÇé¶¼ÊÇÓÐ¿É Äܵġ£
¹ØÓÚºÎʱ¸Äдhashcode£¬Çë²Î¿¼£ºÔÚÖØÐ´Á˶ÔÏóµÄequals·½·¨ºó£¬»¹ÐèÒªÖØÐ´hashCode ·½·¨Âð?
¹ØÓÚ±àд¸ßÖÊÁ¿µÄequals·½·¨£º
1.ÏÈʹÓÃ==²Ù×÷·û¼ì²éÊÇ·ñÊÇͬһ¸ö¶ÔÏó£¬==¶¼ÏàµÈ£¬ÄÇôÂß¼ÏàµÈ¿Ï¶¨³ÉÁ¢£» 2.È»ºóʹÓÃinstanceof²Ù×÷·û¼ì²é¡°²ÎÊýÊÇ·ñΪÕýÈ·µÄÀàÐÍ¡±£» 3.°Ñ²ÎÊýת»»³ÉÕýÈ·µÄÀàÐÍ£»
4.¶ÔÓÚ¸ÃÀàÖеķǻù±¾ÀàÐͱäÁ¿£¬µÝ¹éµ÷ÓÃequals·½·¨£»
5.±äÁ¿µÄ±È½Ï˳Ðò¿ÉÄÜ»áÓ°Ïìµ½equals·½·¨µÄÐÔÄÜ£¬Ó¦¸Ã×îÏȱȽÏ×îÓпÉÄܲ»Ò»Öµıä Á¿£¬»òÕßÊÇ¿ªÏú×îµÍµÄ±äÁ¿¡£
µ±Äã±àдÍê³Éequals·½·¨Ö®ºó£¬Ó¦¸ÃÎÊ×Ô¼ºÈý¸öÎÊÌ⣺ËüÊÇ·ñÊǶԳƵġ¢´«µÝµÄ¡¢Ò» Öµģ¿
½â¾ö·½·¨£º
³ý·ÇÄã±£Ö¤²»ÔËÓõ½HashMap/HashTableµÈÔËÓÃÉ¢Áбí²éÕÒÖµµÄÊý¾Ý½á¹¹ÖУ¬ÇëÖØÐ´ hashcode·½·¨¡£
9. NM_CONFUSING
Bug: Confusing to have methods
xxx.SellerBrandServiceImpl.getAllGrantSellerBrandsByBrandId(long) and xxx.DefaultSellerBrandManager.getALLGrantSellerBrandsByBrandId(long) Pattern id: NM_CONFUSING, type: Nm, category: BAD_PRACTICE
The referenced methods have names that differ only by capitalization.
½âÊÍ£º
ͬһ¸ö°üÁ½¸öÀàÖÐÓÐһģһÑùµÄÁ½¸ö·½·¨£¨°üÀ¨²ÎÊý£© ½â¾ö·½·¨£º
×îºÃ¿ÉÒÔÐÞ¸ÄΪ²»Ò»ÑùµÄ·½·¨Ãû³Æ
10. MF_CLASS_MASKS_FIELD
Bug: Field PDHSubCardInstanceDialogCommand.m_instance masks field in superclass ViewNEProperity
Pattern id: MF_CLASS_MASKS_FIELD, type: MF, category: CORRECTNESS
This class defines a field with the same name as a visible instance field in a superclass. This is confusing, and may indicate an error if methods update or access one of the fields when they wanted the other.
½âÊÍ£º
ÕâÊÇʲôÒâË¼ÄØ£¿ÏëÒª×Ö¶ÎÒ²Äܹ»¾ßÓжà̬ÐÔÂð£¿Ì«ÃÔ»óÁË¡£
µ±ÄãÏëÒª¸üÐÂÒ»¸öm_instanceʱ£¬ÄãÒª¸üÐÂÄĸö£¿ÄãÓõ½Ëüʱ£¬ÄãÖªµÀÄĸöÓÖ±»¸üÐÂÁË£¿ ½â¾ö·½·¨£º
ҪôȥµôÆäÖÐÒ»¸ö×ֶΣ¬ÒªÃ´ÖØÐÂÃüÃû¡£
11. NM_CLASS_NAMING_CONVENTION
Bug: The class name crossConnectIndexCollecter doesn't start with an upper case letter ½âÊÍ£º
Pattern id: NM_CLASS_NAMING_CONVENTION, type: Nm, category: BAD_PRACTICE ¿´µ½ÕâÑùµÄÃüÃû·½Ê½£¬ÎÒµÚÒ»¸ö·´Ó³¾ÍÊÇÓеãÔγµ£¡ ½â¾ö·½·¨£º
ÀàÃûµÚÒ»¸ö×Ö·ûÇë´óд¡£
12. RE_POSSIBLE_UNINTENDED_PATTERN
Bug: \
Pattern id: RE_POSSIBLE_UNINTENDED_PATTERN, type: RE, category: CORRECTNESS ½âÊÍ£º
StringµÄsplit·½·¨´«µÝµÄ²ÎÊýÊÇÕýÔò±í´ïʽ£¬ÕýÔò±í´ïʽ±¾ÉíÓõ½µÄ×Ö·ûÐèҪתÒ壬È磺¾ä
µã·ûºÅ¡°.¡±£¬ÃÀÔª·ûºÅ¡°$¡±£¬³Ë·½·ûºÅ¡°^¡±£¬´óÀ¨ºÅ¡°{}¡±£¬·½À¨ºÅ¡°[]¡±£¬Ô²À¨ºÅ¡°()¡± £¬ÊúÏß¡°|¡±£¬ÐǺš°*¡±£¬¼ÓºÅ¡°+¡±£¬Îʺš°?¡±µÈµÈ£¬ÕâЩÐèÒªÔÚÇ°Ãæ¼ÓÉÏ¡° \\\\¡±×ªÒå·û¡£ ½â¾ö·½·¨£º
ÔÚÇ°Ãæ¼ÓÉÏ¡°\\\\¡±×ªÒå·û¡£
13.IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OU TER_METHOD
ÍⲿÀࣺ
ÄÚ²¿Àࣺ
??
Bug: Ambiguous invocation of either an outer or inherited method JExtendDialog.onOK() Pattern id: IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD, type: IA, category: STYLE ½âÊÍ£º
TargetSetupDialogÊÇJExtendDialogµÄ×ÓÀ࣬JExtendDialogÓÐÒ»¸öonOK·½·¨£¬µ«ÊÇJExtendDialog µÄÍⲿÀàÒ²ÓÐÒ»¸öonOK·½·¨£¬µ½µ×Õâ¸öonOK·½·¨µ÷ÓõÄÊÇËü¸¸ÀàonOK·½·¨»¹Êǵ÷ÓÃËü ÍⲿÀàonOK·½·¨ÄØ£¬Õâ²»ÃâÈÃÈËÎó½â¡£
µ±È»ÕⲢûÓбàÒë´íÎó£¬Êµ¼ÊÉÏÓÅÏȵ÷ÓõÄÊǸ¸ÀàJExtendDialogµÄonOK·½·¨£¬Èç¹û°Ñ JExtendDialogµÄonOK·½·¨È¥µô£¬Ëüµ÷ÓõľÍÊÇÍⲿÀàonOK·½·¨£¬Õâ¸öʱºò²»ÄÜд³É this.onOK£¬ÒòΪ´ËʱµÄthis²¢²»´ú±íÍⲿÀà¶ÔÏó¡£ ½â¾ö·½·¨£º
Èç¹ûÒªÒýÓÃÍⲿÀà¶ÔÏ󣬿ÉÒÔ¼ÓÉÏ¡°outclass.this¡±¡£ Èç¹ûÒªÒýÓø¸ÀàµÄonOK·½·¨£¬ÇëʹÓÃsuper.onOK()¡£
14. DM_FP_NUMBER_CTOR
Bug: Method
OnlineLicenseDAOTest.testUpdateOnlineLicenseByOnlineMerchantId() invokes inefficient Double.valueOf(double) constructor; use OnlineLicenseDAOTest.java:[line 81] instead
Pattern id: DM_FP_NUMBER_CTOR, type: Bx, category: PERFORMANCE
Using new Double(double) is guaranteed to always result in a new object whereas Double.valueOf(double) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster.
Ïà¹ØÍÆ¼ö£º