자바 정적 검색 도구 에 대한 간단 한 소개

11290 단어 자바
[ :http://www.taobaotest.com/blogs/qa?bid=9015 ]

          、      、       。     
           ,            ,             。
                      、    、     ,       
              ,         、   ,           , 
                  ;               ,      、
                 ,           、           ,
              、       、      、           
             。”。                        ,
                :        ,                ,
                 ,    ,    ...             
                              。

      :

PMD
     1)PMD         ,      Java    ,        :
        1)   bug:  try/catch/finally/switch  
        2)      :        、  、     
        3)     :String/StringBuffer   
        4)      :    if  、    while     for  
        5)     :  /         /  bugs

     2)PMD  :
       1)           ,PMD            。    , 
           Java          。
       2)PMD              ,          Java     
           
       3)           ,  Java               。

     3)  ,PMD   JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、
      CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、
      IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator  Emacs
           。

     4)PMD        :               。        :
              Java         PDM,      ,   XPath  
         ,       Java            。

     5)   PDM    ,PMD                 。      
        ,          。PMD         bug,         
            ,      bug  ,    PMD             。
        ,PMD               。

FindBugs
     1)FindBugs              ,  LGPL    ,  
                    。   style format,      
       bug         ,             (false positives)
         。 bytecode(*.class、*.jar)       。      ,  
         Eclipse  plug-in,    Ant  task       。

     2)findbugs        :  findbugs  60  Bad practice,80  
      Correntness,1 Internationalization,12 Malicious code
      vulnerability,27 Multithreaded correntness,23 Performance,
      43 Dodgy。

     3)Findbugs     :
       1)FindBugs             ,              ,
               (class  )      。
       2)FindBugs       、      ( Ant、Maven )、   
        Swing GUI   Eclipse NetBeans IDE        。                
      3)FindBugs        XML ,         。
      4)              FindBugs,              
                          。   
      5)   style format,       bug        ,
                     (false positives)   。    

    4)FindBugs    bug pattern  :
        java programing      bug pattern,equals()           
      Null pointer    ,Method     check   ,    field   ,
      Multi-thread    ,         ,     wait(),  Code     ,
             object ,       return 

Checkstyle
     1)  : Checkstyle     Java          。
     2)  :
       1)                           , 
                             。
       2)Checkstyle        ,           ,  
                         ,           。
       3)Checkstyle          IDE   ,         
            Checkstyle,           。
       4)Checkstyle           ,      ,      
                ,       ,            ,  
                    ,  Checkstyle           ,
             ,        bug  。
     3)CheckStyle      :
       1) Java          ,     。
       2)      (checkstyle-metadata.xml          )
         register check  。
       3)                ,       ,       
         ( AST )    style  (AST,A child-Sibling Tree,   
                ,    TokenTypes    。)
     4)        Style   ,         。
               com.puppycrawl.tools.checkstyle.api.Check   ,
                       : public int[] getDefaultTokens()
 public void visitToken(DetailAST ast).          ,
                  ,    getDefaultTokens      AST  ,
             visitToken          , ,           
        visitToken

Hammurapi
     1)  : Hammurapi           /  (review)  。       
              Java     。                 。       
                  ,       。  Checkstyle  ,  Ant      
                 XML       。

     2)  :
       1)Hammurapi            。
       2)Hammurapi          ,                   ,
                       。
       3)Hammurapi    :
         Hammurapi                 。          
                        。             。  , 
                    :3+4.                5    
           。     ,  +       。  3 4      Hammurapi
           ANTLR(         )       。  ANTLR API      。
               ,Hammurapi     API,  ANTLR  JSEL(Java   
             ),        。        ,            
                 。         ,      (Visitor  )   
                 。        ,                  
                。  

Lint4j
     1)  :Lint4J     Java        ,    Java     
                  ,          、           。
                   IDE      
     2)  :
       1)        
       2)   bug
       3)                  
       4)      EJB  

Sonar
     1)  :        Sonar          。Sonar 2.0   
              Java       、          ,Sonar 2.1  
                                  。      
            CheckStyle,PMD,Findbugs        ,      ,
                   ,      ,              
                    。               ,   

     2)  :
        1)    :      ,           。
        2)      。
        3)      :    ,  ,           。
        4)    :           。
        5)    :               。
        6)    

     3)Sonar2.1:
       Sonar   Squid            、Sonar       
           ,        ,          ,       
                                。
       Squid         、Java API      
                  、           。
       Sonar 2.1 새로운 특성:
        1)     “Libraries”  ,               ,       
           Maven     。
             Sonar             ,      
                         。  ,       
               ,                      。
        2)            “Dependencies”  。   ,  
                     Commons Logging 1.1     。
        3)      플러그 인  Sonar   。        
         “System Info”         、     Java     
              。         Sonar             。
        4)                     。
              Sonar                     Maven
                  。               
          Web Service     size widget            。

JDepend
     1)JDepend              Java         ,
          Java class     , Java (package) 
         ,     /            ,   ,    
            ,      ,               
        ,          ,    ,            。
           JDepend       ,          
          ,   ,    ,             。

    2)  :
      1)      
      2)     
      3)           
      4)       
      5)  package     

    3)Depend   Java            :    
      1)Number of Classes and Interfaces:           
      2)Abstractness (A):     。              
                 。
      3)Afferent Couplings (Ca):    。    (    )  
          ( )   (i.e. incoming dependencies),     ,
                    ,     。
      4)Efferent Couplings (Ce):    。            
       (i.e. outgoing dependencies),     ,        
         (        ),     。
      5)Instability (I):           。I=Ce/(Ce+Ca)。     
        [0,1]  。I=0         ,  I=1        。
      6)Distance from the Main Sequence (D):              
                    ,          A + I = 1    。
      7)Package Dependency Cycles:       。

8.  IBM Checking Tool for Bugs Errors and Mistakes(  BEAM)
    1)   :  IBM            ,           C, C++   Java
                            ,             。   
                            ,          。
    2)  :
      1)         ,             
      2)    bug       ,        ,      
      3)          (theorem proving)              
              ,                    

 9. LDRA Testbed  
    1)  :LDRA Testbed                          ,
                     。                  ,     
                 ,        、           ,       
                。             ,                
                   。
    2)LDRA Testbed         ,           ,         。
       1)    :     ,            。
       2)    :           ,        ,        
            
    3)   LDRA testbed    
                         
         、             
                     

     LDRA Testbed           
           
           
           

    LDRA Testbed   :
             
             
               
             40%  
                75%  
                    

10.   Yasca 
  1)   :yasca                 ,              
            findbugs/pmd/jlint/rats/cppcheck,            java
          c++       .Yasca           ,           
             、          。          ,    FindBugs
           PMD ,JLint , Cppcheck ,         ,          
         Yasca          ,       HTML , CSV  , XML , 
         SQLite ,     。

좋은 웹페이지 즐겨찾기