SonarQubeディレクトリを除外する


132

Sonarによる分析からディレクトリを除外しようとしています。sonar-project.propertiesファイルに次のプロパティが定義されています。

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

私が持っているディレクトリ構造は:

src/java/dig
src/java/test/dig

ソナーランナーを実行すると、次の情報が表示されます。

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

しかし、分析の結果を確認すると、テストディレクトリ内のすべてのパッケージがまだ残っています。

テストディレクトリとその中のパッケージを分析しないようにSonarに指示する必要があるだけです。


3
私は解決策を見つけました:sonar.exclusions = test / ** / *
。java

あなたは、テストの分析を避けたい場合しかし、あなたは例のために使用して試すことができますMVNきれいなパッケージ-DskipTests
Eddúメレンデス

回答:


120

次のようなものを試してください:

sonar.exclusions=src/java/test/**

4
ワイルドカードには必ずAnt fileglobパターンを使用してください。これは良い説明です:stackoverflow.com/a/86915/748524
ステファン

ここでは、コマンドラインオプションの定義であるdocs.sonarqube.org/display/SONAR/...
N0dGrand87

4
これを見た人は、のsrc/test/java代わりにを持っていることを確認してくださいsrc/java/test/
ファラズ2018

C#でメソッドを除外する方法
Nature vetri 2018

これは正規表現として扱われず、プロジェクト全体に適用されるため、明示的に除外するためにsonar.exclusions=node_modules/**必要なネストされたnode_modulesフォルダーは除外されないことに注意することが重要ですsonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**
Christian Bartram

68

以下の設定(カンマ区切りのフォルダーパス)を使用して複数のディレクトリを除外できます。

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

そして、ソナーランナーを走らせている間、私はログで以下を得ました:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

18
除外されたメッセージも表示されますが、ファイルは引き続き分析されます。
Sebas

Teamcityパラメータではヒントを使用しましたが、前に-Dを挿入しました(-Dsonar.exclu ...)。ここで動作します。:-)
Maciel Bombonato

ここでスキャンからすべての* .htmlファイルを除外する方法は?これを試してみましたsonar.exclusions=**/bin/**,*.htmlが、スキャンにもHTMLファイルが必要です。HTMLファイルはすべていくつかの場所にあるサブフォルダーであり、実際のパスマップを使用してここにサブフォルダーレベルを追加することはより多くの作業になります。すべての* .specific_file_typeをスキャンから除外する方法はありますか?
エラムルガン


13

フォルダー全体をスキップしたい場合は、以下を使用できます。

sonar.exclusions=folderName/**/*

特定のファイルが1つしかない場合は、完全なパスを指定します。

除外してここに追加する必要があるすべてのフォルダ。


2
その答えとの違いは何であるsonar.exclusions=folderNameとはsonar.exclusions=folderName/**?ありがとう
Payne

*-0個以上の文字に一致**-0個以上のディレクトリに一致?-単一のキャラクターに一致
Keerthi Bandara

12

別の設定オプションは、Mavenプロパティを追加することsonar.exclusionsです。以下は、静的jqueryディレクトリと静的pdfビューアディレクトリを除外したサンプルpomファイルです。

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>


7

最も簡単な方法は、サーバー(localhost:8080)の起動後にサーバーのURLに移動し、adminとしてログインします。設定>除外>ソースファイルの除外に移動して、ここにパッケージを追加します。サーバーを再起動します。


2

どのバージョンのソナーを使用していますか?「sonar.skippedModules = yourmodulename」というオプションが1つあります。

これにより、モジュール全体がスキップされます。ですので、注意してください。


12
警告-'sonar.skippedModules'プロパティはバージョン4.3以降廃止されており、今後は使用しないでください。
鄭カイ

1

Sonarからファイルを除外したら、Jacocoプラグインにも同じことを行います。

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 

1

カンマ区切りのフォルダパスを追加する sonar.exclusions=**/abc/**,**/def/**

これは角度のあるプロジェクトで機能しました


1

ファイルとフォルダーを除外する場所と方法の両方を探しているAzure DevOpsユーザーの場合は、次のようにします。

  1. パイプラインを編集する
  2. 「SonarQubeでの分析の準備」タスクが追加されていることを確認してください。これを構成するのにヘルプが必要な場合は、他の場所を調べる必要があります。提案:管理リンクがない場合は、UIパイプラインエディターとyamlエディターを使用してください。現在、yamlからUIに変換する方法はありません。パイプラインを再作成するだけです。gitを使用している場合は、リポジトリのルートからyamlを削除できます。
  3. 「SonarQubeでの分析の準備」タスクの「詳細」セクションで、除外を追加できます。特定の除外形式については、他のユーザーからのアドバイスを参照してください。

例:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

注:パスがわからない場合は、sonarqubeに移動してプロジェクトを表示し、すべてまたは新しい「コードのにおい」を確認してください。必要なパスは、問題の各グループの上にリストされています。ファイルへの完全パスを取得するか、次の例のようにワイルドを使用できます。

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

「コード分析の実行」タスクが追加されていない場合は、それを実行し、「ソリューションのビルド** / *。sln」タスクの後のどこかに配置します。

保存してキューに入れ、次にsonarqubeサーバーをチェックアウトして、除外が機能したかどうかを確認します。


0

この行をsonar-project.propertiesファイルに追加します

例:sonar.exclusions = src / *。javaフォルダーを除外し、フォルダー内にファイルがある場合は、まずファイルを除外するか、ファイルを1つずつ追加する必要があります。たとえば、以下のようなフォルダーがあると想像してください。 :

src/app.java src/controllers/home.java src/services/test.java

あなたはこれをしなければなりません: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

それは私のために働いた


0

あなたは同じことをすることができます build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

さらに多くのファイル/ディレクトリを除外する場合は、次のようにします。

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}

-1

これは私のために働きました:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

「src」フォルダー(プロジェクトルート)のサブディレクトリの1つとして表示される「wwwroot」フォルダーのサブディレクトリの下にある.jsおよび.cssファイルは除外されます。


これは他の回答と実質的に異なるようには見えません。他の多くの回答と同様に、二重星のワイルドカードを使用します。質問が除外しようとしていたものと一致しません。
Stephen Ostermiller
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.