I have a Sonar profile in Maven. Everything works fine except the code coverage metric. I want to make Sonar ignore some classes only for the code coverage metric. I have the following profile:
<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>
Please help. I tried to add something like
<exclude>com/qwerty/dw/publisher/Main.class</exclude>
but it didn't help
UPDATE
I have a correct Cobertura profile. I tried to add it to the Sonar profile, but still I have 53% instead about 95% like in the Cobertura profile
<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>
At the time of this writing (which is with SonarQube 4.5.1), the correct property to set is sonar.coverage.exclusions
, e.g.:
<properties> <sonar.coverage.exclusions>foo/**/*,**/bar/*</sonar.coverage.exclusions> </properties>
This seems to be a change from just a few versions earlier. Note that this excludes the given classes from coverage calculation only. All other metrics and issues are calculated.
In order to find the property name for your version of SonarQube, you can try going to the General Settings section of your SonarQube instance and look for the Code Coverage item (in SonarQube 4.5.x, that's General Settings → Exclusions → Code Coverage). Below the input field, it gives the property name mentioned above ("Key: sonar.coverage.exclusions").
For me this worked (basically pom.xml
level global properties):
<properties> <sonar.exclusions>**/Name*.java</sonar.exclusions> </properties>
According to: http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns
It appears you can either end it with ".java" or possibly "*"
to get the java classes you're interested in.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With