What's the current state of static analysis tools for Scala?
Solution 1:
Here is an updated answer as of August 2014 for some that are aimed or work well with Scala.
Personally I think the JVM or Java ones end up with far too many false positives, or have inspections that are aimed mostly at Java specific classes. For example, since in Scala we don't tend to use the Java Collections, all the findbugs collection based inspections are not needed. Another example is the inspections for use of static fields which are irrelevant in Scala.
- Scalastyle https://github.com/scalastyle/scalastyle
- Scapegoat https://github.com/sksamuel/scalac-scapegoat-plugin
- Wart remover https://github.com/typelevel/wartremover
- Linter https://github.com/HairyFotr/linter
- CPD https://github.com/sbt/cpd4sbt
- Abide https://github.com/scala/scala-abide
- Codacy-scalameta https://github.com/codacy/codacy-scalameta
Solution 2:
Would the wartremover be counted as an alternative? Also -Xlint
and -Ywarn-adapted-args
command line parameters of scalac might help catching certain types of bugs.
Solution 3:
Codacy developed a easy to customize tool - scala-meta: https://github.com/codacy/codacy-scalameta
take a look
and I think find-sec-bugs has some support for scala