2012-09-12 18 views
17

Estoy intentando configurar informes de cobertura de código simples para una codificación de equipo en Scala/Java mixto a aprox. una proporción de 90/10 y toparse con algunos obstáculos serios. Anteriormente configuré & Sonar administrado con gran éxito con un equipo solo de Java, pero no parece ser una opción.¿Hay una cobertura de código de nivel Sonar equivalente para Scala?

Sonar w/Scala plugin tiene errores y parece ser compatible con proyectos de Scala, no mixtos.

SCCT se integra con nuestra construcción maven, pero falla con fallas de prueba falsas negativas repetidamente.

encubierto ha sido mi mejor suerte hasta el momento; Está integrado con nuestro maven build & genera informes, pero no están archivados ni alojados en ningún lugar como lo serían con Sonar. También parece que no hay un índice central que facilite la navegación por los informes generados.

He leído las respuestas aquí en StackOverflow, pero en su mayoría datan de 2010 y sugieren que no hay una solución decente disponible. Ha cambiado esto?

¿Hay algo obvio que me falta?

+1

¿Cómo funcionará Cobertura? La última vez que lo revisé era bastante utilizable, aunque no estaba integrado con Sonar. – ron

+0

@ron: Ese es el siguiente en mi lista. Logré que Undercover escribiera los informes en el formato XML de Cobertura, pero como el plugin de Cobertura no se ejecutó, Jenkins se niega a reconocer que existen informes de cobertura de código. Recuerdo que escuché algo acerca de que Cobertura no se maneja bien con todas las clases de Java que Scala puede generar, pero creo que lo descubriré. ¡Manténganse al tanto! – warandpeace

+1

@ron: Cobertura + Jenkins Cobertura Plugin está funcionando bastante bien. Preciso y legible, muestra las tendencias y me permite profundizar. No es del todo Sonar, ¡pero funciona! – warandpeace

Respuesta

7

Sobre el lado del sonar:

  • sí, el desarrollo Scala Sonar Plugin está actualmente estancado. Fue iniciado por la comunidad, pero nadie ha ofrecido hacerse cargo todavía. Si hay algunos voluntarios, estaremos encantados de guiarlos y ayudarlos.

  • con respecto al soporte de varios idiomas dentro de un solo proyecto, el soporte vendrá en Sonar. No puedo darte una hoja de ruta para ello, pero actualmente estamos pensando en cómo agregar este soporte en Sonar en los próximos lanzamientos, por lo que este es un problema a corto plazo.

+0

4 años después y todavía no hay palabras sobre el soporte de Scala para Sonar. La última palabra de Freddy Mallet fue simplemente para confirmar lo obvio: https://groups.google.com/forum/#!topic/sonarqube/MkcW9tFG8UY – RCross

6

Puede usar SCCT o JaCoCo.

  • SCCT: Es compatible con Scala hasta la versión 2.10, pero el desarrollo parece estar estancado durante unos 9 meses. Es compatible con Scala de forma nativa y funciona con ambos, Maven y SBT.
  • JaCoCo está bajo desarrollo activo. Admite cualquier versión de Scala, pero no de forma nativa, sino en el nivel de bytecode. Por lo tanto, puedes obtener algunos artefactos, p. algunos códigos solo obtienen una cobertura parcial, porque el bytecode generado tiene una ruta de código teórico que JaCoCo ve (pero que nunca se puede ejecutar desde el código de Scala).

JaCoCo puede ser un poco difícil de configurar con Maven y Scala. Aquí algunos trucos:

  1. Utilice la variante con el agente lanzador. No use la variante con bytecode de preprocesamiento.
  2. Al usar JaCoCo con Maven: Hay una tarea Maven (jacoco:prepare-agent) que producirá la expresión correcta para el iniciador del agente y lo almacenará en una propiedad. A continuación, puede usar esta propiedad como un parámetro de línea de comando cuando ejecuta la máquina virtual Java.
  3. Parametrice el iniciador del agente, para que varios lanzamientos (por ejemplo, para ejecutar diferentes pruebas) escriban en el mismo archivo de registro. Algunos complementos IDE tendrán problemas para analizar dicho archivo, pero el plugin JaCoCo Hudson, por ejemplo, funciona bien.
+1

gracias por sus respuestas, me las arreglé para obtener un informe de cobertura de SCCT y nosotras Jenkins plugin de cobertura para leerlo. Sin embargo SCCT incluye todo en su cobertura de código. Me gustaría poder excluir algunas carpetas como en JaCoCo. jacoco.excludes en jacoco.Config: = Seq ("vistas *", "* Rutas *", "controladores * rutas *", "controladores * Reversa *", "controladores * javascript *", "controlador * ref *") , – Roch

+0

¿Sabes si puedo hacer eso? – Roch

+0

Su mejor opción podría ser procesar el archivo cobertura.xml. Puede hacerlo fácilmente con la integración de maven Groovy (http://books.sonatype.com/mcookbook/reference/ch02s02.html). Alternativamente, puede modificar el archivo CoberturaReporter.scala (https://github.com/mtkopone/scct/blob/master/src/main/scala/reaktor/scct/report/CoberturaReporter.scala) –

Cuestiones relacionadas