Las herramientas de cobertura de código Java son de dos tipos: primero, herramientas que agregan declaraciones al código fuente de Java y requieren su recompilación. En segundo lugar, herramientas que instrumentan el código de bytes , ya sea antes o durante la ejecución. El objetivo es averiguar qué partes del código se prueban registrando las líneas de código ejecutadas al ejecutar una prueba.
JCov
Desarrollador (es) | Leonid Arbouzov, Alexander Petrov, Vladimir Generalov, Serguei Chukhontsev, Oleg Uliankin, Gregory Steuck, Pavel Ozhdikhin, Konstantin Bobrovsky, Robert Field, Alexander Kuzmin, Leonid Mesnik, Sergey Borodin, Andrey Titov, Dmitry Fazunuschenko, Leonid Fedorkov |
---|---|
Lanzamiento estable | 3.0 / 1 de septiembre de 2014 |
Tipo | Cobertura de código |
Licencia | GPL v2 (con la excepción Classpath) |
Sitio web | wiki |
JCov es la herramienta que se ha desarrollado y utilizado con Sun JDK (y más tarde Oracle JDK) desde el comienzo de Java: desde la versión 1.1. JCov es capaz de medir y reportar la cobertura del código Java . JCov se distribuye bajo los términos de la Licencia Pública GNU (versión 2, con la Excepción Classpath). JCov se ha convertido en código abierto como parte del proyecto de herramientas de código OpenJDK en 2014.
Características
JCov es capaz de informar los siguientes tipos de cobertura de código:
- Cobertura de bloque
- Cobertura de línea
- Cobertura de sucursales
- Cobertura del método
JCov implementa dos formas diferentes de guardar los datos recopilados:
- En un archivo en el sistema de archivos
- En un servidor (también conocido como "capturador de red")
JCov funciona instrumentando el código de bytes de Java utilizando dos enfoques diferentes:
- Instrumentación estática que se realiza por adelantado, cambiando el código probado
- Instrumentación dinámica que se realiza sobre la marcha mediante un agente Java
JCov tiene algunas características distintivas más que incluyen, entre otras:
- Cobertura de campo
- Cobertura de API abstracta
- Cobertura directa / indirecta
- Información de cobertura por prueba (también conocida como "escalas de prueba")
- API y SPI públicas que permiten implementar un filtrado personalizado y / o minar los datos de cobertura
Herramientas que utilizan JCov
- Oracle JDK (SE y ME)
- JCK (el kit de compatibilidad de Java)
- Varios TCK Java SE y Java ME
- SDK de Java FX
- Generador de escenas Java FX
JaCoCo
Desarrollador (es) | Marc Hoffmann, Brock Janiczak, Evgeny Mandrikov y Mirko Friedenhagen |
---|---|
Lanzamiento estable | 0.8.6 / 15 de septiembre de 2020 |
Tipo | Cobertura de código |
Licencia | EPL |
Sitio web | www |
JaCoCo es un conjunto de herramientas de código abierto para medir y reportar la cobertura del código Java . JaCoCo se distribuye bajo los términos de la Licencia Pública de Eclipse . Fue desarrollado como un reemplazo de EMMA, [1] bajo el paraguas del complemento EclEmma para Eclipse.
Características
JaCoCo ofrece instrucciones, cobertura de líneas y sucursales.
A diferencia de Atlassian Clover y OpenClover , que requieren instrumentar el código fuente, JaCoCo puede instrumentar el código de bytes de Java utilizando dos enfoques diferentes:
- como JCov sobre la marcha mientras se ejecuta el código con un agente Java [2]
- como Cobertura y JCov antes de la ejecución (fuera de línea)
Y se puede configurar para almacenar los datos recopilados en un archivo o enviarlos a través de TCP. Los archivos de múltiples ejecuciones o partes de código se pueden combinar fácilmente. [3] A diferencia de Cobertura y EMMA, es totalmente compatible con Java 7, Java 8, [4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 y Java 15.
Herramientas que usan o incluyen JaCoCo
- Complemento SonarQube JaCoCo: uno de los valores predeterminados para los análisis de cobertura dentro de la plataforma de gestión de calidad del código SonarQube
- EclEmma Eclipse (software) Code Coverage Plugin, anteriormente basado en EMMA [5]
- Complemento Jenkins JaCoCo [6]
- Soporte de Netbeans JaCoCo [7]
- IntelliJ IDEA desde v11 [4]
- Complemento de Gradle JaCoCo [8]
- Servicios de equipo de Visual Studio [9]
- TeamCity [10]
- SELLO ( https://www.stamp-project.eu/ ) [11]
OpenClover
Desarrollador (es) | Marek Parfianowicz, Grzegorz Lewandowski |
---|---|
Lanzamiento estable | 4.4.1 / 11 de octubre de 2019 |
Tipo | Cobertura de código |
Licencia | Licencia Apache 2.0 |
Sitio web | openclover .org |
OpenClover es un sucesor gratuito y de código abierto de Atlassian Clover, creado como una bifurcación a partir del código base de Clover publicado por Atlassian en 2017. Contiene todas las características del Clover original (la edición del servidor). El proyecto OpenClover está dirigido por desarrolladores que mantuvieron Clover en los años 2012-2017. [12]
OpenClover utiliza la técnica de instrumentación de código fuente y maneja los lenguajes Java, Groovy y AspectJ . Algunas de sus características incluyen: control fino sobre el alcance de la medición de cobertura, optimización de pruebas e informes sofisticados.
OpenClover se integra con Ant , Maven , Gradle , Grails , Eclipse , IntelliJ IDEA , Bamboo , Jenkins , Hudson , Griffon , SonarQube y AspectJ.
Cobertura
Desarrollador (es) | Steven Christou |
---|---|
Lanzamiento estable | 2.1.1 / 26 de febrero de 2015 |
Repositorio | github .com / cobertura / cobertura |
Tipo | Cobertura de código |
Licencia | GPL 2.0 |
Sitio web | cobertura .github .io / cobertura / |
Cobertura es una herramienta de código abierto para medir la cobertura del código. Lo hace instrumentando el código de bytes.
Serenidad
Desarrollador (es) | Michael Couck |
---|---|
Lanzamiento estable | 1.0 / 8 de diciembre de 2013 |
Tipo | Cobertura de código |
Licencia | Licencia de software Apache versión 2.0 |
Sitio web | wiki .jenkins-ci .org / display / JENKINS / Serenity + Plugin |
Serenity es un conjunto de herramientas de código abierto para medir y reportar la cobertura del código Java . Además de la cobertura, se miden las principales métricas del código: - complejidad ciclométrica, estabilidad, abstracción y distancia de la principal. Los datos del informe se conservan en una base de datos de objetos y están disponibles a través de Jenkins / Hudson. La interfaz replica visualmente la interfaz Eclipse IDE.
Serenity mejora dinámicamente el código de bytes, haciendo innecesario un paso posterior a la compilación. Se admiten los proyectos Ant y Maven. La configuración se realiza en xml, un ejemplo de Ant sería:
-> key = "included.packages" value = "your.package.name.here" /> key = "included.adapters" value = "cobertura, complejidad, dependencia" /> -> line = "-javaagent: serenity / serenity.jar" />
Y un ejemplo de configuración de Maven sería:
< paquetes.incluidos > -Dincluded.packages = your.package.name.here -Dincluded.adapters = cobertura, complejidad, dependencia -javaagent: serenity / serenity.jar -Xms512m -Xmx1024m $ {included.packages} $ {included.adapters}
Para obtener un ejemplo completo de una configuración, consulte la wiki de Jenkins en https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin .
Se admiten los esclavos Jenkins y los proyectos de varios módulos de Maven.
Testwell CTC ++ para Java
Desarrollador (es) | Tecnología Verifysoft |
---|---|
Lanzamiento estable | 8.0. / 30 de junio de 2016 |
Tipo | Cobertura de código |
Licencia | Propiedad |
Sitio web | verifysoft .com / en _ctcpp .html |
Testwell CTC ++ es una herramienta de cobertura de código para C , C ++ , Java y C # . El desarrollo de esta herramienta comenzó en 1989 en Testwell en Finlandia. Desde 2013, Verifysoft Technology, una empresa de Offenburg , Alemania , ha continuado con el soporte y el desarrollo . Testwell CTC ++ analiza todos los niveles de cobertura de código hasta la cobertura de condición / decisión modificada y la cobertura de condiciones múltiples. [13] La herramienta funciona con todos los compiladores . [14]
Agente de cobertura de código IntelliJ IDEA
Desarrollador (es) | JetBrains |
---|---|
Tipo | Cobertura de código |
Licencia | Apache 2.0 |
Sitio web | github .com / JetBrains / intellij-cobertura |
IntelliJ IDEA Code Coverage Agent es una herramienta de cobertura de código integrada en IntelliJ IDEA IDE y el servidor TeamCity CI. Admite cobertura de sucursales y seguimiento de cobertura por prueba.
Herramientas históricas notables
Trébol
Desarrollador (es) | Atlassian |
---|---|
Lanzamiento estable | 4.1.2 / 11 de octubre de 2016 |
Tipo | Cobertura de código |
Licencia | Apache 2.0 |
Sitio web | atlassian .com |
Clover es una utilidad de análisis de cobertura de código Java comprada y desarrollada por Atlassian . En abril de 2017, Atlassian anunció el fin de la vida útil de Clover y, al mismo tiempo, lo abrió bajo la licencia Apache 2.0.
Clover utiliza una técnica de instrumentación de código fuente (a diferencia de Cobertura y JaCoCo, que utilizan instrumentación de código de bytes), que tiene sus ventajas (como la capacidad de recopilar métricas de código) y desventajas (es necesaria la recompilación de fuentes). [15] Algunas de sus características incluyen informes históricos, gran control sobre el proceso de recopilación de cobertura, conjunto de herramientas de línea de comandos y API para integración heredada y más.
Clover también permite reducir el tiempo de prueba ejecutando solo las pruebas que cubren el código de la aplicación que se modificó desde la compilación anterior. Esto se denomina Optimización de pruebas [16] y puede provocar grandes caídas en la cantidad de tiempo dedicado a la espera de que se completen las pruebas automatizadas.
Clover viene con una serie de integraciones desarrolladas por Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo) y por la comunidad de código abierto (Gradle, Griffon, Jenkins, Hudson, Sonar).
En abril de 2017, Atlassian anunció que ya no lanzarían nuevas versiones de Clover después de la versión 4.1.2, y su código se puso a disposición como software de código abierto alojado en Bitbucket . [17] [18]
EMMA
Desarrollador (es) | Vlad Roubtsov |
---|---|
Lanzamiento estable | 2.1 / 13 de mayo de 2005 |
Repositorio | sourceforge .net / proyectos / emma / |
Tipo | Cobertura de código |
Licencia | Licencia pública común 1.0 |
Sitio web | emma .sourceforge .net |
EMMA es un conjunto de herramientas de código abierto para medir y reportar la cobertura del código Java . EMMA se distribuye bajo los términos de Common Public License v1.0.
EMMA no se encuentra actualmente en desarrollo activo; la última versión estable tuvo lugar a mediados de 2005. Como reemplazo, se desarrolló JaCoCo. [19] EMMA funciona envolviendo cada línea de código y cada condición con una bandera, que se establece cuando se ejecuta esa línea. [20]
Características
- clases de instrumentos para la cobertura fuera de línea (antes de que se carguen) o sobre la marcha (utilizando un cargador de clases de aplicación de instrumentación).
- Tipos de cobertura admitidos: clase, método, línea, bloque básico. EMMA puede detectar cuando una sola línea de código fuente está cubierta solo parcialmente.
- Las estadísticas de cobertura se agregan en los niveles de método, clase, paquete y "todas las clases".
- Tipos de informes de salida: texto sin formato, HTML, XML. Todos los tipos de informes admiten el desglose hasta una profundidad de detalle controlada por el usuario. El informe HTML admite la vinculación de código fuente.
- Los informes de salida pueden resaltar elementos con niveles de cobertura por debajo de los umbrales proporcionados por el usuario.
- Los datos de cobertura obtenidos en diferentes instrumentación o ejecuciones de prueba se pueden fusionar.
- es posible volcar o restablecer los datos de cobertura de forma remota y sin una salida de JVM.
- no requiere acceso al código fuente y se degrada elegantemente al disminuir la cantidad de información de depuración disponible en las clases de entrada.
- puede instrumentar
.class
archivos individuales o completos.jars
(en su lugar, si se desea). También es posible un filtrado de subconjuntos de cobertura eficiente. - La integración de compilación de Makefile y ANT se admite en pie de igualdad.
- La sobrecarga de tiempo de ejecución de la instrumentación agregada es pequeña (5-20%) y el instrumento de código de bytes o en sí mismo es muy rápido (principalmente limitado por la velocidad de E / S del archivo). La sobrecarga de memoria es de unos cientos de bytes por clase Java.
- EMMA es Java 100% puro, no tiene dependencias de bibliotecas externas y funciona en cualquier JVM de Java 2 (incluso 1.2.x).
Referencias
- ^ Misión JaCoCo
- ^ Patroklos Papapetrou (19 de diciembre de 2012). "Comparación de herramientas de cobertura de código (JaCoCo, Cobertura, Emma) en Sonar" . Solo el software importa . Consultado el 3 de marzo de 2013 .
- ^ Medir la cobertura mediante pruebas de integración con sonda - Actualizado
- ^ a b "Cobertura de código" . Ayuda web de IntelliJ IDEA 12.0 . JetBrains. Archivado desde el original el 26 de abril de 2013 . Consultado el 3 de marzo de 2013 .
- ^ EclEmma, complemento de cobertura de código Eclipse
- ^ Complemento Jenkins JaCoCo
- ^ Soporte de NetBeans JaCoCo
- ^ Complemento de Gradle JaCoCo
- ^ Integración de JaCoCo en Visual Studio Team Services
- ^ Integración de JaCoCo en TeamCity
- ^ Jacoco es utilizado por la herramienta STAMP DSpot como un selector de pruebas (visto como una aptitud) para seleccionar pruebas que aumentan la cobertura y tienen una ruta de ejecución única
- ^ OpenClover - Acerca de nosotros
- ^ Testwell CTC ++ admite todos los niveles de cobertura
- ^ Testwell CTC ++ admite todos los compiladores
- ^ "¿Por qué Clover usa instrumentación de código fuente?"
- ^ Optimización de prueba
- ^ "Atlassian Clover ahora es de código abierto" . atlassian.com . 11 de abril de 2017.
- ^ "atlassian / clover" . bitbucket.org .
- ^ Archivos de cobertura de código EMMA en SourceForge.net
- ^ Experto Spring MVC y Web Flow; Por Seth Ladd, Darren Davison, Steven Devijver, Colin Yates, pág. 289
enlaces externos
- Comparación de OpenClover, Clover, Cobertura, JaCoCo, JCov, CodeCover y PIT
- JaCoCo vs Clover2
- Elija su herramienta de cobertura de código en Sonar 2.2 , un poco desactualizada, ya que, mientras tanto, JaCoCo admite la cobertura de sucursales
- Prueba de aplicaciones Java con Visual Studio Team Services