Bug: Doomed test for equality to NaN
Pattern id: FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER, type: FE, category: CORRECTNESS ½âÊÍ£º
ÎÒÒ²¿ªÑÛ½çÁË£¬ÕÕ°áFindbugsµÄÀí½â£º
´ó¸ÅÒâ˼¾ÍÊÇ˵NanºÜÌØÊ⣨±íʾ䶨ÒåºÍ²»¿É±íʾµÄÖµ£©£¬Ã»ÓÐÈκÎÖµ¸úËüÏàµÈ£¬°üÀ¨Ëü ×ÔÉí£¬ËùÒÔx == Double.NaNÓÀÔ¶·µ»Øfalse¡£ ½â¾ö·½·¨£º
Èç¹ûÒª¼ì²éxÊÇÌØÊâµÄ£¬²»ÊÇÒ»¸öÊýÖµ£¬ÇëÓÃDouble.isNaN(x)·½·¨¡£
26. FI_EMPTY
Bug: FilterIPConfigDialog.finalize() is empty and should be deleted Pattern id: FI_EMPTY, type: FI, category: BAD_PRACTICE ½âÊÍ£º
¿ÕµÄfinalize·½·¨£¬ÓÐʲôÓã¿
¸ù¾ÝJDKÎĵµ£¬ finalize() ÊÇÒ»¸öÓÃÓÚÊÍ·Å·Ç Java ×ÊÔ´µÄ·½·¨¡£µ«ÊÇ£¬ JVM ÓкܴóµÄ¿ÉÄܲ» µ÷ÓöÔÏóµÄfinalize() ·½·¨£¬Òò´ËºÜÄÑÖ¤Ã÷ʹÓø÷½·¨ÊÍ·Å×ÊÔ´ÊÇÓÐЧµÄ¡£ ½â¾ö·½·¨£º
ɾ³ýµôfinalize·½·¨
27.REC_CATCH_EXCEPTION
Bug: Exception is caught when Exception is not thrown
Pattern id: REC_CATCH_EXCEPTION, type: REC, category: STYLE ½âÊÍ£º
ÎÒ¾õµÃÓеãÃÔ»ó£¬ÓÐЩcatch (Exception e)²¢Ã»Óб»Findbugs²¶×½µ½£¬¿ªÊ¼ÒÔΪËüµÄÒâ˼ÊÇ try catchÀïûÓÐÈκÎÒì³£µÄ²úÉú£¬°üÀ¨RuntimeException£¬µ«ÊǺóÀ´ÎÒдÁËÀý×ÓÖ¤Ã÷²¢²»ÊÇ Õâô»ØÊ¡£
×ÜÖ®£¬ËüµÄÒâ˼Ӧ¸ÃÊÇ˵JVM¶ÔRuntimeExceptionÓÐͳһµÄ²¶»ñ»úÖÆ£¨Ò»°ã¶¼ÊÇ´òÓ¡Òì³£ Õ»ÐÅÏ¢£¬È»ºóÏòÍâÅ×£¬Ã»ÓÐÓöµ½ExceptionÏ߳̾ÍËÀµô£¬EDTÏ̳߳ýÍ⣩£¬Äã¸ãÒ»¸öcatch (Exception e)ÕâÑùÒ²°ÑRuntimeException¾Í²¶»ñÁË¡£µ«ÊÇÈç¹ûÄãµÄ´¦Àí»úÖÆÖÐûÓÐÕë¶ÔÕâЩ Òì³££¬ÄǾͿÉÄÜÓÐÎÊÌâÁË¡£Í¨³£À´Ëµ£¬ºÜ¶àÓ¦ÓóÌÐò¶¼°ÑÒì³£¼Ç¼ÔÚÈÕÖ¾Ö®ÖУ¬µ«ÊÇÎÒ¾õµÃ Ò²Ó¦¸Ãͬʱ´òÓ¡ÔÚµ÷ÊÔÆÁÄ»ÖУ¬ÕâÑùÓÐÀûÓÚ¿ª·¢ÈËÔ±µ÷ÊÔ¡£
±ÈÈçÉÏÃæµÄ³ÌÐò£¬¼ÙÈç·¢ÉúÁË¿ÕÖ¸ÕëÒì³££¬ÄãÖ»ÓÐÈ¥ÈÕÖ¾ÖвÅÄÜ¿´µ½£¬Õâ¶ÔÎÒÃǵ÷ÊÔÈËÔ±À´ ˵ºÜ²»·½±ãµÄ¡£ ½â¾ö·½·¨£º
ÆäʵÕâÑùдҲûÓÐÎÊÌ⣨³ý·ÇÄãÓÐÒ⣩£¬ÓÐʱºòÎÒÃÇȷʵÐèÒª²¶»ñRuntimeException£¬±ÈÈç ÎÒÃÇÓÐÒ»¸öÅú´¦Àí£¬Õâ¸öÈÎÎñºÜÖØÒª£¬±ØÐ뱣֤ij¸öÈÎÎñ³öÁËÎÊÌâ²»ÄÜÓ°ÏìÆäËûµÄÈÎÎñ£¬Õâ ¸öʱºò¾Í¿ÉÒÔÔÚforÑ»·ÄÚ²¶»ñRuntimeException£¬³öÏÖÁËÒì³£»¹¿ÉÒÔcontinue¡£ ²»¹ýÉÏÃæµÄÀý×Ó×îºÃÔÙ°ÑÒì³£ÐÅÏ¢´òÓ¡µ½µ÷ÊÔÆÁÄ»ÉÏ¡£
28. DM_GC
Bug: DBExportTask2.exportDBRecords(DBExportProperty, String) forces garbage collection; extremely dubious except in benchmarking code
Pattern id: DM_GC, type: Dm, category: PERFORMANCE ½âÊÍ£º ÓÐÁ½µã£º
1. System.gc()Ö»Êǽ¨Ò飬²»ÊÇÃüÁJVM²»Äܱ£Ö¤Á¢¿ÌÖ´ÐÐÀ¬»ø»ØÊÕ¡£ 2. System.gc()±»ÏÔʾµ÷ÓÃʱ£¬ºÜ´ó¿ÉÄܻᴥ·¢Full GC¡£
GCÓÐÁ½ÖÖÀàÐÍ£ºScavenge GCºÍFull GC£¬Scavenge GCÒ»°ãÊÇÕë¶ÔÄêÇá´úÇø£¨EdenÇø£©½øÐÐ GC£¬²»»áÓ°ÏìÀÏÄê´úºÍÓÀÉú´ú£¨PerGen£©£¬ÓÉÓڴ󲿷ֶÔÏó¶¼ÊÇ´ÓEdenÇø¿ªÊ¼µÄ£¬ËùÒÔ Scavenge GC»áƵ·±½øÐУ¬GCËã·¨ËÙ¶ÈÒ²¸ü¿ì£¬Ð§Âʸü¸ß¡£µ«ÊÇFull GC²»Í¬£¬Full GCÊÇ¶Ô Õû¸ö¶Ñ½øÐÐÕûÀí£¬°üÀ¨Young¡¢TenuredºÍPerm£¬ËùÒÔ±ÈScavenge GCÒªÂý£¬Òò´ËÓ¦¸Ã¾¡¿É ÄܼõÉÙFull GCµÄ´ÎÊý¡£ ½â¾ö·½·¨£º
È¥µôSystem.gc()
28. DP_DO_INSIDE_DO_PRIVILEGED
Bug: com.taobao.sellerservice.core.test.BaseTestJunit.autoSetBean() invokes reflect.Field.setAccessible(boolean), which should be invoked from within a doPrivileged block
Pattern id: DP_DO_INSIDE_DO_PRIVILEGED, type: DP, category: BAD_PRACTICE
This code invokes a method that requires a security permission check. If this code will be granted security permissions, but might be invoked by code that does not have security permissions, then the invocation needs to occur inside a doPrivileged block.
´Ë´úÂëµ÷ÓÃÒ»¸ö·½·¨£¬ÐèÒªÒ»¸ö°²È«È¨ÏÞ¼ì²é¡£Èç¹û´Ë´úÂ뽫±»ÊÚÓ谲ȫȨÏÞ£¬µ«¿ÉÄÜÊÇÓÉ ´úÂë²»¾ßÓа²È«È¨ÏÞµ÷Óã¬ÔòÐèÒªµ÷Ó÷¢ÉúÔÚÒ»¸ödoPrivilegedµÄ¿é¡£
30. MS_SHOULD_BE_FINAL
Bug: IPv4Document.m_strInitString isn't final but should be Pattern id: MS_SHOULD_BE_FINAL, type: MS, category: MALICIOUS_CODE ½âÊÍ£º
ʹÓÃpublicºÍprotected£¬±ðµÄ°ü¿ÉÒÔÇáÒ×ÐÞ¸ÄËü£¬Èç¹ûÄã²»ÏëËü±»Ð޸ģ¬ÇëʹÓÃfinal¡£ ·â×°ºÜÖØÒª£¬²»¹ÜÊÇ´Óά»¤·½ÃæºÍ¼¼Êõ·½ÃæÀ´Ëµ£¬¶¼ºÜÖØÒª£¬ÎÒ²»Ã÷°×ΪÉñÂíÓÐÄÇô¶àµÄÈË °Ñ±äÁ¿¶¼Ð´³ÉpublicµÄ£¨¾ÍËãÒª¸ø±ðÈ˹²Ïí£¬Ò²ÒªÌṩget·½·¨£©£¬ÌرðÊÇÔÚ²¢·¢»·¾³ÖУ¬ ÌØ±ðÌØ±ð×¢ÒâÀà±äÁ¿µÄ¹²Ïí£¬¶øÇÒÌØ±ðÌØ±ðÌØ±ð×¢Òâ¹²ÏíµÄÕâ¸ö±äÁ¿ÊÇ·ñÊÇḬ̈߳²È«µÄ¡£ ½â¾ö·½·¨£º ¼ÓÉÏfinal
31. NM_FIELD_NAMING_CONVENTION
Bug: The field name TopoControlPaneII.SyncSelection doesn't start with a lower case letter Pattern id: NM_FIELD_NAMING_CONVENTION, type: Nm, category: BAD_PRACTICE ½âÊÍ£º
ΪÉñÂí×Ö¶ÎÊÇ´óд¿ªÍ·µÄ£¿Î¹ÉñÂí£¿Î¹ÉñÂí°¡£¿ ½â¾ö·½·¨£º
½¨Òé°´ÕÕsun¹æ¶¨µÄÃüÃû·½Ê½