Análise de código estático Scala (linter)

Uma das coisas populares em um projeto Java é integrar findbugs ou checkstyles para gerar avisos de tempo de compilação para muitas armadilhas comuns. Você pode fazer o mesmo no Scala com o uso do projeto do bode expiatório. https://github.com/sksamuel/scalac-scapegoat-plugin

Integre com sua construção adicionando o plug-in sbt à sua construção e então, no momento da compilação, o código que aciona uma das chamadas inspeções será sinalizado no console.

Um exemplo de saída seria algo como:

[warning] [scapegoat] Unused method parameter - org.sksamuel.util.ClassIterator.scala:46
[warning] [scapegoat] Slow list append - org.sksamuel.util.ClassIterator.scala:137
[warning] [scapegoat] Use of var - org.sksamuel.util.ClassIterator.scala:22
[warning] [scapegoat] Use of var - org.sksamuel.util.Iterator.scala:157
[ info] [scapegoat]: Inspecting compilation unit [FileUtil.scala]
[warning] [scapegoat] Empty if statement - org.sksamuel.util.FileUtil.scala:157
[warning] [scapegoat] Type shadowing - org.sksamuel.util.FileUtil.scala:180

Os tipos de coisas sinalizadas pela ferramenta incluem código não idiomático (por exemplo, unidade de retorno de método sem parâmetros), chamadas de métodos inseguros (por exemplo, Option.get ou asInstanceOf), código desnecessário (por exemplo, .toString em uma String) e melhorias gerais (por exemplo, selado trait não tem implementações, var pode ser val).