2011-11-01 38 views
8

我必須審覈基於JSF/CDI/EJB3.0/JPA的Java EE Web項目的代碼架構質量和可維護性(最終確定我們付出了什麼)涉及的技術)。如何審覈Java EE項目?

這可能不是正確的地方問,但你如何處理這種任務?基本上,我會從粗粒到細粒,即從整個體系結構到java代碼。 完全處理每個圖層會更好嗎? 我應該在低級圖層上花費更多時間嗎?

你評估整個事情(構建,部署,測試)嗎?

+2

這是什麼樣的審計?安全?代碼質量?還有別的嗎? –

+0

thx斯蒂芬,我在編輯我的問題 – LB40

回答

6

在較低的物理/實現級別上,我喜歡將maven作爲構建工具,然後配置廣泛的maven報告,以生成一個網站,其中包含各種代碼度量標準。

  • 對於初學者還有就是maven checkstyle plugin它可以在代碼的一致性報告到指定的標準,編碼標準的一致性有很多明顯的好處,大部分項目將簡單地採用的預配置的標準之一例如太陽或阿帕奇。
  • findbugs plugin列出潛在的編程錯誤
  • 有代碼覆蓋報告的選擇,我用cobertura。這些顯示了應用程序中哪些部分被單元測試覆蓋的行。 Maven支持構建生命週期中的單元測試,將它們作爲構建的一部分運行。這爲我節省了幾次。
  • PMD plugin標識重複的代碼,並突出顯示可能需要重構的區域。

一旦設置完成併成爲正常生成周期的一部分,它基本上會自行處理,而且您不必擔心會執行大型的每兩年一次的審覈/追趕。

許多報告都有閾值限制,如果違反規則,可以配置該閾值限制以使構建失敗,即超過n%的checkstyle錯誤會導致構建失敗。

Maven還提出了一種模塊化方法來構建應用程序,這樣會產生更小的更容易理解和可重用的模塊,以及關注點的分離,即用於演示和持久層的單獨模塊。 maven提供的主要好處是管理模塊之間的相互依賴關係。

雖然這並不能幫助您更高層次的體系結構層次,因此需要採取補充方法來涵蓋該維度。

看到這個鏈接一些樣本報告
http://maven.apache.org/plugins/maven-dependency-plugin/project-reports.html

2

爲了幫助在代碼級別的審計,可能在項目健康過一個軟件,可以幫助是SONAR ...這是很簡單的設置只是一些行家命令,帶有許多經過驗證的代碼標準,如代碼質量,可重用性,不良實踐測量等...

它運行在您的項目SVN或CVS上,並生成帶有圖形的網站,代表過去和當前狀態它正在創建,因此您可以導航項目數據並跟蹤改進或故障。

它還使用所有這些行家和喜歡的Cobertura對方的回答中列出Maven插件,發現漏洞等等

http://www.sonarsource.org/

只需下載並指向您的回購。

+0

我已經在使用它......它爲我節省了好幾次:) – LB40

0

除了已經提到的底層代碼度量和靜態分析外,我還會添加一個像Structure101這樣的工具來幫助分析更高級別的結構和依賴關係。它也可以幫助重構相同。

識別依賴羣集可以幫助確定應用程序的編寫是否考慮了關注點和模塊性,並且可以幫助您在考慮擴展或修改時識別潛在的難點。

0

一定要將它分解成關注區域並單獨解決。我能想到的考慮範圍有:

  1. 符合規定要求(希望這是特定的)
  2. 性能/可擴展性
  3. 代碼質量(包括約定你想跟着)
  4. 測試覆蓋率
  5. 插件/庫許可證

它看起來像其他人已經處理項目3和4.因爲你要求的任務(大概在你收到產品後)1和2可能必須是手動過程,除非你有已經寫好的自動功能測試(或者想自動化測試,以便你可以檢查你購買的未來版本)。 5是一個有時會被忽視但可能非常重要的項目。如果您要轉售此軟件,您可能不希望GPL代碼陷入困境。您需要檢查包含的每個圖書館的許可證,並確定哪些圖書館符合您的目標。

0

瞭解你的架構,你可以嘗試JavaDepend它給人的可能性與CQL查詢代碼,如SQL數據庫,有超過82個指標和許多互動的看法要深入設計,體系結構和實現中。