2012-05-25 37 views
1

現在,我們有很多用於java中靜態代碼分析的工具。在一個應用程序中使用很多靜態分析工具

例如:

  • PMD
  • CPD
  • FindBugs的
  • CheckStyle的
  • 聲納
  • JDepend

在一個應用程序中使用所有這些工具是好的嗎(使用maven我們會在負面情況下構建失敗)。它們是可互換的還是大致相同的?或者它會過剩? 也許這些工具有一些類別?

+0

雖然他們在一定程度上幫助開發者,但這些報告中的大部分都是爲了向項目經理和客戶展示*。 – adarshr

+0

如果Sonar包含PMD,Checkstyle和FindBugs,您爲什麼要使用它們? –

+0

我不打算全部使用它們,我只是想看看它們的區別。據我瞭解使用聲納的最佳方法。 –

回答

3

聲納的目的是爲了從agregate所有核心分析引擎結果(如PMD,FindBugs的,Checkstyle的),所以這就是爲什麼聲納嵌入所有這些工具,加上許多。

所以我的建議是建立基於聲納連續檢查服務器,而不用擔心任何其他工具,你會得到最好所有的人都用聲納。

您可以閱讀有關的連續檢查以下博客條目:http://www.sonarsource.org/continuous-inspection-practice-emerges-with-sonar/

1

我只用FindBugs的 - 馬麗娟工具。 Realy有助於定義問題/潛在問題的地方。

但有些時候你應該在方式實現的是FindBugs的給redudant錯誤/警告代碼。認爲它可以被一些註釋壓制。

但是你從來沒有這個工具取代良好的代碼審查。

+1

+1它可以用FindBugs'@ SuppressWarnings'註釋來抑制。參數是您查看錯誤詳細信息時可以看到的唯一字符串標識符。註釋名稱與java.lang.SuppressWarnings相同有點令人討厭。所以當兩者都用於同一個班級時,你必須使用完全合格的一個。 –

0

這取決於設定的要強制執行的規則。如果它提供額外的檢查,則使用其他工具纔有意義。另一個問題是,你必須配置所有的工具,使他們不檢查彼此矛盾的規則。最後,你會得到很多多餘的警告。 結論:嘗試找到一組提供所有需要檢查的工具。

1

他們是不是可以互換,但你不需要他們都在同一個應用程序。

分類:

  1. 報告 - 聲納提供您正在使用的其他工具很好的視覺儀表盤(加的JUnit等)
  2. 靜態分析 - PMD,FindBugs的,的CheckStyle
  3. 重複的代碼 - CPD
  4. 設計/包依賴關係 - JDepend
0

qulice.com(複合統計我們使用Checkstyle,PMD,FindBugs和一些我們的自定義規則。在某個地方,他們之間相互衝突,我們必須通過禁用其中一個規則中的某些規則來解決衝突。除此之外,這三個開源靜態分析器一起生活並執行最重要的(和簡單的)設計原則。