Habilitar la cobertura de código a partir de un script Ant

Para verificar que el código que está construyendo cumple los criterios de aceptación de cobertura de código especificados, puede habilitar la cobertura de código desde un script Ant. Para hacerlo, debe:

También puede ver los resultados de la cobertura de código en el entorno de trabajo.

Configurar un script Ant para habilitar la cobertura de código

Para configurar un script Ant para habilitar la cobertura de código, añada lo siguiente a la variable de entorno CLASSPATH:
<directorio_de_instalación>/plugins/com.ibm.rational.llc.engine_1.0.0.<número_de_versión>
y defina una tarea nueva en el archivo de construcción. Por ejemplo:

<taskdef name="instrument" classname="com.ibm.rational.llc.engine.instrumentation.anttask.InstrumentationTask" classpath="${directorio_de_instalación}/plugins/com.ibm.rational.llc.engine_1.0.0.<número_de_versión>"/>

El formato de la tarea de instrumentación es:

<instrument buildPath="" baseLineFile="" saveBackups="" outputDir=""/>

donde:

buildPath:
Especifica los archivos para los que se recopilarán datos de cobertura de código. La vía de acceso de construcción puede hacer referencia a un nombre de archivo de clase, a un nombre de archivo jar o a un nombre de directorio. Puede definirse igual que cualquier otra referencia de vía de acceso utilizada en Ant.


baseLineFile:
Especifica la vía de acceso en la que se almacena el archivo de línea base. El archivo de línea base es el archivo con el que se compara el código instrumentado y para el que se generan las estadísticas de cobertura de código. También sirve de entrada a la tarea ant de generación de informes.


saveBackups:
Especifica si se deben redenominar los archivos de clase y jar originales como *.bak. Si el valor de saveBackups es true, se generarán los archivos de copia de seguridad; si el valor de saveBackups es false, se sobrescribirán (y por lo tanto se perderán) los archivos originales.
Nota: saveBackups es opcional y el valor predeterminado es false.


outputDir:
Especifica la ubicación en la que se almacenarán los archivos instrumentados. De forma predeterminada, los archivos instrumentados se almacenan en la misma ubicación que los archivos que se instrumentan.

Ejemplo 1

En el ejemplo siguiente, los datos de cobertura de código se recopilan para todos los archivos en bin/, el archivo de línea base se almacena en blfile.coveragedata, no se generan copias de seguridad para estos archivos y los archivos instrumentados se almacenan en coverageData_files.

<instrument saveBackups="false" baseLineFile="blfile.coveragedata" buildPath="bin/" outputDir="coverageData_files"/>

Ejemplo 2

En el ejemplo siguiente, los datos de cobertura de código se recopilan para todos los archivos en bin a los que se hace referencia como build.Dir, el archivo de línea base se almacena en blfile.coveragedata y se genera una copia de seguridad de cada uno de estos archivos.

<path id="build.Dir"> <pathelement location="bin"/> </path>
<instrument saveBackups="true" baseLineFile="blfile.coveragedata" buildPathRef="build.Dir" />

Ejemplo 3

En el ejemplo siguiente, los datos de cobertura de código se recopilan para todos los archivos en bin, el archivo de línea base se almacena en blfile.coveragedata y se genera una copia de seguridad de cada uno de estos archivos.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <pathelement location="bin"/> </buildPath> </instrument>

Ejemplo 4

En el ejemplo siguiente, los datos de cobertura de código se habilitan para todos los subdirectorios de bin/ que contienen com en el nombre del directorio, excluyendo los archivos de esos subdirectorios cuyo nombre contiene Test. Se genera una copia de seguridad para cada archivo que se somete al análisis de cobertura de código y el archivo de línea base se almacena en blfile.coveragedata.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> <include name="**/*com*/*"> </fileset> </buildPath> </instrument>

Ejemplo 5

En el ejemplo siguiente, los datos de cobertura de código se habilitan para todos los archivos en bin/, con la excepción de los archivos de los subdirectorios de bin cuyos nombres contengan Test y bin2/. Se genera una copia de seguridad para cada archivo que se somete al análisis de cobertura de código y el archivo de línea base se almacena en blfile.coveragedata.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> </fileset> </buildPath> <buildPath> <pathelement location="bin2"/> </buildPath> </instrument>

Ejecutar el script Ant

Una vez configurado el script Ant para habilitar la cobertura de código, puede ejecutar el script Ant desde la línea de mandatos o desde el entorno de trabajo.

Ejecutar desde la línea de mandatos

Para ejecutar el script Ante desde la línea de mandatos:

  1. Establezca la variable de entorno JAVA_HOME en el directorio en el que se ha instalado JDK.
  2. Asegúrese de que la variable de entorno CLASSPATH contiene la vía de acceso completa y el nombre de archivo del archivo probekit.jar. El archivo probekit.jar está ubicado en la subcarpeta org.eclipse.hyades.probekit con el número de versión más alto y con la indicación de la hora más reciente de la carpeta plugins de su instalación de producto.
  3. Asegúrese de que la variable de entorno CLASSPATH contiene JAVA_HOME (la vía de acceso a la instalación Java de modo que JAVA_HOME/bin/java sea válido).
  4. Asegúrese de que la variable de entorno PATH contiene la vía de acceso completa a la subcarpeta de org.eclipse.hyades.probekit que sea adecuada para su plataforma. Por ejemplo:
  5. Establezca LLC_PLUGIN como vía de acceso a la carpeta plugins:
    set LLC_PLUGIN=<directorio_de_instalación>\plugins

Ejemplo

ant -lib=<directorio_de_instalación>\plugins\org.eclipse.hyades.probekit_<versión>\probekit.jar myTarget

Ejecutar desde el entorno de trabajo

Para ejecutar el script Ant desde el entorno de trabajo:

Generar las estadísticas de cobertura de código

Asegúrese de que la vía de acceso de clases contiene lo siguiente:
<directorio_de_instalación>\plugins\com.ibm.rational.llc.engine_1.0.0.<número_de_versión>

Para generar las estadísticas de cobertura de código en la línea de mandatos, en el directorio situado por encima del código, ejecute:

java -Dcoverage.out.file=C:\coverage_report\coverage_data.coveragedata com.ibm.rational.llc.example

Nota: deberá establecer la versión de Java para que coincida con la de la instalación del producto.

Generar informes de cobertura de código

Para generar un informe mediante Ant:
Descargue el BIRT Runtime Report Engine (Motor de creación de informes de tiempo de ejecución de BIRT) y desempaquete su contenido. Establezca las variables de entorno siguientes:

Por ejemplo,
<path id="lib.path"> <pathelement location="${env.LLC_COMMON_PLUGIN}"/> <pathelement location="${env.LLC_REPORT_PLUGIN}"/> <fileset dir="${env.BIRT_HOME}/lib" includes="*.jar"/> </path>

Defina una tarea nueva en el archivo de construcción para la generación de informe de cobertura de código, por ejemplo:

<taskdef name="code-coverage-report" classname="com.ibm.rational.llc.report.birt.adapters.ant.ReportGenerationTask" classpathref="lib.path"/>

El formato de la tarea de informe de cobertura de código es:

<code-coverage-report outputDir="" coverageDataFile="" baseLineFiles=""> <filters> <filter type="" value=""/> </filters> <configurations> <configuration name="" value=""/> </configurations> </code-coverage-report>

donde:

outputDir:
Especifica la ubicación en la que se almacenarán los resultados del informe.


coverageDataFile:
Especifica uno o varios archivos de datos de cobertura sobre los que generar el informe. Puede definirse igual que cualquier otra referencia de vía de acceso utilizada en Ant.


baseLineFiles:
Especifica uno o varios archivos de línea base que se generaron como parte de la tarea de instrumentación. Puede definirse igual que cualquier otra referencia de vía de acceso utilizada en Ant.


filters:
Opcional: se utiliza para filtrar resultados de informe.


filter:
type: el tipo de filtro a aplicar al informe.

value: el valor del filtro a aplicar al informe.
Filtros disponibles:

Configurations:
Opcional: se utiliza para especificar varias configuraciones de cálculo.


Configuration:
name: el nombre de la configuración.

value: el valor de la configuración.
Configuraciones disponibles:

Ejemplo 1

En el ejemplo siguiente, la generación de informes se recopila en coverage-data/coverage.coveragedata mediante coverage-data/blfile.coveragedata como el archivo de línea base, el informe se almacena en coverage-reports y el filtro line_coverage_threshold se aplica con un umbral del 80 por ciento. Los constructores predeterminados se excluyen de los cálculos de cobertura de código.

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage.coveragedata" baseLineFiles="coverage-data/blfile.coveragedata"> <filters> <filter type="line_coverage_threshold" value="80"/> </filters> <configurations> <configuration name="excludeDefaultConstructor" value="true"/> </configurations> </code-coverage-report>

Ejemplo 2

En el ejemplo siguiente, la generación de informes se recopila en dos archivos de cobertura coverage1.coveragedata y coverage2.coveragedata mediante blfile1.coveragedata y blfile2.coveragedata como archivos de línea base, el informe se almacena en coverage-reports. De forma predeterminada, los constructores predeterminados se incluyen en los cálculos de cobertura de código.

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage1.coveragedata;coverage-data/coverage2.coveragedata" baseLineFiles="coverage-data/blfile1.coveragedata;coverage-data/blfile2.coveragedata"> </code-coverage-report>

Ver los resultados de la cobertura de código en el entorno de trabajo

Para ver los resultados de la cobertura de código de script Ant en el entorno de trabajo:

Inhabilitar la cobertura de código

Para inhabilitar las clases instrumentadas mediante la tarea ant, vuelva a compilar el proyecto o sustituya los archivos .class por los archivos .class.bak si se habilitó saveBackups.

Conceptos relacionados
Indicadores de cobertura de código

Tareas relacionadas
Habilitar la cobertura de código
Configurar los niveles y filtros de cobertura de código
Configurar los indicadores de cobertura de código
Analizar informes de cobertura de código