J'ai un profil Sonar dans Maven. Tout fonctionne bien sauf la métrique de couverture de code. Je souhaite que Sonar ignore certaines classes uniquement pour la métrique de couverture de code. J'ai le profil suivant:
<profile>
<id>sonar</id>
<properties>
<sonar.exclusions>**/beans/jaxb/**</sonar.exclusions>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<excludes>
<exclude>**/*Suite*.Java</exclude>
<exclude>**/*RemoteTest.Java</exclude>
<exclude>**/*SpringTest.Java</exclude>
<exclude>**/*CamelTest.Java</exclude>
<exclude>**/*FunctionalTest.Java</exclude>
<exclude>**/*IntegrationTest.Java</exclude>
<exclude>**/*DaoBeanTest.Java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
S'il vous plaît aider. J'ai essayé d'ajouter quelque chose comme
<exclude>com/qwerty/dw/publisher/Main.class</exclude>
mais ça n'a pas aidé
METTRE &AGRAVE; JOUR
J'ai un profil Cobertura correct. J'ai essayé de l'ajouter au profil Sonar, mais j'ai toujours 53% au lieu d'environ 95% comme dans le profil Cobertura
<profile>
<id>sonar</id>
<properties>
<sonar.exclusions>**/beans/jaxb/**</sonar.exclusions>
<sonar.core.codeCoveragePlugin>cobertura</sonar.core.codeCoveragePlugin>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<excludes>
<exclude>**/*Suite*.Java</exclude>
<exclude>**/*RemoteTest.Java</exclude>
<exclude>**/*SpringTest.Java</exclude>
<exclude>**/*CamelTest.Java</exclude>
<exclude>**/*FunctionalTest.Java</exclude>
<exclude>**/*IntegrationTest.Java</exclude>
<exclude>**/*DaoBeanTest.Java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${cobertura.maven.plugin.version}</version>
<configuration>
<instrumentation>
<excludes>
<exclude>com/qwerty/dw/dao/*</exclude>
<exclude>com/qwerty/dw/domain/*</exclude>
<exclude>com/qwerty/dw/beans/**/*</exclude>
<exclude>com/qwerty/dw/daemon/exception/*</exclude>
<exclude>com/qwerty/dw/daemon/Main.class</exclude>
<exclude>com/qwerty/dw/sink/Main.class</exclude>
<exclude>com/qwerty/dw/publisher/Main.class</exclude>
<exclude>com/qwerty/dw/publisher/dao/*</exclude>
<exclude>com/qwerty/dw/publisher/domain/*</exclude>
</excludes>
</instrumentation>
<formats>
<format>html</format>
</formats>
<aggregate>true</aggregate>
<check>
<haltOnFailure>true</haltOnFailure>
<branchRate>60</branchRate>
<lineRate>60</lineRate>
<totalBranchRate>60</totalBranchRate>
<totalLineRate>60</totalLineRate>
</check>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Au moment de l'écriture (avec SonarQube 4.5.1), la propriété correcte à définir est sonar.coverage.exclusions
, par exemple:
<properties>
<sonar.coverage.exclusions>foo/**/*,**/bar/*</sonar.coverage.exclusions>
</properties>
Cela semble être différent de quelques versions antérieures. Notez que cela exclut les classes données du calcul de la couverture uniquement. Tous les autres indicateurs et problèmes sont calculés.
Pour trouver le nom de la propriété correspondant à votre version de SonarQube, vous pouvez essayer de vous rendre dans la section Paramètres généraux de votre instance SonarQube et rechercher le Couverture de code item (dans SonarQube 4.5.x, c'est Paramètres généraux → Exclusions → Couverture de code ). Sous le champ de saisie, il indique le nom de la propriété mentionnée ci-dessus ("Key: sonar.coverage.exclusions").
Pour nous, cela a fonctionné (essentiellement les propriétés de niveau pom.xml):
<properties>
<sonar.exclusions>**/Name*.Java</sonar.exclusions>
</properties>
Selon http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns il semble que vous puissiez le terminer par ".Java" ou éventuellement "*" pour obtenir le code Java les classes qui vous intéressent.
Pour jacoco: utilisez ces propriétés:
-Dsonar.jacoco.excludes=**/*View.Java
Parfois, Clover est configuré pour fournir des rapports de couverture de code pour tous les codes non testés. Si vous souhaitez remplacer ces préférences, vous pouvez utiliser des éléments de configuration pour exclure et inclure les fichiers source de l'instrument:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
<version>${clover-version}</version>
<configuration>
<excludes>
<exclude>**/*Dull.Java</exclude>
</excludes>
</configuration>
</plugin>
En outre, vous pouvez inclure la configuration Sonar suivante:
<properties>
<sonar.exclusions>
**/domain/*.Java,
**/transfer/*.Java
</sonar.exclusions>
</properties>
Je pense que vous recherchez la solution décrite dans cette réponse Exclure les méthodes de la couverture de code avec Cobertura N'oubliez pas que si vous utilisez Sonar 3.2, vous devez spécifier que votre outil de couverture est cobertura et non jacoco (par défaut), qui ne supporte pas encore ce genre de fonctionnalité
Lorsque vous utilisez sonar-scanner pour Swift, utilisez sonar.coverage.exclusions dans votre sonar-project.properties pour exclure tout fichier ne contenant que la couverture de code. Si vous souhaitez également exclure des fichiers de l'analyse, vous pouvez utiliser sonar.exclusions. Cela a fonctionné pour moi dans Swift
sonar.coverage.exclusions=**/*ViewController.Swift,**/*Cell.Swift,**/*View.Swift