72

Mavenにソナープロファイルがあります。コード カバレッジ メトリックを除いて、すべて正常に動作します。コード カバレッジ メトリックについてのみ、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>

しかし、それは役に立ちませんでした

アップデート

私は正しい 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>
4

9 に答える 9

104

これを書いている時点で (これは SonarQube 4.5.1 を使用しています)、設定する正しいプロパティは次のsonar.coverage.exclusionsとおりです。

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

これは、以前のほんの数バージョンからの変更のようです。これにより、特定のクラスがカバレッジ計算からのみ除外されることに注意してください。他のすべてのメトリックと問題が計算されます。

お使いのバージョンの SonarQube のプロパティ名を見つけるには、SonarQube インスタンスのGeneral Settingsセクションに移動して、Code Coverage項目を探します (SonarQube 4.5.x ではGeneral Settings → Exclusions → Code Coverage )。入力フィールドの下に、上記のプロパティ名が表示されます (「キー: sonar.coverage.exclusions」)。

于 2014-11-25T18:11:03.653 に答える
6

jacoco の場合: 次のプロパティを使用します。

-Dsonar.jacoco.excludes=**/*View.java
于 2014-04-16T09:03:57.960 に答える
2

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

于 2012-08-27T05:38:33.200 に答える
2

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>

また、次のソナー構成を含めることもできます。

<properties>
    <sonar.exclusions>
        **/domain/*.java,
        **/transfer/*.java
    </sonar.exclusions>
</properties> 
于 2013-10-15T13:59:58.930 に答える
1

私は少し苦労しなければなりませんでしたが、解決策を見つけました、と付け加えました

-Dsonar.coverage.exclusions=**/*.* 

カバレッジ メトリックがダッシュボードからまったくキャンセルされたため、問題はプロパティではなく、通過したパスにあることに気付きました。私の場合、除外するパスは java/org/acme/exceptions だったので、以下を使用しました:

`-Dsonar.coverage.exclusions=**/exceptions/**/*.*` 

それはうまくいきましたが、サブフォルダーがないので、それも動作します

-Dsonar.coverage.exclusions=**/exceptions/*.*
于 2020-10-09T02:40:16.430 に答える