Сконфигурируйте агента jacoco для sonar2.12 (Multi Module maven) - PullRequest
2 голосов
/ 21 января 2012

В последнюю версию Sonar 2.12 встроен плагин Jacoco, и я хочу использовать его для моей части покрытия кода в многомодульном проекте.

У меня есть такая структура

proj.com.parent
   proj.com.provider
   proj,com.test

Тестовые случаи для проекта провайдера находятся в тестовом проекте.Когда я устанавливаю плагин Code code в sonar как jacoco, он работает нормально, но комбинированные покрытия кода не представлены на DashBoard.Я видел сообщение о том, что один файл jacoco.exec может решить проблему, но я не могу это сделать.

Я попытался настроить ниже в моем pom, как показано ниже

<profile>
        <id>sonar</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                          <argLine>-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath}</argLine> 
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <properties>
            <sonar.jacoco.reportPath>${basedir}/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
            <sonar.jacoco.jar> C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar</sonar.jacoco.jar>
        </properties>

Но в командной строке maven "mvn clean install" я получаю эту ошибку:

Не удалось найти атрибут манифеста Premain-Class в C: \ sonar-2.12 \ war \ sonar-server \ deploy \ plugins \ jacoco \ META-INF \ lib \ org.jacoco.agent-0.5.3.201107060350.jar Ошибка при инициализации библиотеки агента виртуальной машины не удалось инициализировать: инструмент

Может кто-нибудь предоставитьлюбая помощь в этом?

Ответы [ 3 ]

8 голосов
/ 20 марта 2012

баночка, на которую вы указываете, не является банкой ... извлеките ее, используя winrar, и вы получите в ней другую банку.называется jacocoagent.jar. чтобы проверить, правильно ли вы получили jar, просто извлеките jacocoagent.jar и найдите файл manifest.mf, и в нем должна быть запись для premain class.

, которая должна выполнить

2 голосов
/ 30 июля 2013

У меня была такая же проблема. Посмотрите на артефакты агента Джакоко в центральном хранилище.

Существует нормальный артефакт jar, и есть jar с временем выполнения классификатора. Вам нужен артефакт "времени выполнения", который будет использоваться в качестве агента JAR. Что я делаю, я просто загружаю jar времени выполнения агента Jacoco с подключаемым модулем зависимостей maven следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>download-jacoco-agent</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>org.jacoco</groupId>
                        <artifactId>org.jacoco.agent</artifactId>
                        <version>0.6.3.201306030806</version>
                        <classifier>runtime</classifier>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <destFileName>jacoco-agent.jar</destFileName>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Тогда вам просто нужно определить следующую опцию командной строки:

<argLine>-javaagent:${project.build.directory}/jacoco-agent.jar=destfile=${sonar.jacoco.reportPath}</argLine> 
1 голос
/ 21 января 2012

Возможно, вам следует попробовать установить для свойства sonar.core.codeCoveragePlugin значение jacoco .Инструментом покрытия кода по умолчанию в Sonar по-прежнему является cobertura.См. Следующий документ по охвату кода .

Если это не поможет, я нашел следующую ссылку (которая запускает Jacoco из Maven, как вы пытаетесь это сделать):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...