sobre - ¿Cuál es el estado actual de las herramientas de análisis estático para Scala?
tesis gestion del conocimiento (5)
¿Por qué no te gusta usar un compilador Scalac muy poderoso? Por ejemplo, tiene algunas opciones útiles, por ejemplo
- -desenfrenado
- -deprecación
- -característica
... etc.
Vi una pregunta de StackOverflow sobre el análisis estático en Scala, pero esa fue respondida en 2009. Como saben, las herramientas de Scala están cambiando muy rápidamente.
Por lo tanto, me preguntaba si alguien familiarizado con el estado actual de las herramientas de análisis estático en Scala podría decirme si hay, por ejemplo, un equivalente de Findbugs para Scala. Descubrí que Findbugs genera muchas advertencias innecesarias para Scala, probablemente relacionadas con la forma en que el singleton "objeto" se compila en bytecode, debido a rasgos, etc. Escuché que Scalastyle no es solo una versión de Scala del CheckStyle de Java, sino que también incluye bits de Findbugs y PMD. Pero si no implementa todos los Findbugs y / o PMD, ¿hay otras herramientas que lo complementen? O, ¿Scalastyle es bueno no solo para comprobar el estilo, pero es bueno para mejorar la calidad del código?
Además, ¿qué hay de la integración de Scala con, por ejemplo, Sonar? ¿Es confiable el complemento Scala Sonar (que funciona con Scalastyle)?
Aquí hay una respuesta actualizada a partir de agosto de 2014 para algunos que están orientados o funcionan bien con Scala.
Personalmente, creo que los JVM o Java terminan con demasiados falsos positivos o tienen inspecciones que están destinadas principalmente a clases específicas de Java. Por ejemplo, dado que en Scala no tendemos a utilizar las colecciones de Java, no se necesitan todas las inspecciones basadas en la colección de findbugs. Otro ejemplo son las inspecciones para el uso de campos estáticos que son irrelevantes en Scala.
- Scalastyle https://github.com/scalastyle/scalastyle
- Scapegoat https://github.com/sksamuel/scalac-scapegoat-plugin
- Removedor de verrugas https://github.com/typelevel/wartremover
- Linter https://github.com/HairyFotr/linter
- CPD https://github.com/sbt/cpd4sbt
- Respete https://github.com/scala/scala-abide
- Codacy-scalameta https://github.com/codacy/codacy-scalameta
Según Codacy, las siguientes son las herramientas (actualizadas hasta octubre de 2015)
- ScalaStyle
- WartRemover
- https://github.com/scala/scala-abide
- Scapegoat - sbt-chivo expiatorio funciona con Scala 2.11.x +
Fuente: blog de Codacy sobre las herramientas de análisis estático de Scala
¿Sería el https://github.com/typelevel/wartremover contado como una alternativa? También los parámetros de la línea de comando -Xlint
y -Ywarn-adapted-args
de scalac pueden ayudar a detectar ciertos tipos de errores.
Codacy desarrolló una herramienta fácil de personalizar: scala-meta: https://github.com/codacy/codacy-scalameta
echar un vistazo
y creo que find-sec-bugs tiene algo de apoyo para scala