轉載前的話
appfuse中整合了很多代碼品質控制工具,他們都是整合在maven當中的,方便自動化檢測。
今天看到這篇文章,是eclipse外掛程式形式,可以在開發期發現問題,比起maven的整體跑起來,對每個開發人員來說還是要方便點,有借鑒價值。
不忙的時候我來寫篇maven篇。呵呵。。。
以下是轉載
如果能在構建代碼前發現代碼中潛在的問題會怎麼樣呢。很有趣的是,Eclipse 外掛程式中就有這樣的工具,比如 JDepend 和 CheckStyle,它們能幫您在軟體問題暴露前發現這些問題。在 讓開發自動化 的本期文章中,自動化專家 Paul Duvall 將帶來一些關於 Eclipse 外掛程式的例子,您可以安裝、配置和使用這些靜態分析外掛程式,以便在開發生命週期的早期預防問題。
|
關於本系列 作為一名開發人員,我們的工作就是為終端使用者將過程自動化;然而,我們當中有很多人卻忽視了將我們自己的開發過程自動化的機會。為此,我編寫了讓開發自動化 這個系列的文章,專門探索軟體開發過程自動化的實際應用,並教您何時 以及如何 成功地應用自動化。 |
|
開發軟體時,我的主要目標之一是:要麼防止將缺陷引入程式碼程式庫,要麼限制缺陷的生存期;換言之,要儘早找到缺陷。很顯然,越是瞭解如何編寫更好的代碼以及如何有效測試軟體,就越能及早地捕捉到缺陷。我也很想要一張能發現潛在缺陷的安全之網。
在本系列 八月份 的那期文章中,我得出了這樣的結論:將檢驗工具整合到構建過程(例如,使用 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,然後遵循下列步驟: 選擇 Help | Software Updates | Find and Install ,如圖 1 所示:
圖 1. 尋找並安裝 Eclipse 外掛程式
選擇 Search for new features to install 選項按鈕,單擊 Next 。 單擊 New Remote Site ,輸入要安裝的外掛程式名和 URL(參見圖 2),單擊 OK ,然後單擊 Finish 來顯示 Eclipse 更新管理器。
圖 2. 配置新的遠端站台
在 Eclipse 更新管理器中,有一個查看外掛程式各方面特性的選項。我通常選擇頂級項,如圖 3 所示。選擇您需要的選項並單擊 Finish 。Eclipse 現在安裝該外掛程式。您需要重啟 Eclipse 執行個體。
圖 3. 安裝 Eclipse 外掛程式
請遵循上述這些步驟來安裝其他的 Eclipse 外掛程式;只需改變外掛程式名和相應的下載位置即可。
用 CheckStyle 校正標準
程式碼程式庫的可維護性直接影響著軟體的整個成本。另外,不佳的可維護性還會讓開發人員十分頭痛(進而導致開發人員的缺乏)—— 代碼越容易修改,就越容易添加新的產品特性。像 CheckStyle 這樣的工具可以協助尋找那些可影響到可維護性、與編碼通訊協定相衝突的地方,比方說,過大的類、太長的方法和未使用的變數等等。
|
有關 PMD 另一個叫做 PMD 的開源工具提供的功能和 CheckStyle 類似。我偏愛 CheckStyle,但 PMD 也有很多執著的追隨者,所以我建議您瞭解一下這個工具,畢竟它也頗受一些人的青睞。 |
|
使用 Eclipse 的 CheckStyle 外掛程式的好處是能夠在編碼過程中瞭解到原始碼內容相關的各種編碼衝突,讓開發人員更可能在簽入該代碼前真正處理好這些衝突。您也幾乎可以把 CheckStyle 外掛程式視作一個連續的代碼複查工具。
安裝 CheckStyle 外掛程式並做如下配置(參見圖 4): 選擇 Project ,然後選擇 Eclipse 菜單中的 Properties 功能表項目。 選擇 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;然後遵循下列步驟: 按右鍵您的項目並選擇 Properties 菜單。在結果視窗中,選擇 Enable Metrics plugin 複選框並單擊 OK ,如圖 12 所示:
圖 12. 為項目配置 Metrics
從 Eclipse 中選擇 Window 菜單開啟 Metrics 視圖,然後選擇 Show View | Other... 。 選擇 Metrics | Metrics View 開啟如圖 13 中顯示的視窗。您需要使用 Java 透視圖並重新構建項目,從而顯示這些度量值。
圖 13. 開啟 Eclipse 中的 Metrics View
單擊 OK 來顯示如圖 14 中的視窗。
在此例中,我正在查看一個單獨方法的循環複雜度。真正妙的是您可以雙擊 Metrics 列表中的方法,該外掛程式會在 Eclipse 編輯器中為此方法開啟原始碼。這就讓修正變得超級簡單(如果需要的話)。
圖 14. 查看方法的循環複雜度
正如我之前提到過的,Eclipse Metrics 外掛程式還提供了許多功能強大的度量值,有助於您在開發軟體的過程中改進代碼 —— 可見,它是一個漸進編程意義上的外掛程式!
合適的才是最好的
正如您從本文中看到的那樣,將“五大”測量方法,即編碼通訊協定、代碼重複、程式碼涵蓋範圍、依賴項分析和複雜度監控,用於改進代碼品質十分重要。但適合您 的才是好的。請記住還有其他許多可用的 Eclipse 外掛程式(比如 PMD 和 FindBugs)能夠協助您在開發週期的早期改進代碼品質。不管您想要的工具或偏愛的方法是什麼,重要的是:行動起來去積極改進代碼品質並讓手工代碼檢 驗的過程變得更加有效。我估計您使用這些外掛程式一段時間後,就再也離不開它們了。
獲得產品和技術
Eclipse plugin for PMD :使用 PMD 外掛程式在代碼中尋找複製粘貼問題。 Eclipse plugin for JDepend :此外掛程式有助於分析程式碼程式庫中的包依賴項。 Eclipse plugin for Cobertura :Coverlipse 是 用於 Cobertura 的 Eclipse 外掛程式,它提供程式碼涵蓋範圍資訊。 Eclipse Metrics :此外掛程式提供度量值,如循環複雜度,非常有助於尋找複雜代碼。 Eclipse plugin for CheckStyle :檢驗項目編碼通訊協定的遵循情況。