任何人都知道如何在獨立Java項目中使用Checkstyle API來訪問關於java文件或項目的AST或Cyclomatic數字的信息?沒有檢查規則的CheckStyle API使用
因爲我發現所有關於使用它作爲一個整體和定義規則進行評估,但我只需要以編程方式檢索統計信息而無需使用評估。 我知道使用JDT AST可以,但它不提供用於計算某些指標的函數。
謝謝先進。
任何人都知道如何在獨立Java項目中使用Checkstyle API來訪問關於java文件或項目的AST或Cyclomatic數字的信息?沒有檢查規則的CheckStyle API使用
因爲我發現所有關於使用它作爲一個整體和定義規則進行評估,但我只需要以編程方式檢索統計信息而無需使用評估。 我知道使用JDT AST可以,但它不提供用於計算某些指標的函數。
謝謝先進。
嗯...... Checkstyle並不是真正意義上的構建第三方靜態代碼分析工具的工具包。我建議看看ANTLR項目。這是一個非常好的Java解析器,它可能已經可以滿足您的需求。
Checkstyle在引擎蓋下使用ANTLR。你可以通過下載Checkstyle sources來看看他們是如何做到的。這也揭示了他們的圈複雜性實現背後的邏輯。
但是,通常可以使用Checkstyle作爲非Checkstyle的框架。你可以通過writing a Checkstyle check來實現,這基本上意味着編寫一個Check
的子類。然後,您可以按照鏈接中的說明配置Checkstyle以運行您的課程。
如果您想簡單地收集由Checkstyle生成的指標,並將其用於Checkstyle之上的自己的應用程序,那麼我建議您正常運行Checkstyle並評估其報告,例如,通過執行listener或解析Checkstyle的XML輸出,通過調用-f xml
command line option來調用它。
P.S.從您對JDT AST的引用中,我假設您正在使用Java。如果是這樣,您可能需要將java標記添加到您的問題以獲得更多答案。
是的,Checkstyle的AST基於ANTLR庫。我發現我對Javaparser項目非常滿意,它具有比Eclipse JDT更清潔的API,但它基本滿足我的要求。我決定使用訪問者模式來遍歷AST並獲取信息來填充我自己的指標。 – Xiansong
當然,我想從Checkstyle中唯一要做的就是計算一些度量指標。 – Xiansong