Sonar сообщает о JaCoCo Coverage для самих тестовых классов.Это правильно?Как мне это изменить? - PullRequest
3 голосов
/ 01 марта 2012

у нас есть многомодульный Maven-проект Eclipse Plugins.

Создание отчета о покрытии кода с использованием JaCoCo работает, но статистика кажется ложной.

Рассчитывается покрытие самих тестовых классов И добавляется к общему проценту покрытия кода.

Пример:

  • Плагин org.myplugin имеет покрытие 50% и 100 строк кода.
  • Тестовый плагин org.myplugin.tests покрывает 100% и 100 строк кода.
  • Общий процент покрытия кода составляет 75% или 150 строк кода.

Это, конечно, не совсем правильно, потому что важно то, что охват в действительности составляет всего 50% от нормального кода.

Это нормальное поведение? Что я могу сделать, чтобы исключить покрытие для тестовых классов?

РЕДАКТИРОВАТЬ: Вот соответствующие части нескольких наших файлов POM:

Проект POM:

<groupId>de.tool</groupId>
<artifactId>toolname</artifactId>
<version>2.0</version>
<packaging>pom</packaging>

<properties>
    <tycho-version>0.13.0</tycho-version>
    <junit-version>4.8.2</junit-version>
    <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
    <jacoco-maven-version>0.5.6.201201232323</jacoco-maven-version>
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/../../target/jacoco.exec</sonar.jacoco.reportPath>
<!--    <sonar.surefire.reportsPath>../${project.artifactId}.tests/target/surefire-reports/</sonar.surefire.reportsPath> -->
</properties>


<modules>
    <module>de.tool.plugin</module>
    <module>de.tool.plugin.tests</module>
</modules>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco-maven-version}</version>
            <configuration>
                <destFile>${project.basedir}/../../target/jacoco.exec</destFile>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
    </plugins>
</build>

Плагин POM:

<parent>
    <groupId>de.tool</groupId>
    <artifactId>toolname</artifactId>
    <version>2.0</version>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>de.tool.plugin</groupId>
<artifactId>de.tool.plugin</artifactId>
<version>1.0.1-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>

Тестовый плагин POM:

<parent>
    <groupId>de.tool</groupId>
    <artifactId>toolname</artifactId>
    <version>2.0</version>
    <relativePath>../../plugins</relativePath>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>de.tool.plugin</groupId>
<artifactId>de.tool.plugin.tests</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit-version}</version>
    </dependency>
</dependencies>
...