es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El informe agregado de Jacoco está generando un archivo Exec en lugar de XML.

Pregunta

Tenemos un proyecto maven de varios módulos. Estamos usando Java8.

-Parent
-- Child 1
-- Child 2
-- Coverage-Report

Todos los proyectos tienen casos de prueba unitarios que funcionan bien y tienen una cobertura superior al 85%. El archivo pom.xml del proyecto principal tiene el perfil jacoco y el plugin jacoco-maven-plugin que se muestran a continuación:

      <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.6</version>
            <configuration>
                <destFile>${sonar.coverage.jacoco.xmlReportPaths}</destFile>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

En el módulo Coverage-Report, solo hay un archivo pom.xml que sirve para la agregación del informe. Tiene el perfil jacoco como se muestra a continuación:

    <profile>
        <id>jacoco</id>
        <activation/>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>report-aggregate</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>report-aggregate</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

Para generar el informe, estamos usando el siguiente comando:

mvn clean verify -Pjacoco

Observamos que se genera el archivo que se menciona en el archivo pom.xml del proyecto principal:

<sonar.coverage.jacoco.xmlReportPaths>${maven.multiModuleProjectDirectory}/ocapi-promotion-service-coverage-report/target/site/jacoco-aggregate/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>

Sin embargo, este archivo, jacoco.xml, no es un XML válido. Tiene algunos caracteres codificados como se muestra a continuación. (algunas líneas del archivo):

��ca6191af5ae0-1a24a201}-�Sy}-ƌ|pW�\����;org/springframework/context/annotation/BeanAnnotationHelper�w~�j�zI�ZMorg/springframework/boot/autoconfigure/condition/FilteringSpringBootCondition������e֢+org/sp

En Jenkins, vemos el siguiente error:

Caused by: java.nio.charset.MalformedInputException: Input length = 1

He seguido un artículo de la comunidad de fuentes de Sonar https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151 que proporciona algunos pasos. Pero no puedo generar el archivo XML. Por favor, ayúdeme.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que tienes problemas para generar un archivo XML válido a partir de tu informe Jacoco. Es posible que la codificación del archivo sea incorrecta, lo que causa la MalformedInputException.

    Para solucionar este problema, puedes intentar los siguientes pasos:

    1. Verifica la codificación del archivo. Debería ser UTF-8.
    2. Asegúrate de que el XML sea válido ejecutándolo a través de un validador XML.
    3. Verifica la configuración del plugin Jacoco en los archivos pom.xml padre y Coverage-Report para asegurarte de que sea correcta.
    4. Intenta ejecutar el comando maven con la bandera -X para obtener una salida más detallada.
    5. Si el problema persiste, quizás debas revisar el código fuente para ver si hay un problema con el plugin Jacoco.

Comments are closed.