2014-03-24 70 views
55

我在Scala中看到了一個關於靜態分析的StackOverflow問題,但那個在2009年得到了答案。如您所知,Scala工具變化非常迅速。斯卡拉靜態分析工具的當前狀態是什麼?

因此,我想知道是否有人熟悉Scala中的靜態分析工具的當前狀態可以告訴我是否有一個與Scala相當的Findbugs。我發現Findbugs爲Scala發佈了許多不必要的警告,可能與「對象」單例編譯爲字節碼的方式有關,因爲特性等。我聽說Scalastyle不僅是Java的CheckStyle的Scala版本,它也是包括Findbugs和PMD。但是如果它沒有實現Findbugs和/或PMD,那麼還有其他工具可以補充它嗎?或者,Scalastyle不僅適用於樣式檢查,還可以改善代碼質量?

另外,斯卡拉與Sonar的集成呢? Scala Sonar插件(與Scalastyle合作)可靠嗎?

回答

0

爲什麼你不喜歡使用一個非常強大的Scalac編譯器?例如。它有一些有用的選擇,例如

  • -unchecked
  • -deprecation
  • -feature

...等。

+3

的問題是編譯器是否使所有的建議。例如,javac並不總是建議Eclipse和IntelliJ靜態分析器所建議的所有「lint」類型的東西。如果編譯器提供了一切,則不需要說Findbugs或PMD。我假設在Scala世界中,情況是相同的 - 即並非所有的代碼都是由編譯器檢查的,比如複製粘貼(非DRY)代碼,或者不管它是什麼。 – marekinfo

8

wartremover作爲替代方案嗎?另外-Xlint-Ywarn-adapted-args scalac的命令行參數可能有助於捕獲某些類型的錯誤。

57

下面是截至2014年8月的一些更新的答案,這些答案是針對一些與Scala保持一致的工作。個人而言,我認爲JVM或Java結果會帶來太多的誤報,或者檢查主要針對Java特定的類。例如,因爲在Scala中我們不傾向於使用Java集合,所以不需要所有基於findbugs集合的檢查。另一個例子是檢查使用Scala中無關的靜態字段。

+0

考慮將scala.meta添加到列表中? https://github.com/codacy/codacy-scalameta – pedrorijo91

+0

好的,我添加了它。 – monkjack