web-dev-qa-db-ja.com

Sonarでコードカバレッジメトリックの一部のクラスを無視する方法

MavenにSonarプロファイルがあります。コードカバレッジメトリックを除くすべてが正常に機能します。 Sonarにコードカバレッジメトリックの一部のクラスのみを無視させたい。次のプロファイルがあります。

<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プロファイルがあります。 Sonarプロファイルに追加しようとしましたが、Coberturaプロファイルのように約95%が代わりに53%あります

<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>
36
Dmitrii Borovoi

この記事の執筆時点(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」)。

59
barfuin

私たちにとってこれはうまくいきました(基本的にpom.xmlレベルのプロパティ):

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

http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns によれば、「。Java」または場合によっては「*」で終了することができますJava興味のあるクラスを取得します。

25
rogerdpack

Jacocoの場合:このプロパティを使用します:

-Dsonar.jacoco.excludes=**/*View.Java
5
Khaouini

時々、Cloverはすべての非テストコードのコードカバレッジレポートを提供するように構成されます。これらの設定を上書きする場合は、構成要素を使用して、ソースファイルをインストルメント対象から除外および含めることができます。

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

また、次のSonar構成を含めることができます。

<properties>
    <sonar.exclusions>
        **/domain/*.Java,
        **/transfer/*.Java
    </sonar.exclusions>
</properties> 
2
Cutberto Ocampo

この回答で説明されているソリューションを探していると思います Coberturaでコードカバレッジからメソッドを除外 Sonar 3.2を使用している場合、カバレッジツールはjacocoではなくcoberturaであることを指定していることに注意してください(デフォルト)、この種の機能はまだサポートしていません

2
ppapapetrou

Swiftにsonar-scannerを使用する場合は、sonar-project.propertiesでsonar.coverage.exclusionsを使用して、コードカバレッジのみのファイルを除外します。分析からファイルも除外する場合は、sonar.exclusionsを使用できます。これは私のためにスウィフトで働いていました

sonar.coverage.exclusions=**/*ViewController.Swift,**/*Cell.Swift,**/*View.Swift
1
Deepika