[轉帖] 讓開發自動化: 用 Eclipse 外掛程式提高代碼品質

來源:互聯網
上載者:User

轉自:http://www.javaeye.com/topic/140298

開發軟體時,我的主要目標之一是:要麼防止將缺陷引入代碼庫,要麼限制缺陷的生存期;換言之,要儘早找到缺陷。很顯然,越是瞭解如何編寫更好的代碼以及如何有效測試軟體,就越能及早地捕捉到缺陷。我也很想要一張能發現潛在缺陷的安全之網。

在本系列 八月份 的那期文章中,我得出了這樣的結論:將檢驗工具整合到構建過程(例如,使用 Ant 或 Maven)中,能夠建立起一種尋找潛在缺陷的方法。儘管這種方法使一致性成為可能並超越了 IDE,但它也有一點反作用。必須在本地構建軟體或等待 Continuous Integration 構建的運行。如果使用 Eclipse 外掛程式,就可以在通過 Continuous Integration 構建或整合 發現一些這樣的衝突。這就促成了我稱為漸進編程 的編程方式,在這種方式下,允許在編碼過程中進行一定程度的品質檢驗 —— 再也不能比這個更早了!

本文涵蓋了我所認為的 “五大” 程式碼分析領域:

· 編碼通訊協定

· 代碼重複

· 程式碼涵蓋範圍

· 依賴項分析

· 複雜度監控

可以用接下來的幾個靈活的 Eclipse 外掛程式來揭示這些分析領域:

· CheckStyle:用於編碼通訊協定

· PMD 的 CPD:協助發現代碼重複

· Coverlipse:測量程式碼涵蓋範圍

· JDepend:提供依賴項分析

· Eclipse Metric 外掛程式:有效地查出複雜度

Eclipse 不是您的構建系統
使用 Eclipse 外掛程式與您將這些檢驗工具用於構建過程並不矛盾。事實上,您想要確保的是:下列使用 Eclipse 外掛程式的規則就是應用到構建過程中的規則。

安裝 Eclipse 外掛程式

安裝 Eclipse 外掛程式再簡單不過了,只需要幾個步驟。在開始之前,最好把該外掛程式下載網站的 URL 準備好。表 1 是本文用到的外掛程式的列表:

1. 代碼改進外掛程式和相應的下載網站 URL

工具
目的
Eclipse 外掛程式的 URL

CheckStyle
編碼通訊協定分析
http://eclipse-cs.sourceforge.net/update/

Coverlipse
測試程式碼涵蓋範圍
http://coverlipse.sf.net/update

CPD
複製/粘貼檢驗
http://pmd.sourceforge.net/eclipse/

JDepend
包依賴項分析
http://andrei.gmxhome.de/eclipse/

Metrics
複雜度監控
http://metrics.sourceforge.net/update

知道了這些有用外掛程式的後,安裝外掛程式就是一個極簡單的過程。啟動 Eclipse,然後遵循下列步驟:

1. 選擇 Help | Software Updates | Find and Install, 1 所示:
1. 尋找並安裝 Eclipse 外掛程式

2. 選擇 Search for new features to install 選項按鈕,單擊 Next

3. 單擊 New Remote Site,輸入要安裝的外掛程式名和 URL(參見圖 2),單擊 OK,然後單擊 Finish 來顯示 Eclipse 更新管理器。
2. 配置新的遠端站台

4. 在 Eclipse 更新管理器中,有一個查看外掛程式各方面特性的選項。我通常選擇頂級項, 3 所示。選擇您需要的選項並單擊 Finish。Eclipse 現在安裝該外掛程式。您需要重啟 Eclipse 執行個體。
3. 安裝 Eclipse 外掛程式

請遵循上述這些步驟來安裝其他的 Eclipse 外掛程式;只需改變外掛程式名和相應的下載位置即可。

用 CheckStyle 校正標準

程式碼程式庫的可維護性直接影響著軟體的整個成本。另外,不佳的可維護性還會讓開發人員十分頭痛(進而導致開發人員的缺乏)—— 代碼越容易修改,就越容易添加新的產品特性。像 CheckStyle 這樣的工具可以協助尋找那些可影響到可維護性、與編碼通訊協定相衝突的地方,比方說,過大的類、太長的方法和未使用的變數等等。

有關 PMD
另一個叫做 PMD 的開源工具提供的功能和 CheckStyle 類似。我偏愛 CheckStyle,但 PMD 也有很多執著的追隨者,所以我建議您瞭解一下這個工具,畢竟它也頗受一些人的青睞。

使用 Eclipse 的 CheckStyle 外掛程式的好處是能夠在編碼過程中瞭解到原始碼內容相關的各種編碼衝突,讓開發人員更可能在簽入該代碼前真正處理好這些衝突。您也幾乎可以把 CheckStyle 外掛程式視作一個連續的代碼複查工具!

安裝 CheckStyle 外掛程式並做如下配置(參見圖 4):

1. 選擇 Project,然後選擇 Eclipse 菜單中的 Properties 功能表項目。

2. 選擇 CheckStyle active for this project 複選框,單擊 OK
4. Eclipse 中配置 CheckStyle 外掛程式

Eclipse 重新構建工作空間,並在 Eclipse 控制台中列示已發現的編碼衝突, 5 所示:

5. Eclipse CheckStyle 的代碼衝突列表

使用 CheckStyle 外掛程式在 Eclipse 內嵌入編碼通訊協定檢驗是一種很棒的方法,用這種方法可以在編碼時 積極地改進代碼,從而在開發週期的早期發現原始碼中潛在的缺陷。這麼做還有更多的好處,如節省時間、減少失敗,也因此會減少項目的成本。沒錯,這就是一種積極主動的方式!

用 Coverlipse 確認覆蓋率

Coverlipse 是一個用於 Cobertura 的 Eclipse 外掛程式,Cobertura 是一個程式碼涵蓋範圍工具,可以用它來評估具有相應測試的原始碼的比率。Cobertura 也提供一個 Ant 任務和 Maven 外掛程式,但用 Cobertura,您可以在編寫代碼時 評估程式碼涵蓋範圍。您見過這樣的模式嗎?

通過選擇 Eclipse 功能表項目 Run 安裝 Coverlipse 外掛程式並將其和 JUnit 關聯起來,該操作會顯示一系列回合組態選項,例如 JUnit、SWT 應用程式和 Java 應用程式。按右鍵它並選擇 JUnit w/Coverlipse 節點中的 New。在這裡,需要確定 JUnit 測試的位置, 6 所示:

6. 配置 Coverlipse 以擷取程式碼涵蓋範圍

一旦單擊了 Run,Eclipse 會運行 Coverlipse 並在原始碼( 7 所示)中嵌入標記,該標記顯示了具有相關 JUnit 測試的代碼部分:

7. Coverlipse 產生的具有嵌入類標記的報告

正如您所見,使用 Coverlipse Eclipse 外掛程式可以更快地確定程式碼涵蓋範圍。例如,這種即時資料功能有助於在將代碼簽入 CM 系統 更好地進行測試。這對漸進編程來說意味著什麼呢?

用 CPD 捕捉代碼重複

Eclipse 的 PMD 外掛程式提供了一項叫做 CPD(或複製粘貼探測器)的功能,用於尋找重複的代碼。為在 Eclipse 中使用這項便利的工具,需要安裝具有 PMD 的 Eclipse 外掛程式,該外掛程式具有 CPD 功能。

為尋找重複的代碼,請用按右鍵一個 Eclipse 項目並選擇 PMD | Find Suspect Cut and Paste, 8 所示:

8. 使用 CPD 外掛程式運行複製粘貼檢驗

一旦運行了 CPD,您的 Eclipse 根目錄下就會建立出一個 report 檔案夾,其中包含一個叫做 cpd.txt 的檔案,檔案中列示了所有重複的代碼。圖 9 中是一個 cpd.txt 檔案的例子:

9. Eclipse 外掛程式產生的 CPD 文字檔

靠人工來尋找重複的代碼是一項挑戰,但使用像 CPD 這樣的外掛程式卻能在編碼時輕鬆地發現重複的代碼。

使用 JDepend 進行依賴項檢查

JDepend 是個可免費擷取的開源工具,它為包依賴項提供物件導向的度量值,以此指明程式碼程式庫的彈性。換句話說,JDepend 可有效測量一個架構的健壯性(反之,脆弱性)。

除了 Eclipse 外掛程式,JDepend 還提供一個 Ant 任務、Maven 外掛程式和一個 Java 應用程式,用以擷取這些度量值。對於相同的資訊,它們有著不同的傳遞機制;但 Eclipse 外掛程式的特別之處和相應優點是:它能以更接近原始碼(即,編碼時)的方式傳遞這條資訊。

圖 10 示範了使用 Eclipse JDepend 外掛程式的方法:通過按右鍵源檔案夾並選擇 Run JDepend Analysis。一定要選擇一個含原始碼的源檔案夾;否則看不到此功能表項目。

10. 使用 JDepend Analysis 分析代碼

圖 11 顯示了運行 JDepend Analysis 時產生的報告。左邊顯示包,右邊顯示針對每個包的依賴項度量值。

11. Eclipse 項目中的包依賴項

正如您所見,JDepend 外掛程式提供了有助於不斷觀察架構可維護性變化的大量資訊 —— 這其中最大的好處是您可以在編碼時看到這些資料。

用 Metrics 測量複雜度

“五大”程式碼分析最後的一項是測量複雜度。Eclipse 提供一種叫做 Metrics 的外掛程式,使用該外掛程式可以進行許多有用的程式碼度量,包括循環複雜度度量,它用於測量方法中惟一路徑的數目。

安裝 Metrics 外掛程式並重啟 Eclipse;然後遵循下列步驟:

1. 按右鍵您的項目並選擇 Properties 菜單。在結果視窗中,選擇 Enable Metrics plugin 複選框並單擊 OK, 12 所示:
12. 為項目配置 Metrics

2. 從 Eclipse 中選擇 Window 菜單開啟 Metrics 視圖,然後選擇 Show View | Other...

3. 選擇 Metrics | Metrics View 開啟 13 中顯示的視窗。您需要使用 Java 透視圖並重新構建項目,從而顯示這些度量值。
13. 開啟 Eclipse 中的 Metrics View

4. 單擊 OK 來顯示 14 中的視窗。
在此例中,我正在查看一個單獨方法的循環複雜度。真正妙的是您可以雙擊 Metrics 列表中的方法,該外掛程式會在 Eclipse 編輯器中為此方法開啟原始碼。這就讓修正變得超級簡單(如果需要的話)!
14. 查看方法的循環複雜度

正如我之前提到過的,Eclipse Metrics 外掛程式還提供了許多功能強大的度量值,有助於您在開發軟體的過程中改進代碼 —— 可見,它是一個漸進編程意義上的外掛程式!

合適的才是最好的

正如您從本文中看到的那樣,將“五大”測量方法,即編碼通訊協定、代碼重複、程式碼涵蓋範圍、依賴項分析和複雜度監控,用於改進代碼品質十分重要。但適合您的才是好的。請記住還有其他許多可用的 Eclipse 外掛程式(比如 PMD 和 FindBugs)能夠協助您在開發週期的早期改進代碼品質。不管您想要的工具或偏愛的方法是什麼,重要的是:行動起來去積極改進代碼品質並讓手工代碼檢驗的過程變得更加有效。我估計您使用這些外掛程式一段時間後,就再也離不開它們了。

參考資料

學習

· 您可以參閱本文在 developerWorks 全球網站上的 英文原文 。

· 讓開發自動化 (Paul Duvall,developerWorks):閱讀完整的系列。

· “Improving Code Quality with PMD and Eclipse” (Levent Gurses,Jacoozi,2005 年 1 月):這篇文章將 PMD 視為 Eclipse 外掛程式,介紹了使用 PMD 改進代碼品質並縮短代碼檢驗過程的方法。

· “用 Cobertura 測量測試覆蓋率” (Elliotte Rusty Harold,developerWorks,2005 年 5 月):Elliotte Rusty Harold 分享了他的經驗,即如何使用程式碼涵蓋範圍的最佳實務來利用 Cobertura。

· “不要被覆蓋報告所迷惑” (Andrew Glover,developerWorks,2006 年 1 月):這篇文章進一步揭示了覆蓋率報告中的數字所代表的真正含義,也給出了這些數字所不能代表的含義。

· “Managing Your Dependencies with JDepend” (Glen Wilcox,OnJava,2004 年 1 月):在這篇文章中,Glen Wilcox 介紹了 JDepend,這是一個可以免費擷取的工具,它能洞悉軟體架構中的許多品質問題。

· “軟體架構的代碼品質” (Andrew Glover,developerWorks,2006 年 4 月):Andrew Glover 介紹了如何持續監控以及如何改正能夠影響軟體架構長期存續性的代碼品質問題。

· “ 讓開發自動化: 持續檢查” (Paul Duvall,developerWorks,2006 年 8 月):Paul Duvall 介紹了自動化的檢查工具(如 CheckStyle、JavaNCSS 和 CPD )是如何增強開發過程的以及何時應該使用這些工具。

· “Detecting Duplicate Code with PMD's CPD” (Tom Copeland,OnJava,2003 年 3 月):Tom Copeland 介紹了一種叫做 CPD(複製/粘貼檢測器)的開源工具,該工具用於尋找重複的 Java 代碼。

· “Maintain organizational standards with code audits” (testearly.com):編碼通訊協定有利於廣大開發人員對程式碼程式庫達成共識。

· developerWorks Java 技術專區:數百篇關於 Java 編程各方面的文章。

獲得產品和技術

· Eclipse plugin for PMD:使用 PMD 外掛程式在代碼中尋找複製粘貼問題。

· Eclipse plugin for JDepend:此外掛程式有助於分析程式碼程式庫中的包依賴項。

· Eclipse plugin for Cobertura:Coverlipse 是 用於 Cobertura 的 Eclipse 外掛程式,它提供程式碼涵蓋範圍資訊。

· Eclipse Metrics:此外掛程式提供度量值,如循環複雜度,非常有助於尋找複雜代碼。

· Eclipse plugin for CheckStyle:檢驗項目編碼通訊協定的遵循情況。

討論

· 提高代碼品質論壇:developerWorks 的積極貢獻者 Andrew Glover 是一名專註於改進代碼品質的顧問,他為這個由他主持的論壇帶來了很多相當專業的知識。

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.