43

¿Cuáles son las herramientas de cobertura de código disponibles para Scala?Herramientas de cobertura de código para Scala

Tengo pruebas de especificación de Scala y una configuración de integración continua de Hudson. ¿Hay algo que pueda enganchar a esta configuración para medir y rastrear la cobertura del código?

+3

me parece deslumbrante que esto haya sido cerrado por no ser constructivo. diablos, 33 personas lo votaron a favor.6 personas respondieron con un total combinado de 43 votaciones ascendentes. pero de alguna manera no es constructivo para la comunidad? 'cmon, todos ustedes. con el mayor respeto y amor, sugeriría aprender un poco sobre pedagogía y también cambiar "las reglas" de "nuestro formato de preguntas y respuestas". –

+1

De acuerdo. Si no le gusta que se cierre esto, vote para volver a abrir. –

+2

Desearía tener una reputación de 3000, así que puedo votar para volver a abrir ... – FelixM

Respuesta

9

Yo uso Cobertura. Sin embargo, cualquier herramienta de cobertura Java debería funcionar bien. El único inconveniente es que terminará con una gran cantidad de clases generadas automáticamente en su lista de cobertura. Esto se debe a que, mientras Scala se compila en un bytecode de JVM muy natural, se ve forzado a producir una cantidad anormalmente grande de clases para acomodar funciones funcionales comunes como la evaluación perezosa.

+0

Este es el problema clásico de instrumentar algo que no sea el código fuente: suenas la respuesta. Consulte la discusión de problemas relacionados al instrumentar archivos de clase en lugar de archivos fuente en esta respuesta SO: http://stackoverflow.com/a/15260092/120163 –

18

SCCT es un plugin del compilador que los instrumentos de las clases que se reúnen los datos de cobertura:

http://mtkopone.github.com/scct/

+0

afaik no hay forma de enganchar SCCT en Hudson? –

+2

SCCT ahora es scoverage. – mmlac

8

Uno de los problemas con los lenguajes no convencionales (como la Scala) es que las herramientas son difíciles de encontrar, ya que son difícil de construir

Este documento técnico Branch Coverage for Arbitrary Languages Made Easy (Yo soy el autor) describe cómo crear herramientas de cobertura de prueba para lenguajes de manera sistemática para ayudar a resolver este problema, utilizando una infraestructura genérica de creación de herramientas.

Hemos implementado test coverage tools for Java, C#, COBOL, C, C++, PL/SQL, ... de esta manera, incluidos los instrumentos, la recopilación de datos y la visualización e informe de la cobertura de prueba. Sería sencillo implementar Scala de esta manera.

Las soluciones planteadas por otras respuestas producen información confusa de la implementación de Scala ("clases genreadas automáticamente"). Lo que los desarrolladores quieren ver son datos de cobertura en términos de su código. El enfoque en el que usamos los instrumentos es el código fuente, por lo que los resultados se expresan por completo y solo en términos del código fuente; incluso el visor de cobertura de prueba muestra el código fuente cubierto con información de cobertura.

2

Yo uso jacoco. No requiere dependencias de compilación o tiempo de ejecución, clases de instrumentos sobre la marcha sin fase de instrumentación especial.

También se integró con Sonar y se publicó en Maven Central.

Aquí es ejemplo: https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

Me gustaría añadir una mejor información: más detallada makrup cobertura de sucursales, con exclusión de las clases/métodos generados, y para ser útil como ScalaDoc (ver SCCT informes por ejemplo)

3

He creado un plugin SBT llamado xsbt-coveralls-plugin que usa scct bajo el capó, pero publica los resultados en http://coveralls.io.

responsabilidad:he hecho más que construí este plugin ayer (10º marzo de 2013) por lo que no espero que sea perfecto todavía, pero enviamos errores y peticiones a la página de GitHub

Aún así, es bueno si desea codificar los informes de cobertura para que sean visibles públicamente. Vea un ejemplo de los resultados

Cuestiones relacionadas