現在,我們有很多用於java中靜態代碼分析的工具。在一個應用程序中使用很多靜態分析工具
例如:
- PMD
- CPD
- FindBugs的
- CheckStyle的
- 聲納
- JDepend
等
在一個應用程序中使用所有這些工具是好的嗎(使用maven我們會在負面情況下構建失敗)。它們是可互換的還是大致相同的?或者它會過剩? 也許這些工具有一些類別?
現在,我們有很多用於java中靜態代碼分析的工具。在一個應用程序中使用很多靜態分析工具
例如:
等
在一個應用程序中使用所有這些工具是好的嗎(使用maven我們會在負面情況下構建失敗)。它們是可互換的還是大致相同的?或者它會過剩? 也許這些工具有一些類別?
聲納的目的是爲了從agregate所有核心分析引擎結果(如PMD,FindBugs的,Checkstyle的),所以這就是爲什麼聲納嵌入所有這些工具,加上許多。
所以我的建議是建立基於聲納連續檢查服務器,而不用擔心任何其他工具,你會得到最好所有的人都用聲納。
您可以閱讀有關的連續檢查以下博客條目:http://www.sonarsource.org/continuous-inspection-practice-emerges-with-sonar/
我只用FindBugs的 - 馬麗娟工具。 Realy有助於定義問題/潛在問題的地方。
但有些時候你應該在方式實現的是FindBugs的給redudant錯誤/警告代碼。認爲它可以被一些註釋壓制。
但是你從來沒有這個工具取代良好的代碼審查。
+1它可以用FindBugs'@ SuppressWarnings'註釋來抑制。參數是您查看錯誤詳細信息時可以看到的唯一字符串標識符。註釋名稱與java.lang.SuppressWarnings相同有點令人討厭。所以當兩者都用於同一個班級時,你必須使用完全合格的一個。 –
這取決於設定的要強制執行的規則。如果它提供額外的檢查,則使用其他工具纔有意義。另一個問題是,你必須配置所有的工具,使他們不檢查彼此矛盾的規則。最後,你會得到很多多餘的警告。 結論:嘗試找到一組提供所有需要檢查的工具。
他們是不是可以互換,但你不需要他們都在同一個應用程序。
分類:
在qulice.com(複合統計我們使用Checkstyle,PMD,FindBugs和一些我們的自定義規則。在某個地方,他們之間相互衝突,我們必須通過禁用其中一個規則中的某些規則來解決衝突。除此之外,這三個開源靜態分析器一起生活並執行最重要的(和簡單的)設計原則。
雖然他們在一定程度上幫助開發者,但這些報告中的大部分都是爲了向項目經理和客戶展示*。 – adarshr
如果Sonar包含PMD,Checkstyle和FindBugs,您爲什麼要使用它們? –
我不打算全部使用它們,我只是想看看它們的區別。據我瞭解使用聲納的最佳方法。 –