web-dev-qa-db-ja.com

Maven pom.xmlからファイルを除外するようにSonarを構成する

Mavenでプロジェクトを構成しており、コード分析はSonarQubeによって行われます。

コード分​​析からいくつかのファイルを除外するために、pom.xmlファイルでSonarQubeを構成しようとしています。これらのファイルはクラス名で識別でき、拡張子の前にアンダースコア文字が含まれています(メタモデルクラスです)。以下に、pom.xmlファイルの一部を示します。ここではそれらを除外しようとしています。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <sonar.sources>src/main/Java</sonar.sources>
        <sonar.exclusions>file:**/src/main/Java/**/*_.*</sonar.exclusions>
    </configuration>
</plugin>

ただし、上記のコードは機能しません。ソースコードを分析するときに、pom.xmlファイルからSonarQubeを構成してこれらのファイルを無視する方法はありますか?

前もって感謝します。

30
pappus

ソナーの除外(他のソナープロパティと同様) POMファイルの<properties>セクションに追加する必要があります 。同様に(現在のプロジェクトからjOOQ自動生成コードを除外する例):

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.Host.url>http://www.example.com/</sonar.Host.url>
    <sonar.jdbc.url>jdbc:postgresql://www.example.com/sonar</sonar.jdbc.url>
    <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>sonar</sonar.jdbc.password>
    <sonar.exclusions>org/binarytherapy/generated/**/*, **/GuiceBindComposer.Java</sonar.exclusions>
    <sonar.dynamic>reuseReports</sonar.dynamic>
</properties>
51
Mikkel Løkke

<sonar.exclusions>で言及されているクラス/パッケージはSonarによるすべての静的分析から特定のクラスを除外しますが、<sonar.coverage.exclusions>はカバレッジからのみ特定のクラス/パッケージを除外し、他のパラメーターについて分析されます。

<properties>
    <sonar.coverage.exclusions>
        **/domain/**/*,
        **/pojos/*
    </sonar.coverage.exclusions>
</properties>

参照:

ソース:

13
Anamika

受け入れられた回答に示されているようにSonar除外を行うときは、 SonarQube documentation からのこのパターンアプローチに従うようにしてください。

相対パスは、コンポーネントの完全修飾名に基づいています(下に表示されているようなもの)。

src/main/Java/org/sonar/batch/phases/AbstractPhaseEvent.Java

# Exclude all classes ending with "Bean"
# Matches org/sonar.api/MyBean.Java, org/sonar/util/MyOtherBean.Java, etc.
**/*Bean.Java

# Exclude all classes in the "src/main/Java/org/sonar" directory
# Matches src/main/Java/org/sonar/MyClass.Java, src/main/Java/org/sonar/MyOtherClass.Java
# But does not match src/main/Java/org/sonar/util/MyClassUtil.Java
src/main/Java/org/sonar/*

# Exclude all files in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
bank/**/*

# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
bank/**/*.cbl

したがって、「Bean」で終わるすべてのクラスと「src/main/Java/org/sonar」ディレクトリ内のすべてのクラス(ただし、そのサブディレクトリ内ではない)を除外する場合は、次のsonar.exclusionsプロパティをpomのpropertiesに:

<properties>
  ...
  <sonar.exclusions>**/*Bean.Java,src/main/Java/org/sonar/*</sonar.exclusions>
</properties>
4
Voicu

ソナーを使用して分析していた[〜#〜] php [〜#〜]コードベース。両方 <sonar.exclusions>および<sonar.coverage.exclusions>はトリックをしませんでした。私の解決策は-除外を指定する代わりに、以下のように包含ディレクトリを指定することになりました:

<properties>
  .........
  <sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
  .........
</properties>
0
Sudheesh.M.S