更新時間:2021-11-08 13:52:40 來源:動力節點 瀏覽1085次
是一個開源平臺,用于管理Java源代碼的質量。從 Sonar 1.6 版本開始,Sonar從一個質量數據報告工具,轉變成為現在的代碼質量管理平臺。
主要特點:
•代碼覆蓋:通過單元測試,將會顯示哪行代碼被選中
•改善編碼規則
•搜尋編碼規則:按照名字,插件,激活級別和類別進行查詢
•項目搜尋:按照項目的名字進行查詢
•對比數據:比較同一張表中的任何測量的趨勢
JDepend一個開放源代碼的可以用來評價Java程序質量的優秀工具,它遍歷Java class的文件目錄,以Java包(package)為單位,為每一個包/類自動生成 包的依賴程度,穩定性,可靠度等的評價報告,根據這些報告,我們可以得到包或類之間的依賴關系,并分析出包的穩定程度,抽象程度,是否存在循環依耐關系 等。
我們可以根據JDepend給出的報告數據,分析出我們的包是否是可靠的,穩定的,健壯的包,是否符合面向對象的設計原則。
一個具有穩定性,擴展性,可維護性的軟件系統要求系統設計遵循面向對象的設計原則。一般來說,面向對象的設計原則要求滿足高聚合,低耦合,禁止循環依賴等基本原則。
如果存在包與面向對象的設計原則有抵觸,則有必要對這些包加以重新設計或抽象。
JDepend的主要功能
JDepend生成的Java包的質量評價報告主要包括:
Number of Classes and Interfaces:實現類與抽象接口的數目
面向的設計原則之一The Stable Abstractions Principle (SAP):穩定抽象等價原則指出了包的穩定程度與它的抽象程度(接口的數目)成正比,也就是說,一個包內包含的接口所占的比重越大,這個包就越穩定。
Abstractness (A):包的抽象度。指一個包內包含的抽象類或接口占整個包中的類的比重。該值處于0,1之間,若A=0,說明包內不包含任何抽象類或接口;若A=1,說明包內全部是抽象類或接口。包的抽象度與穩定性之間的關系上面已經作了說明。
Afferent Couplings (Ca):向心耦合。依賴該包(包含的類)的外部包(類)的數目(i.e. incoming dependencies),該數值越大,說明該包的擔當的職責越大,也就越穩定。
Efferent Couplings (Ce):離心耦合。被該包依賴的外部包的數目(i.e. outgoing dependencies),該數值越大,說明該包越不獨立(因為依賴了別的包),也越不穩定。
Instability (I):衡量一個包的不穩定程度。I=Ce/(Ce+Ca)。它的值處于[0,1]之間。I=0時說明包是最穩定的,反之I=1則說明包極不穩定。
Distance from the Main Sequence (D): 該指標主要用來評價包的抽象程度與穩定程度的平衡關系,它可以用二維直線圖 A + I = 1 來表示。D=abs((A + I) - 1),也就是說D為 一個包的抽象度 + 包的不穩定程度 - 1 的絕對值。一個理想的包是:完全抽象的(A=1),非常穩定的(I=0),這時D=0;或者是:完全具體類構成的包(A=0),非常不穩定的 (I=1),這時同樣也有D=0。D=0說明包的抽象程度與穩定程度是平衡的,反之D=1說明包的平衡程度被嚴重破壞。
Package Dependency Cycles:包的循環依賴度。
面向對象的設計原則之一:The Acyclic Dependencies Principle (ADP) - OO設計的無環依賴原則要求包之間不能有循環依賴關系。
JDepend為我們提供了上述許多高級功能,為我們設計健壯的包/類提供了重要的參考數據,是一個不可多得的優秀工具。
CheckStyle是SourceForge下的一個項目,提供了一個幫助JAVA開發人員遵守某些編碼規范的工具。它能夠自動化代碼規范檢查過程,從而使得開發人員從這項重要,但是枯燥的任務中解脫出來。
CheckStyle檢驗的主要內容
·Javadoc注釋
·命名約定
·標題
·Import語句
·體積大小
·空白
·修飾符
·塊
·代碼問題
·類設計
·混合檢查(包活一些有用的比如非必須的System.out和printstackTrace)
從上面可以看出,CheckStyle提供了大部分功能都是對于代碼規范的檢查,而沒有提供象PMD和Jalopy那么多的增強代碼質量和修改代碼的功能。但是,對于團隊開發,尤其是強調代碼規范的公司來說,它的功能已經足夠強大。
•代碼度量能度量Halstead、LOC、易用性、專一性、封裝性等指標;
•報告輸出以Html格式輸出代碼的審查報告及代碼清單;
•源碼顯示語法彩色編碼,審查要素與源代碼聯動顯示;
•靜態審查涵蓋文件級、類級、函數級等三個級別的視圖顯示;
•圖文對照自動生成類圖、統計圖,并與相關代碼對照審查;
•規則定制注釋規則、命名規則的自定義設置與重復利用,提高知識共享度;
•數據字典支持SQL Server 2000和Oracle9i數據庫中的數據庫設計文件的瀏覽及相關文檔的輸出。
JavaNCSS 是一個開源的度量工具,提供圈復雜度的方法級的值。
Smelly這個插件能夠自動探測Java代碼中的Bad Smells。
Smelly在軟件開發中非常有用,它當前能夠探測以下這些Bad Smells:
(1)Data Class(純數據類):Class只有fields或get/set屬性,沒有任何行為。
(2)Large Class(龐大的類):單一類做過多的事情。
(3)Long Method(過長的Method):過長的代碼會使得Method難以理解和維護,應該將該Method分解成多個獨立功能的Method。
(4)High Comment Density(過多的注釋):注釋過多意味著該段代碼難于理解。
(5)Long Parameters List(過長的參數列表):一個Method中傳入過長的參數列表,使得參數列難以理解。修改參數列時將會使得參數前后不一致。
(6)Switch Statements(Switch語句):同樣的Switch語句出現在不同的方法或不同的Class中,這樣當需要增加新的CASE分支或者修改CASE分支內語句時,就必須找到所有的地方,然后進行修改。
(7)Java運行分析工具 jSonde
jSonde能夠幫助你分析java應用程序。她能夠生成序列圖、CPU和內存的性能評估以及不同格式的匯總:如jar依賴等。使用jSonde不需要特別的知識,她適用于不同的操作系統和Java環境。
jSonde主要由2個組件:
(1) 一個配置在Java進程中的代理,是為了收集信息
(2) 一個用來顯示代理收集的信息的GUI
CodeSecure V4是業界領先的靜態代碼分析工具,用于構建安全的應用程序。
EMMA 是一個用于檢測和報告 JAVA 代碼覆蓋率的開源工具。它不但能很好的用于小型項目,很方便得得出覆蓋率報告,而且適用于大型企業級別的項目。
EMMA 有許多優點,首先你能免費得到它,并把它用于自己項目的開發。它支持許多種級別的覆蓋率指標:包,類,方法,語句塊(basic block)和行,特別是它能測出某一行是否只是被部分覆蓋,如條件語句短路的情況。它能生成 text,xml,html 等形式的報告,以滿足不同的需求,其 html 報告提供下鉆功能,我們能夠從 package 開始一步步鏈接到我們所關注的某個方法。EMMA 能和 Makefile 和 Ant 集成,便于應用于大型項目。特別還須指出的一點是,EMMA 的效率很高,這對于大型項目來說很重要。
EMMA 是通過向 .class 文件中插入字節碼的方式來跟蹤記錄被運行代碼信息的。EMMA 支持兩種模式:On the fly 和 Offline 模式。
On the fly 模式往加載的類中加入字節碼,相當于用 EMMA 實現的 application class loader 替代原來的 application class loader。
Offline 模式在類被加載前,加入字節碼。
On the fly 模式比較方便,缺點也比較明顯,如它不能為被 boot class loader 加載的類生成覆蓋率報告,也不能為像 J2EE 容器那種自己有獨特 class loader 的類生成覆蓋率報告。這時,我們能求助于 Offline 模式。
EMMA 也支持兩種運行方式:Command line 和 Ant。
命令行一般和 On the fly 模式一起適用,對于簡單的項目能夠快速產生覆蓋率報告。通過 Ant task 來運行 EMMA 的話,特別適用于大型的項目。
除了上述介紹之外,還有很多工具可以使用,大家如果感興趣的話,可以關注一下動力節點的Java開發工具,里面有更多內容在等著大家去學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習