tesis sobre gestion educacion conocimiento scala static-analysis sonarqube scalastyle

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.



¿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.