¿Existen herramientas para realizar análisis estáticos de código Scala? [cerrado]


¿Existen herramientas para realizar análisis estáticos de código Scala, similares a FindBugs y PMD para Java o Splint para C/C++? Sé que FindBugs funciona en el bytecode producido por la compilación de Java, así que tengo curiosidad por saber cómo funcionaría en Scala.

Las búsquedas en Google (al 27 de octubre de 2009) revelan muy poco.

Las búsquedas en Google (a partir del 01 de febrero de 2010) revelan esta pregunta.

Author: Jonas, 2009-10-21

9 answers

FindBugs analiza los códigos de bytes JVM, independientemente de la herramienta que los generó. He intentado usar FindBugs para comprobarlo .archivos de clase generados por Scala. Desafortunadamente, FindBugs produjo muchas advertencias, incluso para programas Scala triviales.

 20
Author: Chris Peterson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-02 23:43:52

Ahora Hay Scalastyle que hace el trabajo que Checkstyle hace para Java. Esto incluye no solo comprobaciones de formato, sino también algunas comprobaciones de fuentes conocidas de errores, como una clase que implementa hashCode() pero no es igual.

Actualmente hay alrededor de 40 comprobaciones, pero las estamos agregando todo el tiempo.

Para más información, ver www.scalastyle.org .

 17
Author: Matthew Farwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-12 18:40:29

Se está trabajando en esa dirección. Algunos enlaces:

También hay una discusión en la lista de correo de scala, archivo disponible aquí.

 16
Author: folone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-20 14:09:39

Aquí está una respuesta actualizada a partir de agosto de 2014 para algunos que están dirigidos o funcionan bien con Scala.

Personalmente creo que las JVM o Java terminan con demasiados falsos positivos, o tienen inspecciones que están dirigidas principalmente a clases específicas de Java. Por ejemplo, dado que en Scala no solemos usar las Colecciones Java, no son necesarias todas las inspecciones basadas en la colección findbugs. Otro ejemplo son las inspecciones para el uso de campos estáticos que son irrelevantes en Scala.

 8
Author: monkjack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-04 10:55:51

Findbugs y otras herramientas basadas en bytecode funcionarán, en el sentido de que encontrarán fallas en su código. Desafortunadamente, los enfoques basados en bytecode se han ajustado contra la salida de los compiladores javac, lo que significa que es probable que produzcan tasas de falsos positivos muy altas, y se pierdan los problemas básicos, porque Scala producirá expresiones diferentes que el compilador javac.

 7
Author: Michael Donohue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-05 15:02:54

Me estoy divirtiendo mucho con Codacy (por ejemplo, https://www.codacy.com/app/hejfelix/Frase/dashboard ) para proyectos de Código abierto

 3
Author: Felix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-13 07:43:58

Hay un complemento SBT para PMD copy paste detector CPD.

Https://github.com/sbt/cpd4sbt

 1
Author: Petteri Hietavirta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-10 11:51:10

Scala copy paste detector, basado en AST. Buscando subárboles/ASTs copiados y pegados, e informar al respecto.

Es un plugin para sbt.

Https://github.com/ajtkulov/scala-cpd

 1
Author: Pavel Ajtkulov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-16 09:28:50

No se mucho acerca de Scala, pero si es compatible con Java Klocwork Solo producto podría funcionar. Puedes encontrarlo aquí Klocwork Solo

 -2
Author: user193749,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-21 11:50:06