FindBugsÊÇÒ»¿î¾²Ì¬·ÖÎöEclipseÈí¼þרÓù¤¾ß£¬FindBugsÄܹ»°ïÖú´ó¼Ò²éÕÒJavaÈí¼þÖпÉÄÜ·¢ÉúµÄbug¡£Á¢¼´²éÕÒ¿ÉÄܳöÏֵĿÕÒýÈë¡¢¶àÓà×Ô±äÁ¿µÈ²»ÕýÈ·¡£
1 ¡¢ÕÒµ½hash equals²»Ò»ÖÂ
ÕÒÓëequals()ºÍhashCode()µÄÍê³ÉÓйصÄһЩÎÊÌâ¡£ÕâÁ©·½·¨ÖÁ¹ØÖØÒª£¬ÓÉÓÚ¾ø´ó¶àÊý¸ù¾Ý½áºÏµÄÀà---List¡¢Map¡¢SetµÈ¶¼µ÷ÓÃËûÃÇ¡£
2¡¢¼ìÑ飺ºöÊÓ·½·¨´«²Î
Õâһ̽²âÆ÷²éÕÒ±àÂëÖкöÊÓÁ˲»Ó¦¸Ã±»ºöÂԵķ½·¨´«²ÎµÄÇøÓò¡£ÕâЩÎÊÌâµÄÒ»¸öÆÕ±éÊÂÀýÒªÔÚµ÷ÓÃString·½·¨Ê±¡£
ÕâÒ»²»ÕýÈ·±È½Ï³£¼û¡£ÓÚµÚ2ÐУ¬³ÌÐòÔ³¾õµÃËûÒÑÓÃp¸ü»»ÁË×Ö·û´®ÖÐËùÓÐb¡£µÄÈ·ÊÇÕâÑù£¬¿ÉÊÇËûÍüÁË×Ö·û´®ÊÇÎÞ·¨±äµÃ¡£È«²¿ÕâÖÖ·½·¨¶¼»Øµ½Ò»¸öÐÂ×Ö·û´®£¬¶ø´Ó²»¸ü¸ÄÐÅÏ¢µÄ½ÓÊÜÕß¡£
3¡¢¼ìÑ飺NullÖ¸¶ÔÓÚnullµÄ½âÒýÓã¨dereference£©ºÍ¶àÓà½ÏΪ
Õâһ̽²âÆ÷²éÕÒÁ½´óÀàÄÑÌâ¡£Ëü²éÕÒ±àÂë;¾¶¿ÉÄÜ»òÊÇ¿ÉÄܵ¼ÖÂnull±íÕëÒì³£×´¿ö£¬ËüÒ²²éÕÒ¶ÔnullµÄ¶àÓàÏà¶Ô±È½Ï×´¿ö¡£±ÈÈ磬Èç¹ûÁ½±È½ÏÖµ¾ùΪnull£¬ÄÇÑùËûÃDZãÊǶàÓàµÄÕâ¿ÉÄÜ»á˵Ã÷´úÂë´íÎó¡£FindBugsÔÚ¿ÉÒÔÖªµÀÒ»¸öÊýÖµnull¶øÁíÒ»¸öÖµ²»ÒÔnullʱ£¬¼ìÑéÏà½ü´íÎó¡£
4¡¢¼ìÑ飺¸´Î»ÒÔÇ°ÔØÈë×Ö¶ÎÃû
Õâһ̽²âÆ÷̽ѰÔÚ¹¹Ôì·½·¨Öи´Î»Ôø¾±»ÔØÈëµÄ×Ö¶ÎÃû¡£ÕâÒ»²»ÕýÈ·Ò»°ãÊÇÓÉÓ¦ÓÃ×ֶζø·Ç½á¹¹º¯Êýµ÷ÓÃËùÒýÆðµÄ£¬±ÈÈçÔÚ¶ÔÏóÖÐÔØÈëδ³õʼ»¯µÄ×Ö¶ÎÃû¡£
5¡¢È¡Ãû¼ì²é
¶Ô¹æ·¶JavaÖ¸Áî¹æ·¶»¯µÄ¼ì²â£º±äÁ¿Ãû³Æ²»¿É¹ý¶Ì£»·½·¨Ãû×Ö²»¿ÉÌ«³¤£»ÀàÃû×ÖÓ¦¸ÃÒÔСд¿ªÊ¼£»·½·¨ºÍ×Ö¶ÎÓ¦¸ÃÒÔСд¿ªÊ¼£¬µÈ¡£
6¡¢Ã»ÓÐʹÓôúÂë¼ì²é
²éÕÒ´ÓûËùʹÓõÄ˽×ֶκͱ¾µØ±äÁ¿¡¢ÊµÐв»Éϵľä×Ó¡¢´Óûµ÷ÓõÄ˽·½·¨£¬µÈ¡£
7¡¢Ç¶Èë¼ì²é
±ÈÈ磺switch¾ä×ÓÓ¦¸Ã¾ßÓÐdefault¿é£¬ÀíÓ¦·ÀÖ¹Éî²ãǶÈëµÄif¿é£¬²»Ó¦¸Ã¸øÖ÷Òª²ÎÊýÔÙ´Îȡֵ£¬²»Ó¦¸Ã¶ÔdoubleÖµ¿ªÕ¹Ïàͬ½ÏΪ¡£
8¡¢µ¼½ø¾ä×Ó¼ì²é
¼ì²éimport¾ä×ÓÎÊÌ⣬ÀýÈçͬһ¸öÀà±»µ¼½ø2´Î»òÊDZ»µ¼½øjava.langµÄÀàÖС£
9¡¢JUnit¼ì²â¼ì²é
²éÕÒ¹¦ÄܲâÊÔºÍÑéÖ¤·½·¨µÄÌØÊâÄÑÌ⣬±ÈÈç·½·¨Ãû³ÆÇ¡µ±Æ´¶Á£¬¼°Æäsuite()·½·¨ÊÇ·ñstaticºÍpublic¡£
10¡¢×Ö·û´®¼ì²é
ÕÒµ½½â¾ö×Ö·û´®¹ý³ÌÖÐÓöµ½µÄÒÉÄÑÎÊÌ⣬±ÈÈçÖØ¸´×Ö·û´®±êÁ¿£¬µ÷ÓÃString¶ÔÏ󣬶ÔString×Ô±äÁ¿µ÷ÓÃtoString()·½·¨¡£
11¡¢À¨»¡¼ì²é
¼ì²éfor¡¢if¡¢whileºÍelseÓï¾äÊDz»ÊDzÉÓÃÁËÀ¨»¡¡£
12¡¢±àÂë¹æ¸ñ¼ì²é
¼ì²â½Ï³¤µÄ·½·¨¡¢ÓкܶàµÄ·½·¨µÄÀ༰ÆäÖØÐ¹¹½¨µÈ·½ÃæµÄÀàËÆÇé¿ö¡£
13¡¢½áÊøº¯Êý¹«Ê½¼ì²é
±Ï¾¹ÔÚJavaÓïÑÔÖУ¬finalize()·½·¨²¢²»ÊÇÄÇô¹ã·º£¬ËüÃÇʹÓù淶¾¡¹ÜºÜ×Ðϸ£¬µ«ÈËÃǶÔÕâЩÏà¶ÔÐÔ²»Ì«ÊìϤ¡£ÕâÖÖ¼ì²é²éÕÒfinalize()·½·¨µÄһϵÁÐÎÊÌ⣬±ÈÈç¿Õ½áÊøº¯Êý¹«Ê½£¬µ÷ÓñðµÄ·½·¨µÄfinalize()·½·¨£¬¶Ôfinalize()µÄÏÔʽµ÷Ó㬵ȡ£
14¡¢¸´ÖƼì²é
ÓÃÒÔclone()·½·¨µÄй档µ«·²ÖØÐÂд¹ýclone()·½·¨µÄÀà¶¼±ØÐëÒªÍê³ÉCloneable£¬clone()·½·¨Ó¦µ±µ÷ÓÃSuper.clone()£¬¶øclone()·½·¨Ó¦µ±ÉêÃ÷Å׳öÈ¥CloneNotSupportedException³öÏÖÒì³££¬¼´±ãÊÂʵÉϲ¢Ã»ÓÐÅ׳öÒì³££¬Ò²ÐèÒªÕâ°ã¡£
15¡¢ÅººÏ¼ì²é
²éÕÒÀàÖмä¹ý¶àźºÏµÄÕ÷Õ×£¬ÀýÈçµ¼½ø¾ßÌåÄÚÈݹý¶à£»ÔÚ³¬ÖÖÀà»ò²å¿Ú¾Í¹»ÓõÄʱºòÓÃÅÉÉúÀàµÄÖÖÀࣻÀàÖеÄ×ֶΡ¢×Ô±äÁ¿ºÍ·µ»ØÀàÐÍÌ«¶àµÈ¡£
16¡¢³öÏÖÒì³£¼ì²é
¶ÔÓÚÒì³£¼ì²é£º²»Ó¦¸ÃÉêÃ÷¸Ã·½·¨¶øÅ׳öÈ¥java.lang.Exception³öÏÖÒì³££¬²»Ó¦¸Ã½«³öÏÖÒì³£ÓÃÒÔÁ÷¿ØÖÆ£¬²»Ó¦¸Ã²¶×½Throwable£¬µÈ¡£
17¡¢ÈÕÖ¾¼ì²é
²éÕÒjava.util.logging.LoggerµÄ²»ÕýÈ·Ó¦Ó㬰üº¬·ÇÖÕÇé¿ö£¨nonfinal£©¡¢·Ç¾²Ö¹µÄ¼Ç¼Èí¼þ£¬¼°ÔÚÒ»¸öÀຬÓкü¸¸ö¼Ç¼Èí¼þ¡£
18¡¢Open¡ªClose¼ì²é
¼ì²éÎļþºÍͨÐŲãÃæ£¬ÊDz»ÊÇÍüµôCloseµÄÏÖÏó¡£
19¡¢ÆäËû¼ì²é
ÆäËûȱµãÃ÷ϸ¿É²ÎÕÕ£ºÈ±µãÃ÷ϸ¡£
20¡¢½¨Á¢×Ô¼ºµÄ¹æÔò¼¯
Äܹ»½¨Á¢×Ô¼ºµÄ¹æÔò¼¯¡£
¡¾Ó¦Ó÷½·¨¡¿
Ãâ·ÑÏÂÔØÒԺ󣬰ѻº½âѹÁ¦ºóÎļþ¿½±´µ½ $ECLIPSE_HOME/plugins/Ŀ¼Ï£¬ÖØÆôeclipse¼´½øÐÐ×é×°¡£
1¡¢Èí¼þÉèÖãº
×°ºÃÒÔºó£¬ÄÜͨ¹ý Projects gt; Property gt; FindBugs±êʶ¶ÔËü½øÐÐÉ趨¡£É趨·½·¨Òª¸ù¾Ý×Ô¼ºµÄ±ØÐë×÷³öµ÷Õû¡£
ͬʱÔÚ ÄÑÌâ(Proplems)Ŀ¼¶Ô»°¿ò(windows gt; Ö÷ÊÓͼ gt; ÄÑÌâ)µÄFilterÉèÖÃÖУ¬°ÑFindBugsµÄÏà¹ØÑ¡ÔñÏî¶¼checkÉÏ¡£
2¡¢Èí¼þµÄÂäʵ£º
Ñ¡¶¨ ËùÊôÐÂÏîÄ¿£¬Êó±êµã»÷ gt; Find Bugs gt; Find BugsʵÐÐ
ÓÉÓÚ×Ô¶¯³äÖµÈí¼þ²Ù×÷¼òµ¥£¬·½±ã¸öÈËʹÓ㬿ÉΪÓû§ÊµÏÖ¶àÖÕ¶Ë¡¢¶àÖÜÆÚ¡¢¶à·½Ê½³äÖµ£¬Ê¹Óû§³äÖµ¸ü¼Ó·½±ã£¬ÉîÊܹã´óÓû§µÄϲ°®¡£ÏÖÔÚÓкܶà³äµçÈí¼þ£¬ÄÄÖÖ×Ô¶¯³äµçÈí¼þºÃ£¿ÔÚ±£Ö¤³äµç°²È«µÄǰÌáÏ£¬ÎÒÃÇÏòÄúÍÆ¼öһЩ¸üʵÓᢸüÁ÷ÐеijäµçÈí¼þ¡£¶àÌØÈí¼þרÌâΪÄúÌṩ³äÖµÈí¼þ,Ãâ·ÑÐéÄâ³äÖµÈí¼þÏÂÔØ,×Ô¶¯³äֵƽ̨¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£
´ó¼Ò¶¼ÖªµÀ»Æ½ðÏÖÔÚ¼±¾çϵø£¬ËùÒԺܶàÈËÒѾ¿ªÊ¼Ê¹ÓûƽðÀ´±£³ÖÆäδÀ´µÄ¼ÛÖµ¡£³´½ðÒ²ÊÇÀí²ÆµÄÒ»Öֺ÷½·¨¡£Ëµµ½²ÆÎñ¹ÜÀí£¬ÎÒÃÇÐèҪһЩרҵµÄ²ÆÎñ¹ÜÀíÈí¼þ¡£ÀàËÆ»Æ½ðµÄ²ÆÎñ¹ÜÀíÈí¼þÊǹó½ðÊôÊг¡Èí¼þ¡£ÕâÀïÓÐһЩ³£ÓõĺÍÁ÷Ðеġ£¹ó½ðÊô½»Òׯ½Ì¨¹©´ó¼ÒÑ¡Ôñ£¬²ÆÎñ¹ÜÀíÊÆÔÚ±ØÐУ¡¶àÌØÈí¼þרÌâΪÄúÌṩ¹ó½ðÊôÐÐÇéÈí¼þ,»Æ½ð°×Òø¹ó½ðÊôÐÐÇéÈí¼þÏÂÔØ,¹ó½ðÊô»Æ½ð½»Ò×Èí¼þ¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£
IDE¿ª·¢¹¤¾ßÊÇÏô±ßΪÄú¿ª·¢µÄÒ»ÖÖIDE¿ª·¢¹¤¾ß£¬°üÀ¨Web IDE¿ª·¢¹¤¾ßºÍJavaIDE¿ª·¢¹¤¾ß¡£ÕâЩ¹¤¾ßÊÇ¿ªÔ´µÄ£¬¿ÉÒÔÔںܴó³Ì¶ÈÉϰïÖú¿ª·¢ÈËÔ±¿ª·¢³ÌÐò¡£¿ª·¢ÈËÔ±¿ÉÒÔ¸ù¾ÝÐèҪѡÔñIDE¿ª·¢¹¤¾ß¡£¶àÌØÈí¼þרÌâΪÄúÌṩide¿ª·¢¹¤¾ß,webǰ¶Ëide¿ª·¢¹¤¾ß,ide¹¤¾ß¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£
DOS¹¤¾ßÏäÊÇÒ»¿îÊÊÓÃÓÚWindows 2000»òÒÔÉÏϵͳµÄ¹¤¾ß£¬¼ÓÉÏ´¿DOSÒýµ¼Ö§³Ö£¬·½±ãÅóÓÑÎÞÐèCD-ROMÈíÅÌÇý¶¯Æ÷£¬È«ÖÐÎÄ´¦Àí£¬ÎªÆÕͨÓû§·þÎñ¡£DOS¹¤¾ßÏ䣬¼ÓÔØ³£ÓÃDOS¹¤¾ß£¬Ö§³ÖNTFS·ÖÇø£¬Ïòµ¼Ä£Ê½ÏÂÖ§³ÖÖÐÎÄÒýµ¼£¡Ð¡±àÊÕ¼¯ÁËһЩ³£ÓõÄDOS¹¤¾ßÏ乩ÄúÑ¡ÔñºÍʹÓã¡¶àÌØÈí¼þרÌâΪÄúÌṩdos¹¤¾ßÏä,°«ÈËdos¹¤¾ßÏä,dos¹¤¾ßÏäʹÓý̡̳£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£
¿ÖÁúÓÎÏ·ÕýÖð½¥³ÉΪÓÎÏ·ÖеÄÈÈÃÅ»°Ìâ¡£×îÔçµÄ¾µä¿ÖÁúÓÎÏ·ÊÇ¿ÖÁúΣ»ú¡£ÉÏÊÀ¼Í90Äê´ú×î¾µäµÄÉä»÷ÓÎÏ·Ö®Ò»£¬°ÑÎÒÃÇ´øÈëÁËÒ»¸ö³äÂúÉñÃØºÍ¿Ö²ÀµÄ¿ÖÁúÍõ¹ú¡£Èç½ñ£¬¿ÖÁúÓÎÏ·ÒÔ·½ÖÛµÄÉú´æºÍ½ø»¯Îª½Ü×÷¶ø¸´ÐË¡£ÏÂÃæÎªÄú´øÀ´×îÓÐȤµÄ¿ÖÁúÓÎÏ·´óÈ«£¬¿ÖÁúµ¥»úÓÎÏ·ÏÂÔØ£¬Ç§Íò²»Òª´í¹ýŶ¶àÌØÈí¼þרÌâΪÄúÌṩ¿ÖÁúÓÎÏ·,¿ÖÁúÓÎÏ·µ¥»úÓÎÏ·,¿ÖÁú³ÔÈËÓÎÏ·¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£