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を構成してこれらのファイルを無視する方法はありますか?
前もって感謝します。
ソナーの除外(他のソナープロパティと同様) 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>
<sonar.exclusions>
で言及されているクラス/パッケージはSonarによるすべての静的分析から特定のクラスを除外しますが、<sonar.coverage.exclusions>
はカバレッジからのみ特定のクラス/パッケージを除外し、他のパラメーターについて分析されます。
<properties>
<sonar.coverage.exclusions>
**/domain/**/*,
**/pojos/*
</sonar.coverage.exclusions>
</properties>
参照:
ソース:
受け入れられた回答に示されているように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>
ソナーを使用して分析していた[〜#〜] php [〜#〜]コードベース。両方 <sonar.exclusions>
および<sonar.coverage.exclusions>
はトリックをしませんでした。私の解決策は-除外を指定する代わりに、以下のように包含ディレクトリを指定することになりました:
<properties>
.........
<sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
.........
</properties>