<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            Java靜態(tài)檢測工具的簡(jiǎn)單介紹(2)

            發(fā)表于:2015-03-26來(lái)源:uml.org.cn作者:yeyongna點(diǎn)擊數: 標簽:
            2)Checkstyle提供了高可配置性,以便適用于各種代碼規范,所以除了使用它提供的幾種常見(jiàn)標準之外,你也可以定制自己的標準。 3)Checkstyle提供了支持大多

              2)Checkstyle提供了高可配置性,以便適用于各種代碼規范,所以除了使用它提供的幾種常見(jiàn)標準之外,你也可以定制自己的標準。

              3)Checkstyle提供了支持大多數常見(jiàn)IDE的插件,大部分插件中就含有最新的Checkstyle,就不用費心再部署一份了。

              4)Checkstyle可以檢查代碼的很多方面,從傳統觀(guān)點(diǎn)看,它主要是用來(lái)檢查代碼層面的,自從第三版以后,它的內部架構作了重大改變,很多其它意圖的檢測加了進(jìn)來(lái),現在Checkstyle可以檢查像類(lèi)設計的問(wèn)題,重復代碼,如鎖的雙重檢查的bug模式。

              3.CheckStyle的主要流程是:

              1)對Java文件進(jìn)行詞法語(yǔ)法分析,生成語(yǔ)法樹(shù)。

              2)載入配置文件(checkstyle-metadata.xml以及自定義的配置文件)register check事件。

              3)按照深度優(yōu)先遍歷對語(yǔ)法樹(shù)進(jìn)行解析,按照注冊的事件,在到達某些節點(diǎn)( AST ) 時(shí)進(jìn)行style檢查(AST,A child-Sibling Tree,是語(yǔ)法樹(shù)中的某個(gè)節點(diǎn),其類(lèi)型在TokenTypes類(lèi)中定義。)

              4)我們所說(shuō)的自定義Style的檢查,就是在第二步設定的。

              這里牽涉到一個(gè)叫 com.puppycrawl.tools.checkstyle.api.Check 的類(lèi),我們通常需要重載其中的兩個(gè)函數: public int[] getDefaultTokens()和public void visitToken(DetailAST ast). 這兩個(gè)函數的含義為,在遍歷語(yǔ)法樹(shù)的過(guò)程中,每當到達getDefaultTokens函數所返回的AST類(lèi)型,程序就進(jìn)入visitToken進(jìn)行具體的檢查和分析,即,真正的分析檢查過(guò)程是在visitToken中實(shí)現的。

              Hammurapi

              1.定義: Hammurapi它是一個(gè)開(kāi)源的代碼審查/評審(review)工具。它可以幫助改進(jìn)Java代碼的質(zhì)量。它可以基于一套設計規范來(lái)分析代碼庫。當它碰到違反規范的地方,會(huì )在報告中標識。就像Checkstyle一樣,它與Ant無(wú)縫集成并且由基于XML配置文件來(lái)驅動(dòng)。

              2.特點(diǎn):

              1)Hammurapi是用來(lái)強制代碼設計規范的。

              2)Hammurapi是一個(gè)遵循設計的工具,提供了自動(dòng)而且一致的方式來(lái)實(shí)現設計規范,因此使代碼評審更加有效而輕松。

              3)Hammurapi如何工作:

              Hammurapi這樣的代碼分析工具都帶有語(yǔ)言分析器。語(yǔ)言分析器是一種輸入語(yǔ)言代碼并輸出抽象語(yǔ)法樹(shù)的工具。這個(gè)樹(shù)上的節點(diǎn)代表語(yǔ)言標識。例如,考慮一下簡(jiǎn)單的算術(shù)表達式:3+4. 語(yǔ)言分析器會(huì )解析他成為一個(gè)如圖5所示的語(yǔ)法樹(shù)。在這個(gè)樹(shù)中,節點(diǎn)+代表操作符標識。節點(diǎn)3和4是操作數標識Hammurapi使用ANTLR(另一個(gè)語(yǔ)言識別工具)作為語(yǔ)言分析器。然而ANTLR API是相當底層的。為改善可用性,Hammurapi使用另一個(gè)API,基于A(yíng)NTLR 的JSEL(Java源程序工程類(lèi)庫),來(lái)訪(fǎng)問(wèn)抽象語(yǔ)法樹(shù)。 一旦樹(shù)構建完成,一種樹(shù)遍歷算法就被用來(lái)訪(fǎng)問(wèn)樹(shù)中每一個(gè)節點(diǎn)。每次訪(fǎng)問(wèn)到一個(gè)節點(diǎn),一種回調機制(Visitor模式)被用來(lái)提示相應的檢查器。在這些回調方法中,檢查器收集相關(guān)的信息來(lái)確定是否有違反規范的地方存在。

              Lint4j

              1.定義:Lint4J是一個(gè)針對Java的源代碼分析工具,它可以對Java源碼和字節碼進(jìn)行靜態(tài)分析,判斷其中是否存在死鎖、性能問(wèn)題或者伸縮性問(wèn)題。它可以集成到任何IDE種或構建系統

              2.特點(diǎn):

              1)檢測代碼語(yǔ)法規則

              2)潛在的bug

              3)檢測編碼模式對代碼可讀性及大小的影響

              4)檢測是否違反EJB規范

              Sonar

              1.定義:代碼質(zhì)量管理工具Sonar提供了設計與架構度量。Sonar 2.0引入了針對Java應用的設計分析、架構與面向對象的度量,Sonar 2.1可以檢測到未使用的方法以及對不建議使用方法的調用。是一個(gè)集成了CheckStyle,PMD,Findbugs的代碼校驗規則 ,重復代碼發(fā)現,代碼測試覆蓋率, 代碼注釋率,及所有的檢測率變化追蹤的完美代碼質(zhì)量檢查工具。它包含了代碼質(zhì)量檢測的七個(gè)方面

              2.特點(diǎn):

              1)代碼覆蓋:通過(guò)單元測試,將會(huì )顯示哪行代碼被選中。

              2)改善編碼規則。

              3)搜尋編碼規則:按照名字,插件,激活級別和類(lèi)別進(jìn)行查詢(xún)。

              4)項目搜尋:按照項目的名字進(jìn)行查詢(xún)。

              5)對比數據:比較同一張表中的任何測量的趨勢。

              6)單元測試

              3.Sonar2.1:

              Sonar還基于Squid引入了一個(gè)全新的規則引擎、Sonar解析器既可以處理源代碼,也可以處理字節碼,解析器帶有內建的規則,可以檢測未使用的私有與保護方法以及客戶(hù)端對不建議使用的方法的調用。Squid通過(guò)分析應用源代碼、Java API和外部程序庫的字節碼來(lái)決定哪些方法、類(lèi)和屬性是不建議使用的。

            原文轉自:http://www.uml.org.cn/Test/201208245.asp

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>