Плагин Maven cobertura - один отчет для многомодульного проекта - PullRequest
8 голосов
/ 22 сентября 2010

Я использую плагин maven cobertura для сообщения о покрытии кода в моем многомодульном проекте.

Проблема в том, что я не знаю, как создать один отчет для всех модулей в проекте.

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

Конфигурация моего родительского pom:

   <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
        <inherited>true</inherited>
        <executions>
            <execution>
                <phase>test-compile</phase>
                <goals>
                    <goal>clean</goal>
                    <goal>cobertura</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

Ответы [ 4 ]

18 голосов
/ 23 сентября 2013

Плагин был обновлен после того, как этот вопрос был задан (и последний ответ), чтобы теперь включить агрегированные отчеты, через свойство конфигурации aggregate в родительском POM.

Создает агрегированный отчет о покрытии на target/site/cobertura/index.html, который будет включать все модули.

(У каждого модуля также будет свой собственный отчет, если он будет использоваться.)

Родительский pom.xml

<modules>
    <module>moduleA</module>
    <module>moduleB</module>
    <module>moduleC</module>
<modules>
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <check/>
                    <formats>
                        <format>html</format>
                        <format>xml</format>
                    </formats>
                    <aggregate>true</aggregate>
                </configuration>
            </plugin>
            ...
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
        </plugin>
    </plugins>
...
</build>
2 голосов
/ 22 сентября 2010

Насколько мне известно, это в настоящее время не поддерживается, см. MCOBERTURA-65 . Но к проблеме прикреплен патч, возможно попробуйте. Но я бы предложил использовать что-то вроде Sonar для агрегирования метрик.

0 голосов
/ 24 августа 2013

Плагин Jenkins Cobertura агрегирует отчет автоматически, но если вы заинтересованы в самом файле покрытия по некоторым другим причинам, вы можете сделать это, выполнив следующую процедуру:

  1. Загрузите Cobertura с здесь

  2. Перейдите в рабочую область вашего проекта -> найдите все файлы .ser и переименуйте их

    (i=0; find . | grep cobertura.ser$ | while read line;do echo $line; cp -i $line cobertura$i.ser;i=$(($i+1));done;)
    
  3. используйте cobertura-merge.sh для генерации глобального .ser файла

    ~/cobertura-2.0.3/cobertura-merge.sh --datafile cobertura.ser cobertura*.ser
    
  4. используйте cobertura-report.sh для создания отчета по глобальному файлу .ser

    ~/cobertura-2.0.3/cobertura-report.sh ./cobertura.ser --destination ./ --format xml
    

У вас будет глобальный coverage.xml, сгенерированный в текущем каталоге. Вы можете использовать его для дальнейшей обработки.

0 голосов
/ 19 января 2011

Я использовал Hudson в качестве инструмента непрерывной интеграции. Плагин Cobertura позволяет мне видеть покрытие кода всех дочерних модулей при проверке родительского.

...