如何使声纳忽略某些类代码覆盖率指标?(How to make Sonar ignore some c

2019-06-27 09:59发布

我有一个Maven的声纳资料。 除了代码覆盖率指标一切正常。 我想使声纳忽略某些类只为代码覆盖度量。 我有以下的个人资料:

<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>

请帮忙。 我想补充一点像

<exclude>com/qwerty/dw/publisher/Main.class</exclude>

但它并没有帮助

UPDATE

我有一个正确的Cobertura轮廓。 我试着将它添加到声纳轮廓,但我仍然有53%,而不是在的Cobertura轮廓像约95%

<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>

Answer 1:

在写这篇文章(这是与SonarQube 4.5.1)的时间,正确的属性设置为sonar.coverage.exclusions ,如:

<properties>
    <sonar.coverage.exclusions>foo/**/*,**/bar/*</sonar.coverage.exclusions>
</properties>

这似乎是从几更早版本的变化。 请注意,这不包括仅覆盖计算给定的类。 所有其他指标和问题进行计算。

为了找到适合您的SonarQube版本的属性名称,你可以尝试去你SonarQube实例的常规设置部分,查找代码覆盖的项目(在SonarQube 4.5.x,这是一般设置→排除→代码覆盖率 )。 下面输入字段,它给了上面提到的属性名称(“键:sonar.coverage.exclusions”)。



Answer 2:

对于我们这个工作(主要的pom.xml级属性):

      <properties>
            <sonar.exclusions>**/Name*.java</sonar.exclusions>
      </properties>

据http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns看来你可以用“的.java”或可能结束它‘*’让你的java类有兴趣。



Answer 3:

对于jacoco:使用这个属性:

-Dsonar.jacoco.excludes=**/*View.java


Answer 4:

我觉得你寻找这个答案描述的解决方案排除用的Cobertura从代码覆盖方法请记住,如果你使用的声纳3.2你指定你的覆盖面工具的Cobertura而不是jacoco(默认值),这没有按' T公司的支持这种功能的又



Answer 5:

有时,三叶草被配置为为所有非测试代码的代码覆盖率报告。 如果您希望覆盖这些首选项,您可以使用配置元素从仪表被排除,包括源文件:

<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>

另外,还可以包括以下声纳配置:

<properties>
    <sonar.exclusions>
        **/domain/*.java,
        **/transfer/*.java
    </sonar.exclusions>
</properties> 


Answer 6:

当使用声纳扫描仪迅速,使用sonar.coverage.exclusions在sonar-project.properties排除仅供代码覆盖的任何文件。 如果要排除分析文件,以及,你可以使用sonar.exclusions。 这已经在迅速为我工作

sonar.coverage.exclusions=**/*ViewController.swift,**/*Cell.swift,**/*View.swift


文章来源: How to make Sonar ignore some classes for codeCoverage metric?