2009-10-21 16 views
46

¿Existen herramientas para realizar el 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.¿Hay alguna herramienta para realizar análisis estático del código de Scala?

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

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

+1

¿Qué tipo de errores, más allá de los que el compilador ya está buscando? –

+1

No realmente, lo que el compilador puede encontrar también lo puedo encontrar fácilmente. Lo que busco es "código muerto", variables inicializadas innecesarias, etc. Para más análisis estáticos, consulte http://findbugs.sourceforge.net/ –

+1

Buena suerte en su búsqueda, pero analizadores del tipo de FindBugs representan mucho trabajo y Scala puede ser un lenguaje demasiado joven para tenerlo todavía. –

Respuesta

20

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.

+1

No es realmente adecuado para Scala debido al enfoque en cosas específicas de Java SDK, aunque con la gran cantidad de falsos positivos (todos en IMO) – monkjack

-2

No sé mucho sobre Scala, pero si es compatible con Java, el producto Solo de Klocwork podría funcionar. Puede encontrarlo aquí Klocwork Solo

+2

¿por qué es esta la respuesta aceptada? No puedo encontrar ninguna evidencia de que Klocwork 'resuelva' los problemas que has tenido al ejecutar Findbugs ...? – p3t0r

7

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

17

Ahora está 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, vea www.scalastyle.org.

8

Aquí es una respuesta actualizada a partir de agosto 2014 por algunos que tienen por objeto o funciona bien con Scala.

Personalmente, creo que las 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.

Cuestiones relacionadas