轉載前的話
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 插件再簡單不過了,只須要幾個步驟。在開始以前,最好把該插件下載站點的 URL 準備好。表 1 是本文用到的插件的列表:
工具 |
目的 |
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 這樣的工具能夠協助尋找那些可影響到可維護性、與編碼標準相沖突的地方,比方說,過大的類、太長的方法和未使用的變量等等。
|
有關 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 所示:
使用 CheckStyle 插件在 Eclipse 內嵌入編碼標準檢驗是一種很棒的方法,用這種方法能夠
在編碼時 積極地改進代碼,從而在開發週期的早期發現源代碼中潛在的缺陷。這麼作還有更多的好處,如節省時間、減小失敗,也所以會減小項目的成本。沒錯,這就是一種積極主動的方式!
Coverlipse 是一個用於 Cobertura 的 Eclipse 插件,Cobertura 是一個代碼覆蓋率工具,能夠用它來評估具備相應測試的源代碼的比率。Cobertura 也提供一個 Ant 任務和 Maven 插件,但用 Cobertura,您能夠
在編寫代碼時 評估代碼覆蓋率。您見過這樣的模式嗎?
經過選擇 Eclipse 菜單項
Run 安裝 Coverlipse 插件並將其和 JUnit 關聯起來,該操做會顯示一系列運行配置選項,例如 JUnit、SWT 應用程序和 Java™ 應用程序。右鍵單擊它並選擇
JUnit w/Coverlipse 節點中的
New。在這裏,須要肯定 JUnit 測試的位置,如圖 6 所示:
一旦單擊了
Run,Eclipse 會運行 Coverlipse 並在源代碼(如圖 7 所示)中嵌入標記,該標記顯示了具備相關 JUnit 測試的代碼部分:
正如您所見,使用 Coverlipse Eclipse 插件能夠更快地肯定代碼覆蓋率。例如,這種實時數據功能有助於在將代碼簽入 CM 系統
前 更好地進行測試。這對漸進編程來講意味着什麼呢?
Eclipse 的 PMD 插件提供了一項叫作 CPD(或複製粘貼探測器)的功能,用於尋找重複的代碼。爲在 Eclipse 中使用這項便利的工具,須要安裝具備 PMD 的 Eclipse 插件,該插件具備 CPD 功能。
爲尋找重複的代碼,請用右鍵單擊一個 Eclipse 項目並選擇
PMD | Find Suspect Cut and Paste,如圖 8 所示:
一旦運行了 CPD,您的 Eclipse 根目錄下就會建立出一個 report 文件夾,其中包含一個叫作 cpd.txt 的文件,文件中列示了全部重複的代碼。圖 9 中是一個 cpd.txt 文件的例子:
靠人工來尋找重複的代碼是一項挑戰,但使用像 CPD 這樣的插件卻能在編碼時輕鬆地發現重複的代碼。
JDepend 是個可免費獲取的開源工具,它爲包依賴項提供面向對象的度量值,以此指明代碼庫的彈性。換句話說,JDepend 可有效測量一個架構的健壯性(反之,脆弱性)。
除了 Eclipse 插件,JDepend 還提供一個 Ant 任務、Maven 插件和一個 Java 應用程序,用以獲取這些度量值。對於相同的信息,它們有着不一樣的傳遞機制;但 Eclipse 插件的特別之處和相應優勢是:它能以更接近源代碼(即,編碼時)的方式傳遞這條信息。
圖 10 演示了使用 Eclipse JDepend 插件的方法:經過右鍵單擊源文件夾並選擇
Run JDepend Analysis。必定要選擇一個含源代碼的源文件夾;不然看不到此菜單項。
圖 11 顯示了運行 JDepend Analysis 時生成的報告。左邊顯示包,右邊顯示針對每一個包的依賴項度量值。
正如您所見,JDepend 插件提供了有助於不斷觀察架構可維護性變化的大量信息 —— 這其中最大的好處是您能夠在編碼時看到這些數據。
「五大」代碼分析最後的一項是測量複雜度。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)可以幫助您在開發週期的早期改進代碼質量。無論您想要的工具或偏心的方法是什麼,重要的是:行動起來去積極改進代碼質量並讓手工代碼檢驗的過程變得更加有效。我估計您使用這些插件一段時間後,就再也離不開它們了。
得到產品和技術