testing - pruebas - reglas de analisis estatico de codigo
¿Hay alguna herramienta para realizar análisis estático del código de Scala? (9)
¿Hay alguna herramienta para realizar un análisis estático del código Scala, similar a FindBugs y PMD para Java o Splint para C / C ++? Sé que FindBugs funciona en el bytecode producido compilando Java, así que tengo curiosidad sobre cómo funcionaría en Scala.
Las búsquedas de Google (hasta el 27 de octubre de 2009) revelan muy poco.
Las búsquedas de Google (a partir del 1 de febrero de 2010) revelan esta pregunta.
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
Existe un plugin SBT para el detector de pasta de copia PMD CPD.
FindBugs analiza los códigos de bytes JVM, independientemente de la herramienta que los generó. Intenté usar FindBugs para verificar archivos .class generados por Scala. Desafortunadamente, FindBugs produjo muchas advertencias, incluso para los triviales programas de Scala.
Hay algo de trabajo pasando en esa dirección. Algunos enlaces:
- https://github.com/alacscala/scala-corpus
- https://github.com/alacscala/alacs
- https://bitbucket.org/jmhofer/findbugs4sbt/wiki/Home
También hay una discusión sobre la lista de correo scala, archivo disponible here .
Los Findbugs y otras herramientas basadas en bytecode funcionarán, en el sentido de que encontrarán fallas en tu código. Desafortunadamente, los enfoques basados en bytecode se han ajustado a la salida de los compiladores javac, lo que significa que es probable que produzcan tasas de falsos positivos muy altas y omitan problemas básicos, ya que Scala producirá expresiones diferentes al compilador javac.
Me estoy divirtiendo mucho con Codacy (por ejemplo, https://www.codacy.com/app/hejfelix/Frase/dashboard ) para proyectos de código abierto.
No sé mucho sobre Scala, pero si es compatible con Java, el producto Solo de Klocwork podría funcionar. Puedes encontrarlo aquí Klocwork Solo
scala copy paste detector, basado en AST. En busca de subárboles / AST copiados, e informar al respecto.
Es un complemento para sbt.
Ahora hay Scalastyle
que hace el trabajo que Checkstyle hace para Java. Esto incluye no solo el formateo de las verificaciones, sino también algunas verificaciones de fuentes conocidas de errores, como una clase que implementa hashCode () pero no es igual.
Actualmente hay unos 40 controles, pero los estamos agregando todo el tiempo.
Para obtener más información, visite www.scalastyle.org .