ÎҵĵØÅÌÎÒ×öÖ÷£¡ ²©¿Í£ºhttp://tester2test.cnblogs.com/ ¡¡ msn:win_soft@163.com

·¢²¼ÐÂÈÕÖ¾

  • ÀÏÍ⳰Цʮ¶þÉúФ£¬Îҵķ´ÎÊÈÃËûÃÇÄ¿µÉ¿Ú´ô(תÔØ£©

    2007-07-24 18:08:49

    Ô­ÎÄÁ¬½Ó£º[link]
    ÓÐÒ»´Î,ÎҲμӽӴýÁËÒ»¸öÓÉÅ·ÖÞ¹ó×å×é³ÉµÄ²Î·ÃÍÅ.ËûÃÇÖеĴó¶à Êý¸úÍõ×åÓÐÇ×ÆݹØϵ,·Ç³£ÓÐѧÎʺÍÐÞÑø,´ýÈ˱ò±òÓÐÀñ,µ«ËûÃÇµÄ ÐÞÑø±³
    ºóÒþ²Ø×ÅÒ»ÖÖ°ÁÂý.×îºóÒ»Ìì¾Û²Í,¿ÉÄܾƺȶàÁË,ÕâЩ¹ó×åµÄÑÔ̸ ¾ÙÖ¹±äµÃ±È½ÏÂÊÐÔ.ϯ¼ä,һλµÂ¹ú¹ó×åÕ¾ÁËÆðÀ´Ëµ:ÄãÃÇÖйúÈË, ÔõôÊôʲôÖí°¡,¹·°¡,

    Link URL: http://groups.google.com/group/tester2test/msg/23f2123162d1415b
  • °²×°sqlserver2000Ìáʾ¹ÒÆðµÄ½â¾ö·½·¨

    2007-07-24 18:08:49

    °²×°sqlserver2000Ìáʾ¹ÒÆðµÄ½â¾ö·½·¨
    ×÷Õߣºxuzhenqinandy
    °²×°SQL SERVER 2000ʱÌáʾ£º"ÒÔÇ°µÄij¸ö³ÌÐò°²×°ÒÑÔÚ°²×°¼ÆËã»úÉÏ´´½¨¹ÒÆð µÄÎļþ²Ù×÷¡£Ô­ÒòÊÇ°²×°³ÌÐòÔÚÏÈÇ°µÄ°²×°¹ý³ÌÖÐÔÚϵͳע²á±í
    ÁôÏÂijЩÐÅÏ¢£¬µ¼Ö²»ÄÜ°²×°¡£É¾³ýµôÈçϼüÖµÐÅÏ¢¼´¿É°²×°£ºÔÚÔË Ðд°¿ÚÊäÈëregedit£¬´ò¿ª×¢²á±í±à¼­Æ÷£¬ÔÚHKEY_LO CAL_MACHINE

    Link URL: http://groups.google.com/group/tester2test/msg/2880abcc7b5b4efb
  • ´óÊý¾ÝÁ¿Éú³É¹¤¾ßÔ´´úÂ루Delphi)

    2007-07-24 18:08:49

    ¿ÉÖ´ÐÐÎļþ´æ·ÅÓÚ£º[link]
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    Forms,
    Dialogs, StdCtrls, ComCtrls, ExtCtrls, shellapi;
    type
    TForm1 = class(TForm)
    pnl1: TPanel;
    edt1: TEdit;
    btn2: TButton;

    Link URL: http://groups.google.com/group/tester2test/msg/ad970d58741e2221
  • ÒªÊÇÏ´ÎËûÃÇ·ÅÊÖ»úʱ´÷ÁËÊÖÌ×Ôõô°ì£¿

    2007-07-24 18:08:49

    ÎÒͬѧÔÚ³Ë×ø¹«½»³µÊ±Í»È»ÅÔ±ßÒ»¸ö³Ë¿Í A´óÉùÐú»©£¬ËµËûÊÖ»ú¶ªÁË£¬²¢ÇÒÖ¸ÕýÊÇËûÅÔ±ßµÄ B͵ÁË£¬ B×°³öÒ»·ù·ÝºÜÎÞ¹¼µÄÑù×Ó£¬ËµÊÖ»ú²»ÊÇÎÒ͵µÄ£¬Äã¼Ç
    µÃÄã×Ô¼ºµÄÊÖ»úºÅÂëô£¬ÄãÕÒÒ»¸öÊÖ»ú´òһϣ¬²»¾ÍÖªµÀÊÇ˭͵ÁËô ¡£Õâʱ CÖ÷¶¯Ëµ°ÑÊÖ»ú½è¸øËû²¦Ò»ÏÂËû×Ô¼ºµÄºÅÂ룬µ±ÊÖ»ú²¦Í¨µÄ˲¼ä£¬ÎÒ Í¬Ñ§¶µÀïµÄÊÖ»ú

    Link URL: http://groups.google.com/group/tester2test/msg/f3a2d82842768e5e
  • "I'm"¼Æ»®

    2007-07-24 18:08:49

    ¡¾±êÌâ¡¿"I'm"¼Æ»®
    ¡¾ÄÚÈÝ¡¿
    µÚÒ»¸öÔÚÎÒmsnÁбíÀïÁÁÆðI'm´óÆìµÄÊÇChris£¬´úÂëÊÇ* bgca£¬"Boys and Girls Clubs of America"¡£
    Õâ¸ǫ̈Íå¼®µÄÃÀ¹úÈË£¬ÔÚÈ¥ÄêµÄ¼¸´Î5GÖоͲ»Í£µØ߶߶׏ØÓÚ"ÖÐ ¹úÇàÄê""º¢×Ó"ºÍ"ÃÎÏë"µÄ¹Ø¼ü´Ê£¬Ö§³ÖÕâ¸ö×éÖ¯¼¸ºõÊDZØÈ»µÄ ¡£³ÔÁ˸öÍí·¹£¬ÔÚmsn

    Link URL: http://groups.google.com/group/tester2test/msg/7207dec922181b0f
  • [Ô­´´]²âÊÔ¹ý³Ì¶¨Ò壨Ïֽ׶Σ©

    2007-07-24 18:08:49

    ¹ý³ÌÃèÊö£º
    ÐèÇó½×¶Î£º
    Ðγɻù±¾Îȶ¨µÄÐèÇóÎĵµºó£¬²âÊÔ½éÈëÐèÇóÆÀÉó£¬ÒÔ±ãÁ˽âÐèÇóµÄÏà ¹ØÄÚÈÝÒÔ¼°²âÊÔ¹¤×÷µÄ¿ÉÐÐÐÔ·ÖÎö£¨Èí¼þ¿É²âÊÔÐÔ£©¡£ÏîÄ¿¾­ÀíÖƶ¨ ÏîÄ¿¼Æ»®£¬²âÊÔ²¿ÃŲâÊÔ
    ¾­Àí/²âÊÔÍŶӸºÔðÈËÖƶ¨²âÊԼƻ®£¬ÏîÄ¿×é²âÊÔÈËÔ±ÔĶÁÏà¹Ø²âÊÔ ÐèÇóÎĵµ£¬Èç¹û´æÔÚÒÉÎÊ»òÕß·¢ÏÖÐèÇóȱÏݼ°Ê±ÓëÐèÇóÈËÔ±¹µÍ¨£¬Èç ¹ûÊÇÐèÇóȱÏÝ£¬¿ÉÒÔ½«Ïà

    Link URL: http://groups.google.com/group/tester2test/msg/fea6acfe93d187ab
  • ÈçºÎÓÃÃüÁîÐÐÖ´ÐÐloadrunnerµÄ½Å±¾

    2007-07-12 12:19:40


    SET M_ROOT=D:\Mercury Interactive\Mercury LoadRunner\bin
    cd %M_ROOT%
    wlrun.exe -TestPath D:\ceshi10\ScenarioNo1.lrs -port 8080 -Run -DontClose

    ÆäÖÐD:\Mercury Interactive\Mercury LoadRunner\bin ÊÇ°²×°Ä¿Â¼
    D:\ceshi10\ScenarioNo1.lrsÊǽű¾Ä¿Â¼
    DontClose ½Å±¾ÔËÐÐÍê²»¹Ø±Õ¿ØÖÆÆ÷£¬

    ÒÔÉÏÊÇÅú´¦Àí
    °ÑÅú´¦Àí¼Óµ½ windowsµÄÈÎÎñ¼Æ»®ÀÉèÖúÃÔËÐÐʱ¼ä£¬¾Í¿ÉÒÔÁË


    This means the Controller can be started from a DOS batch (.bat) file (preferrably with a short name on a root drive):
      REM Start Controller:
      SET M_ROOT=C:\Program Files\Mercury Interactive\LoadRunner\bin
      cd %M_ROOT%
      wlrun.exe -TestPath D:\Dev\Dev1.lrs -port 8080 -Run -DontClose
      pause Press Ctrl-Z to keep this window or

       

    • Including the -Run parameter is the same as manually pressing the "Start Scenario" automatically upon invocation. This is not a good idea because you may have to decide about collating the file from a previous run or want to change the output folder.




    Link URL: http://www.cnblogs.com/tester2test/archive/2006/06/06/418877.html
  • Java´úÂëȱÏÝ×Ô¶¯·ÖÎö¹¤¾ß½éÉÜ

    2007-07-12 12:19:40

     

    Java´úÂëȱÏÝ×Ô¶¯·ÖÎö¹¤¾ß½éÉÜ

                                                                                                        »ÆÎý²¨

    Java´úÂëȱÏÝ×Ô¶¯·ÖÎö¹¤¾ßÖ÷ÒªÓУºFindbugs¡¢PMDºÍCheckStyle¹¤¾ß¡£ÕâÀïÖصã½éÉÜFindbugsµÄʹÓ㬼òÒªÌá¼°PMDºÍCheckStyle¹¤¾ßµÄʹÓá£

    1         FindBugsÊÇʲô£¿

    FindBugs ÊÇÒ»¸öjava bytecode¾²Ì¬·ÖÎö¹¤¾ß£¬Ëü¿ÉÒÔ°ïÖújava¹¤³ÌʦÌá¸ß´úÂëÖÊÁ¿ÒÔ¼°ÅųýÒþº¬µÄȱÏÝ¡£

    FindBugs¼ì²éÀà»òÕß JAR Îļþ£¬½«×Ö½ÚÂëÓëÒ»×éȱÏÝģʽ½øÐжԱÈÒÔ·¢ÏÖ¿ÉÄܵÄÎÊÌâ¡£

    ÓÐÁ˾²Ì¬·ÖÎö¹¤¾ß£¬¾Í¿ÉÒÔÔÚ²»Êµ¼ÊÔËÐгÌÐòµÄÇé¿ö¶ÔÈí¼þ½øÐзÖÎö¡£FindBugs²»ÊÇͨ¹ý·ÖÎöÀàÎļþµÄÐÎʽ»ò½á¹¹À´È·¶¨³ÌÐòµÄÒâͼ£¬¶øÊÇͨ³£Ê¹Óà Visitor ģʽ½øÐзÖÎö£¨Visitor ģʽµÄ¸ü¶àÐÅÏ¢£©¡£

     

    2         FindBugs¿ÉÒÔ×öʲô£¿

    FindBugsÌṩÁË35¸ö¼ì²âÆ÷À´¼ì²â×Ö½ÚÂëÖпÉÄܵÄȱÏÝ¡£¿ÉÒÔ×öµÄÊÂÇéÖ÷ÒªÓУº

    2.1       ÕÒ³ö hash equals ²»Æ¥Åä

    ÕÒÓë equals() ºÍ hashCode() µÄʵÏÖÏà¹ØµÄ¼¸¸öÎÊÌâ¡£ÕâÁ½¸ö·½·¨·Ç³£ÖØÒª£¬ÒòΪ¼¸ºõËùÓлùÓÚ¼¯ºÏµÄÀà---List¡¢Map¡¢Set µÈ¶¼µ÷ÓÃËüÃÇ¡£Ò»°ãÀ´Ëµ£¬Õâ¸ö¼ì²âÆ÷Ñ°ÕÒÁ½ÖÖ²»Í¬ÀàÐ͵ÄÎÊÌâ:

    ¢Ùµ±Ò»¸öÀàÖØд¶ÔÏóµÄ equals() ·½·¨£¬µ«ÊÇûÓÐÖØдËüµÄ hashCode ·½·¨£¬»òÕßÏà·´µÄÇé¿öʱ¡£

    ¢Ú¶¨ÒåÒ»¸ö co-variant °æ±¾µÄ equals() »ò compareTo() ·½·¨¡£ÀýÈ磬 Bob ÀඨÒåÆä equals() ·½·¨Îª²¼¶û equals(Bob) £¬Ëü¸²¸ÇÁ˶ÔÏóÖж¨ÒåµÄ equals() ·½·¨¡£ÒòΪ Java ´úÂëÔÚ±àÒëʱ½âÎöÖØÔØ·½·¨µÄ·½Ê½£¬ÔÚÔËÐÐʱʹÓõļ¸ºõ×ÜÊÇÔÚ¶ÔÏóÖж¨ÒåµÄÕâ¸ö°æ±¾µÄ·½·¨£¬¶ø²»ÊÇÔÚ Bob Öж¨ÒåµÄÄÇÒ»¸ö£¨³ý·ÇÏÔʽ½« equals() ·½·¨µÄ²ÎÊýÇ¿ÖÆת»»Îª Bob ÀàÐÍ£©¡£Òò´Ë£¬µ±Õâ¸öÀàµÄÒ»¸öʵÀý·ÅÈëµ½À༯ºÏÖеÄÈκÎÒ»¸öÖÐʱ£¬Ê¹ÓõÄÊÇ Object.equals() °æ±¾µÄ·½·¨£¬¶ø²»ÊÇÔÚ Bob Öж¨ÒåµÄ°æ±¾¡£ÔÚÕâÖÖÇé¿öÏ£¬ Bob ÀàÓ¦µ±¶¨ÒåÒ»¸ö½ÓÊÜÀàÐÍΪ Object µÄ²ÎÊýµÄ equals() ·½·¨¡£

     

    2.2       ¼ì²â£ººöÂÔ·½·¨·µ»ØÖµ

    Õâ¸ö¼ì²âÆ÷²éÕÒ´úÂëÖкöÂÔÁ˲»Ó¦¸ÃºöÂԵķ½·¨·µ»ØÖµµÄµØ·½¡£ÕâÖÖÇé¿öµÄÒ»¸ö³£¼ûÀý×ÓÊÇÔÚµ÷Óà String ·½·¨Ê±£¬ÀýÈç:

    1 String aString = "bob";

    2 b.replace('b', 'p');

    3 if(b.equals("pop"))

    Õâ¸ö´íÎóºÜ³£¼û¡£ÔÚµÚ 2 ÐУ¬³ÌÐòÔ±ÈÏΪËûÒѾ­Óà p Ìæ»»ÁË×Ö·û´®ÖеÄËùÓÐ b¡£È·ÊµÊÇÕâÑù£¬µ«ÊÇËûÍü¼ÇÁË×Ö·û´®ÊDz»¿É±äµÄ¡£ËùÓÐÕâÀà·½·¨¶¼·µ»ØÒ»¸öÐÂ×Ö·û´®£¬¶ø´ÓÀ´²»»á¸Ä±äÏûÏ¢µÄ½ÓÊÕÕß¡£

     

    2.3       ¼ì²â£ºNull Ö¸Õë¶Ô null µÄ½âÒýÓã¨dereference£©ºÍÈßÓà±È½Ï

    Õâ¸ö¼ì²âÆ÷²éÕÒÁ½ÀàÎÊÌâ¡£Ëü²éÕÒ´úÂë·¾¶½«»á»òÕß¿ÉÄÜÔì³É null Ö¸ÕëÒì³£µÄÇé¿ö£¬Ëü»¹²éÕÒ¶Ô null µÄÈßÓà±È½ÏµÄÇé¿ö¡£ÀýÈ磬Èç¹ûÁ½¸ö±È½ÏÖµ¶¼Îª null£¬ÄÇôËüÃǾÍÊÇÈßÓàµÄ²¢¿ÉÄܱíÃ÷´úÂë´íÎó¡£FindBugs ÔÚ¿ÉÒÔÈ·¶¨Ò»¸öֵΪ null ¶øÁíÒ»¸öÖµ²»Îª null ʱ£¬¼ì²âÀàËƵĴíÎó£¬ÀýÈ磺

    1 Person person = aMap.get("bob");

    2 if (person != null) {

    3      person.updateAccessTime();

    4 }

    5 String name = person.getName();

    ÔÚÕâ¸öÀý×ÓÖУ¬Èç¹ûµÚ 1 ÐÐµÄ Map ²»°üÀ¨Ò»¸öÃûΪ“bob”µÄÈË£¬ÄÇôÔÚµÚ 5 ÐÐѯÎÊ person µÄÃû×Öʱ¾Í»á³öÏÖ null Ö¸ÕëÒì³£¡£ÒòΪ FindBugs ²»ÖªµÀ map ÊÇ·ñ°üº¬“bob”£¬ËùÒÔËü½«µÚ 5 Ðбê¼ÇΪ¿ÉÄÜ null Ö¸ÕëÒì³£¡£

     

    2.4       ¼ì²â£º³õʼ»¯Ö®Ç°¶ÁÈ¡×Ö¶Î

    Õâ¸ö¼ì²âÆ÷Ñ°ÕÒÔÚ¹¹Ô캯ÊýÖгõʼ»¯Ö®Ç°±»¶ÁÈ¡µÄ×ֶΡ£Õâ¸ö´íÎóͨ³£ÊÇÓÉʹÓÃ×Ö¶ÎÃû¶ø²»Êǹ¹Ô캯Êý²ÎÊýÒýÆðµÄ£¬ÀýÈçÔÚ¹¹Ô캯ÊýÖжÁȡδ³õʼ»¯µÄ×Ö¶Î:

    1 public class Thing {

    2      private List actions;

    3      public Thing(String startingActions) {

    4       StringTokenizer tokenizer = new StringTokenizer(startingActions);

    5          while (tokenizer.hasMoreTokens()) {

    6              actions.add(tokenizer.nextToken());

    7       }

    8      }

    9 }

    ÔÚÕâ¸öÀý×ÓÖУ¬µÚ 6 Ðн«²úÉúÒ»¸ö null Ö¸ÕëÒì³££¬ÒòΪ±äÁ¿ actions »¹Ã»Óгõʼ»¯¡£

     

    2.5       ÃüÃû¼ì²é

    ¶Ô±ê×¼ Java ÃüÁî¹æ·¶µÄ²âÊÔ£º±äÁ¿Ãû³Æ²»Ó¦Ì«¶Ì£»·½·¨Ãû³Æ²»Ó¦¹ý³¤£»ÀàÃû³ÆÓ¦µ±ÒÔСд×Öĸ¿ªÍ·£»·½·¨ºÍ×Ö¶ÎÃûÓ¦µ±ÒÔСд×Öĸ¿ªÍ·£¬µÈµÈ¡£

     

    2.6       δʹÓõĴúÂë¼ì²é

    ²éÕÒ´ÓδʹÓõÄ˽ÓÐ×ֶκͱ¾µØ±äÁ¿¡¢Ö´Ðв»µ½µÄÓï¾ä¡¢´Óδµ÷ÓõÄ˽Óз½·¨£¬µÈµÈ¡£

     

    2.7       ǶÌ×¼ì²é

    ÀýÈ磺 switch Óï¾äÓ¦µ±ÓÐ default ¿é£¬Ó¦µ±±ÜÃâÉî¶ÈǶÌ×µÄ if ¿é£¬²»Ó¦µ±¸ø²ÎÊýÖØи³Öµ£¬²»Ó¦¸Ã¶Ô double Öµ½øÐÐÏàµÈ±È½Ï¡£

     

    2.8       µ¼ÈëÓï¾ä¼ì²é

    ¼ì²é import Óï¾äµÄÎÊÌ⣬±ÈÈçͬһ¸öÀà±»µ¼ÈëÁ½´Î»òÕß±»µ¼Èë java.lang µÄÀàÖС£

     

    2.9       JUnit ²âÊÔ¼ì²é

    ²éÕÒ²âÊÔÓÃÀýºÍ²âÊÔ·½·¨µÄÌض¨ÎÊÌ⣬ÀýÈç·½·¨Ãû³ÆµÄÕýȷƴд£¬ÒÔ¼° suite() ·½·¨ÊDz»ÊÇ static ºÍ public¡£

     

    2.10   ×Ö·û´®¼ì²é

    ÕÒ³ö´¦Àí×Ö·û´®Ê±Óöµ½µÄ³£¼ûÎÊÌ⣬ÀýÈçÖظ´µÄ×Ö·û´®±êÁ¿£¬µ÷Óà String ¹¹Ô캯Êý£¬¶Ô String ±äÁ¿µ÷Óà toString() ·½·¨¡£

     

    2.11   À¨ºÅ¼ì²é

    ¼ì²é for¡¢ if¡¢ while ºÍ else Óï¾äÊÇ·ñʹÓÃÁËÀ¨ºÅ¡£

     

    2.12   ´úÂë³ß´ç¼ì²é

    ²âÊÔ¹ý³¤µÄ·½·¨¡¢ÓÐÌ«¶à·½·¨µÄÀàÒÔ¼°Öع¹·½ÃæµÄÀàËÆÎÊÌâ¡£

     

    2.13   ÖսắÊý¼ì²é

    ÒòΪÔÚ Java ÓïÑÔÖУ¬ finalize() ·½·¨²»ÊÇÄÇôÆձ飬ËüÃǵÄʹÓùæÔòËäÈ»ºÜÏêϸ£¬µ«ÊÇÈËÃǶÔËüÃÇÏà¶Ô²»ÊǺÜÊìϤ¡£ÕâÀà¼ì²é²éÕÒ finalize() ·½·¨µÄ¸÷ÖÖÎÊÌ⣬ÀýÈç¿ÕµÄÖսắÊý£¬µ÷ÓÃÆäËû·½·¨µÄ finalize() ·½·¨£¬¶Ô finalize() µÄÏÔʽµ÷Ó㬵ȵȡ£

     

    2.14   ¿Ë¡¼ì²é

    ÓÃÓÚ clone() ·½·¨µÄйæÔò¡£·²ÊÇÖØд clone() ·½·¨µÄÀ඼±ØÐëʵÏÖ Cloneable£¬ clone() ·½·¨Ó¦¸Ãµ÷Óà super.clone()£¬¶ø clone() ·½·¨Ó¦¸ÃÉùÃ÷Å׳ö CloneNotSupportedException Òì³££¬¼´Ê¹Êµ¼ÊÉÏûÓÐÅ׳öÒì³££¬Ò²ÒªÈç´Ë¡£

     

    2.15   ñîºÏ¼ì²é

    ²éÕÒÀàÖ®¼ä¹ý¶ÈñîºÏµÄ¼£Ï󣬱ÈÈçµ¼ÈëÄÚÈÝÌ«¶à£»ÔÚ³¬ÀàÐÍ»ò½Ó¿Ú¾ÍÒѾ­¹»ÓõÄʱºòʹÓÃ×ÓÀàµÄÀàÐÍ£»ÀàÖеÄ×ֶΡ¢±äÁ¿ºÍ·µ»ØÀàÐ͹ý¶àµÈ¡£

     

    2.16   Òì³£¼ì²é

    Õë¶ÔÒì³£µÄ¼ì²é£º²»Ó¦¸ÃÉùÃ÷¸Ã·½·¨¶øÅ׳ö java.lang.Exception Òì³££¬²»Ó¦µ±½«Òì³£ÓÃÓÚÁ÷¿ØÖÆ£¬²»Ó¦¸Ã²¶»ñ Throwable£¬µÈµÈ¡£

     

    2.17   ÈÕÖ¾¼ì²é

    ²éÕÒ java.util.logging.Logger µÄ²»µ±Ê¹Ó㬰üÀ¨·ÇÖÕ״̬£¨nonfinal£©¡¢·Ç¾²Ì¬µÄ¼Ç¼Æ÷£¬ÒÔ¼°ÔÚÒ»¸öÀàÖÐÓжà¸ö¼Ç¼Æ÷¡£

     

    2.18   Open€€Close¼ì²é

    ¼ì²éÎļþ»òͨѶ·½Ã棬ÊÇ·ñÍü¼ÇCloseµÄÇé¿ö¡£

     

    2.19   ÆäËü¼ì²é

    ÆäËüȱÏÝÇåµ¥¿É²Î¼û£ºÈ±ÏÝÇåµ¥

     

    2.20    ¹¹½¨×Ô¼ºµÄ¹æÔò¼¯

    ¿ÉÒÔ¹¹½¨×Ô¼ºµÄ¹æÔò¼¯

     

    3         ×¼±¸Ê¹ÓÃFindBugs

    FindBugsÄ¿Ç°×îа汾ÊÇ 0.9.3 ¡£ÎļþÃûÊÇ£ºfindbugs-0.9.3.zip£¨Windows£©»òfindbugs-0.9.3.tar.gz£¨Unix£©¡££¨ÏÂÔØÍøÒ³£©

    Ò²¿ÉÒÔµ½StarTeamÈ¡ÏàÓ¦°²×°Îļþµ½±¾µØ£¬½«Ëü½âѹËõµ½ËùÑ¡µÄĿ¼ÖУ¬°²×°¾ÍÍê³ÉÁË¡£

    ÒªÔËÐÐ FindBugs£¬ÐèÒªÒ»¸ö°æ±¾ 1.4 »òÕ߸ü¸ßµÄ Java Development Kit £¨JDK£©¡£

    °²×°Íêºó£¬ÒªÔö¼ÓÁ½¸ö»·¾³±äÁ¿£º

    FINDBUGS_HOME£¬ÀýÈ磺FINDBUGS_HOME £½D:\findbugs-0.9.3

    JAVA_HOME£¬ÀýÈ磺JAVA_HOME£½D:\j2sdk1.4.2_06

     

    ÔÚ FindBugs Ö÷Ŀ¼ÖУ¬Óм¸¸öÖµµÃ×¢ÒâµÄĿ¼¡£ÎĵµÔÚ doc Ŀ¼ÖУ¬µ«ÊǶÔÎÒÃÇÀ´Ëµ¸üÖØÒªµÄÊÇbin Ŀ¼£¬¸Ã°üº¬ÁËÔËÐÐ FindBugs µÄÅú´¦ÀíÎļþ¡£

     

    4         ÔËÐÐ FindBugs

    ÏñÈç½ñµÄ´ó¶àÊýÊý¹¤¾ßÒ»Ñù£¬¿ÉÒÔÒÔ¶àÖÖ·½Ê½ÔËÐÐ FindBugs€€€€´Ó GUI¡¢´ÓÃüÁîÐС¢Ê¹Óà Ant¡¢×÷Ϊ Eclipse ²å¼þ³ÌÐòºÍʹÓà Maven¡£

    ÕâÀォÖصãÌá¼°´Ó GUI ÔËÐÐ FindBugs£¬¼òÒªÌἰʹÓÃAnt ºÍÃüÁîÐÐÔËÐС£

     

    4.1       FindBugs UI

    ʹÓà FindBugs UI ºÜÖ±¹Û¡£Ê¹Óà FindBugs UI µÄÒ»¸öºÃ´¦ÊǶÔÿһ¸ö¼ì²âµ½µÄÎÊÌâÌṩÁË˵Ã÷£¬Í¼ 1 ÏÔʾÁËȱÏÝ TestµÄ˵Ã÷¡£

    ͼһ£ºÏîÄ¿TestµÄȱÏÝ˵Ã÷

     

    ¶ÔÿһÖÖȱÏÝģʽÌṩÁËÀàËƵÄ˵Ã÷¡£´°¿ÚÏÂÃæµÄ Source code Ñ¡ÏºÜÓÐÓá£Èç¹û¸æËß FindBugs ÔÚʲôµØ·½Ñ°ÕÒ´úÂ룬Ëü¾Í»áÔÚת»»µ½ÏàÓ¦µÄÑ¡Ïʱͻ³öÏÔʾÓÐÎÊÌâµÄÄÇÒ»ÐС£

    ͼһÖеÄÉϲ¿Óиù¾Ý²»Í¬Àà±ðÀ´¼ì²éȱÏݵÄÑ¡ÏѡÏîÓУ¨By Class¡¢By Package¡¢By Bug Type¡¢By Bug Category£©¡£

    ͼ¶þÊÇ¡¾file¡¿Ñ¡ÏÖ÷Òª¹¦ÄÜÓУº´´½¨ÐÂÏîÄ¿¡¢´ò¿ª/¹Ø±ÕÏîÄ¿¡¢´¢´æÏîÄ¿¡¢´¢´æBugsÐÅÏ¢¡¢×°ÔØBuugsÐÅÏ¢

     

     

    ͼÈýÊÇ¡¾View¡¿Ñ¡ÏÕâЩѡÏîºÜÓÐÓ㬿ÉÒÔÇл»²»Í¬Ä£Ê½µÄÊÓͼ¡£

     

     

    ͼËÄÊÇ¡¾Settings¡¿Ñ¡ÏÊǶԼì²âµÄȱÏÝģʽ½øÐÐÑ¡Ôñ¡£

     

     

     

    ͼÎåÊÇ¡¾´´½¨ÐÂÏîÄ¿¡¿Ñ¡Ïî

     

     

     

    4.2       ʹÓà FindBugs UI²½Öè

    µÚÒ»´ÎʹÓÃ

    £¨1£©       ÒÀÕÕͼÎ塾´´½¨ÐÂÏîÄ¿¡¿Ñ¡Ïî˵Ã÷£¬ÏÈ´´½¨ÐÂÏîÄ¿£¬ÊäÈë±»¼ì²éµÄclass»òjar·¾¶¡¢javaÔ´Îļþ·¾¶¼°³ÌÐòÔËÐÐÒÀÀµµÄclass»òjar·¾¶

    £¨2£©       °´¡¾FingBugs¡¿°´Å¥¿ªÊ¼¼ì²é

    £¨3£©       Èç¹û³öÏÖÏÂͼÁùµÄ¾¯¸æ

     

    ˵Ã÷³ÌÐòÔËÐÐÒÀÀµµÄclass»òjar·¾¶²»¶Ô»òÒÀÀµÎļþ²»ÍêÕû£¬Ó¦ÒÀ¾Ý¾¯¸æÐÅÏ¢ÍêÉÆ¡£

    £¨4£©       °´¡¾OK¡¿ºó¼´½øÈëÉÏͼһµÄ´íÎóÐÅÏ¢ÏÔʾ

    £¨5£©       Ñ¡Ôñ¡¾file¡¿´¢´æн¨µÄÏîÄ¿

    £¨6£©       Ñ¡Ôñ¡¾file¡¿´¢´æÐÂɨÃèµÄBugsÐÅÏ¢£¨xmlÎļþ£©

     

    ·ÇµÚÒ»´ÎʹÓÃ

    £¨1£©       Ñ¡Ôñ¡¾file¡¿×°ÔØÉÏ´Îн¨µÄÏîÄ¿²¢ÔËÐÐ

    £¨2£©       Ò²¿ÉÒÔÑ¡Ôñ¡¾file¡¿×°ÔØÉϴδ¢´æµÄBugsÐÅÏ¢À´²é¿´

     

     

    ÖµµÃÒ»ÌáµÄ»¹ÓÐÔÚ½« FinBugs ×÷Ϊ Ant ÈÎÎñ»òÕßÔÚÃüÁîÐÐÖÐÔËÐÐ FindBugs ʱ£¬Ñ¡Ôñ xml ×÷Ϊ ouput Ñ¡Ï¿ÉÒÔ½«ÉÏÒ»´ÎÔËÐеĽá¹û×°Ôص½ UI ÖС£ÕâÑù×öÊÇͬʱÀûÓûùÓÚÃüÁîÐеŤ¾ßºÍ UI ¹¤¾ßµÄÓŵãµÄÒ»¸öºÜºÃµÄ·½·¨¡£

     

    4.3       FindBugs ×÷Ϊ Ant ÈÎÎñ

    ÈçºÎÔÚ Ant ±àÒë½Å±¾ÖÐʹÓà FindBugs£¿Ê×ÏȽ« FindBugs Ant ÈÎÎñ¿½±´µ½ Ant µÄ lib Ŀ¼ÖУ¬ÕâÑù Ant ¾ÍÖªµÀеÄÈÎÎñ¡£½« FIND_BUGS_HOME\lib\FindBugs-ant.jar ¿½±´µ½ ANT_HOME\lib¡£

    ÏÖÔÚ¿´¿´ÔÚ±àÒë½Å±¾ÖÐÒª¼ÓÈëʲô²ÅÄÜʹÓà FindBugs ÈÎÎñ¡£ÒòΪ FindBugs ÊÇÒ»¸ö×Ô¶¨ÒåÈÎÎñ£¬½«ÐèҪʹÓà taskdef ÈÎÎñÒÔʹ Ant ÖªµÀ×°ÔØÄÄÒ»¸öÀࡣͨ¹ýÔÚ±àÒëÎļþÖмÓÈëÒÔÏÂÒ»ÐУº

    ÔÚ¶¨ÒåÁË taskdef ºó£¬¿ÉÒÔÓÃËüµÄÃû×Ö FindBugs ÒýÓÃËü¡£ÏÂÒ»²½ÒªÔÚ±àÒëÖмÓÈëʹÓÃÐÂÈÎÎñµÄÄ¿±ê£¬Ê¾ÀýÈçÏ£º

    2             

    home="${FindBugs.home}" output="xml" outputFile="jedit-output.xml">

    3         

    4         

    5         

    6     

    µÚ 1 ÐУº ×¢Òâ target È¡¾öÓÚ±àÒë¡£Ò»¶¨Òª¼Çס´¦ÀíµÄÊÇÀàÎļþ¶ø ²» ÊÇÔ´Îļþ£¬ÕâÑùʹ target ¶ÔÓ¦ÓÚ±àÒëÄ¿±ê±£Ö¤ÁË FindBugs ¿ÉÔÚ×îеÄÀàÎļþÔËÐС£FindBugs ¿ÉÒÔÁé»îµØ½ÓÊܶàÖÖÊäÈ룬°üÀ¨Ò»×éÀàÎļþ¡¢JAR Îļþ¡¢»òÕßÒ»×éĿ¼¡£

     

    µÚ 2 ÐУº±ØÐëÖ¸¶¨°üº¬ FindBugs µÄĿ¼£¬ÎÒÊÇÓà Ant µÄÒ»¸öÊôÐÔÍê³ÉµÄ£¬ÏñÕâÑù£º

    0.7.3" />

    ¿ÉÑ¡ÊôÐÔ output Ö¸¶¨ FindBugs µÄ½á¹ûʹÓõÄÊä³ö¸ñʽ¡£¿ÉÄܵÄÖµÓÐ xml ¡¢ text »òÕß emacs ¡£Èç¹ûûÓÐÖ¸¶¨ outputFile £¬ÄÇô FindBugs »áʹÓñê×¼Êä³ö¡£ÈçÇ°ËùÊö£¬XML ¸ñʽÓпÉÒÔÔÚ UI Öйۿ´µÄ¶îÍâºÃ´¦¡£

     

    µÚ 3 ÐУº class ÔªËØÓÃÓÚÖ¸¶¨Òª FindBugs ·ÖÎöÄÄЩ JAR¡¢ÀàÎļþ»òÕßĿ¼¡£·ÖÎö¶à¸ö JAR »òÕßÀàÎļþʱ£¬ÒªÎªÃ¿Ò»¸öÎļþÖ¸¶¨Ò»¸öµ¥¶ÀµÄ class ÔªËØ¡£³ý·Ç¼ÓÈëÁË projectFile ÔªËØ£¬·ñÔòÐèÒª class ÔªËØ¡£

     

    µÚ 4 ÐУº ÓÃǶÌ×ÔªËØ auxClasspath ÁгöÓ¦ÓóÌÐòµÄÒÀÀµÐÔ¡£ÕâЩÊÇÓ¦ÓóÌÐòÐèÒªµ«ÊDz»Ï£Íû FindBugs ·ÖÎöµÄÀà¡£Èç¹ûûÓÐÁгöÓ¦ÓóÌÐòµÄÒÀÀµ¹Øϵ£¬ÄÇô FindBugs ÈÔÈ»»á¾¡¿ÉÄܵطÖÎöÀà¡£Óë class ÔªËØÒ»Ñù£¬¿ÉÒÔÔÚ FindBugs ÔªËØÖÐÖ¸¶¨¶à¸ö auxClasspath ÔªËØ¡£ auxClasspath ÔªËØÊÇ¿ÉÑ¡µÄ¡£

     

    µÚ 5 ÐУº Èç¹ûÖ¸¶¨ÁË sourcePath ÔªËØ£¬ÄÇô path ÊôÐÔÓ¦µ±±íÃ÷Ò»¸ö°üº¬Ó¦ÓóÌÐòÔ´´úÂëµÄĿ¼¡£Ö¸¶¨Ä¿Â¼Ê¹ FindBugs ¿ÉÒÔÔÚ GUI Öв鿴 XML ½á¹ûʱͻ³öÏÔʾ³ö´íµÄÔ´´úÂë¡£Õâ¸öÔªËØÊÇ¿ÉÑ¡µÄ¡£

     

     

    5         ÆäËü·ÖÎö¹¤¾ß

    ³ýFingBugs¾²Ì¬·ÖÎö¹¤¾ßÍ⣬»¹ÓÐPMDºÍCheckstyle£¬FingBugs¡¢PMDºÍCheckstyleÈý¸ö¹¤¾ß¸÷Óв»Í¬µÄÌص㣬ÁªºÏʹÓÃÓÐÖúÓÚ¼õÉÙÎ󱨴íÎó£¬Ìá¸ß±¨¸æµÄ׼ȷÂÊ¡£

    ÕâÈý¸ö¹¤¾ß¼ì²éµÄ²àÖصã¸÷Óв»Í¬£º

    ¹¤¾ß

    Ä¿µÄ

    Ö÷Òª¼ì²éÄÚÈÝ

    FindBugs

    »ùÓÚBug Patterns¸ÅÄ²éÕÒjava bytecodeÖеÄDZÔÚbug¡£ÔÚÄ¿Ç°°æ±¾ÖУ¬Ëü²»¼ì²éjavaÔ´Îļþ¡£

    Ö÷Òª¼ì²ébytecodeÖеÄbug patterns£¬Ò²ÔÊÐíÓû§×Ô¶¨ÒåÌض¨µÄbug patterns¡£

    PMD

    ¼ì²éjavaÔ´ÎļþÖеÄDZÔÚÎÊÌâ¡£

    Ö÷Òª°üÀ¨£º

      -   ¿Õtry/catch/finally/switchÓï¾ä¿é

     -        δʹÓõľֲ¿±äÁ¿¡¢²ÎÊýºÍprivate·½·¨

     -        ¿Õif/whileÓï¾ä

     -        ¹ýÓÚ¸´Ôӵıí´ïʽ£¬Èç²»±ØÒªµÄifÓï¾äµÈ

     -        ¸´ÔÓÀà

    CheckStyle

    ¼ì²éjavaÔ´ÎļþÊÇ·ñÓë´úÂë¹æ·¶Ïà·û

    Ö÷Òª°üÀ¨

     -        Javadoc×¢ÊÍ

     -        ÃüÃû¹æ·¶

     -        Headers

     -        Imports

     -        Size³åÍ»ºÍ¶ÈÁ¿£¬Èç¹ý³¤µÄ·½·¨

     -        Whitespace

     -        Modifiers

     -        Blocks

     -        Coding Problems

     -        Class Design

     -        Öظ´´úÂë

     -        Miscellaneous Checks

     -        Optional Checks

     

     

    5.1       PMD¹¤¾ß

    PMD¹¤¾ßÄ¿Ç°×îа汾ÊÇV3.3(ÏÂÔØÍøÒ³)¡£

    PMDµÄÔËÐл·¾³ÊÇj2se1.3»òÒÔºó°æ±¾£¬°²×°¹ý³ÌͬÑùÒ²Êǽâѹ¼´¿É¡£

    5.1.1 Ant taskµÄʹÓÃ

    £¨1£©       °ÑlibÖÐËùÓеÄjar¸´ÖƵ½ÏîÄ¿µÄclasspathÖС£

    £¨2£©       ½«pmd-2.0.jarÖеÄrulesets½âѹµ½Ö¸¶¨Ä¿Â¼£¬ÕâÀïÃ涨ÒåÁË·ÖÎöËùÐèÒªµÄ¹æÔò¼¯ºÏ¡£

    £¨3£©       ÐÞ¸Äbuild.xmlÎļþ¡£ÔÚÕâÒ»°æ±¾ÖУ¬ÌṩÁË2¸öant task¡£Ò»¸öÊÇpmdʹÓùæÔò¼¯ºÏ½øÐзÖÎö£»ÁíÒ»¸öÊǼì²é´úÂëÖÐCopy & Paste´úÂë¡£Õâ2¸öÈÎÎñ¶ÔÓ¦µÄant taskʹÓãº

    PMDÈÎÎñ£º

       

       

           

                            classpathref="classpath"/>

        

           

            

               

            

               

            

               

                   

               

           

       

    CPDÈÎÎñ£º

        

           

                                classpathref="classpath"/>

        

           

            

               

                   

               

           

       

    £¨4£©       ÔËÐÐant pmdºÍant cpd¼´¿É¡£

    £¨5£©       ²ÎÊý˵Ã÷£º

    -        formatter£¬Ö¸Ã÷Êä³ö¸ñʽºÍÎļþ¡£

    -        rulesetfiles£¬Ö¸Ã÷·ÖÎöËùÐèµÄ¹æÔòÎļþ£¬²»Í¬ÎļþʹÓöººÅ·Ö¸ô¡£

    -        failonerror£¬pmdÖ´Ðгö´íÊÇ·ñÖÐÖ¹¹¹½¨¹ý³Ì¡£

    -        failOnRuleViolation£¬Èç¹ûÓë¹æÔò³åÍ»£¬ÊÇ·ñÖÐÖ¹¹¹½¨¹ý³Ì¡£

    -        classpath£¬pmdËùÐèµÄclasspath¡£

    -        printToConsole£¬ÔÚ·¢ÏÖÎÊÌâʱÊÇ·ñ´òÓ¡µ½ant log»ò¿ØÖÆ̨¡£

    -        shortFilenames£¬ÔÚÊä³ö±¨¸æÖÐÊÇ·ñʹÓöÌÎļþÃû¡£

    -        targetjdk13£¬ÊÇ·ñ°ÑÄ¿±ê¶¨Îªjdk13£¬Èç²»ÄÜʹÓÃassert¡£

    -        failuresPropertyName£¬ÔÚÈÎÎñ½áÊøʱ£¬²åÈëÎ¥·´¹æÔòµÄºÅÂë

    -        encoding£¬¶ÁÔ´ÎļþʱËù²ÉÓõıàÂ룬Èçutf-8¡£

     

    5.1.2 TextµÄʹÓÃ

    °ÑbinĿ¼ÏµÄpmd.batÐÞ¸ÄΪ£º

    java -jar ..\lib\pmd-3.3.jar D:\temp\hpMTS_2.jar[HUANGXB1]  text[HUANGXB2]  rulesets/basic.xml[HUANGXB3] ,rulesets/braces.xml,rulesets/clone.xml,rulesets/codesize.xml,rulesets/controversial.xml,rulesets/coupling.xml, rulesets/design.xml,rulesets/favorites.xml,rulesets/finalizers.xml,rulesets/unusedcode.xml,rulesets/sunsecure.xml,rulesets/strings.xml,rulesets/strictexception.xml,rulesets/scratchpad.xml,rulesets/optimizations.xml,rulesets/naming.xml,rulesets/my-rules.xml,rulesets/logging-java.xml,rulesets/logging-jakarta-commons.xml,rulesets/junit.xml,rulesets/javabeans.xml,rulesets/imports.xml

     

    5.1      CheckStyle¹¤¾ß

    CheckStyleÄ¿Ç°×îа汾ÊÇ: checkstyle-4.0-beta6£¨ÏÂÔØÍøÒ³£©¡£

    CheckStyleµÄÔËÐл·¾³ÊÇj2se1.3»òÒÔºó°æ±¾£¬°²×°¹ý³ÌͬÑùÒ²Êǽâѹ¼´¿É¡£

     

    5.2.1    ant taskµÄʹÓÃ

    £¨1£©       ¸´ÖÆcheckstyle-4.0-beta6.jarµ½ÏîÄ¿µÄclasspathÖС£

    £¨2£©       ÐÞ¸Äbuild.xmlÎļþ£º

           classpath="${weblib.dir}/checkstyle-all-3.3.jar"/>