web-dev-qa-db-ja.com

Sonar mavenプラグイン:すべてのモジュールで同じプロジェクトキーが機能しませんか?

私はsonar-maven-plugin3.2とmaven3.3.9を使用しています。親POMには、sonar.projectKeymavenプロパティが定義されています。値は有効です、ソナーのプリントアウトからそれを見ることができます。ただし、mavenプロパティはすべてのモジュールで同じ値を持っているため、mavenモジュールは同じプロジェクトキー値を使用するため、mvn sonar:sonarステップは失敗します。ソナーはエラーを出します:

プロジェクト '...'は、次のキーを持つ2つのモジュールを持つことはできません:.。

すべてのMavenモジュールを含む単一のソナープロジェクトを作成する方法は本当にありませんか?すべてのモジュールは本当に異なるソナープロジェクトでなければなりませんか?

ブランチプロパティをハックとして使用できることは承知していますが、それは避けたいと思います。すべてのMavenモジュールを含む単一のプロジェクトキーを使用してソナーでMavenマルチモジュールプロジェクトを作成する方法がある場合は、それが最適です...

9
McH

SonarQube分析パラメーター によると:

sonar.projectKey

プロジェクトごとに一意のプロジェクトキー。使用できる文字は、文字、数字、「-」、「_」、「。」です。および ':'、少なくとも1つの非数字。
Mavenを使用すると、自動的に<groupId>:<artifactId>に設定されます。

したがって、sonar.projectKey構成を削除すると、機能するはずです。

(私は同じループを経験しました)。

7
Steve C

私はついにこれを行う正しい方法のように見えるものを見つけたと思います。 parent.pomで、次のプロパティを宣言します。

<properties>
    <sonar.projectKey>
        YourKey
    </sonar.projectKey>
    <sonar.moduleKey>
        ${artifactId}
    </sonar.moduleKey>
</properties>

両方のプロパティはモジュールに継承されます。これにより、結果が単一のSonarレポートにコンパイルされ、共通のprojectKeyの下にあるサブモジュールが追跡されます。興味深いことに、結果は次のとおりです。

[INFO] Reactor Summary:
[INFO] 
[INFO] parent ................................. SUCCESS [01:14 min]
[INFO] module1................................. SKIPPED
[INFO] module2 ................................ SKIPPED
[INFO] module3 ................................ SKIPPED

したがって、正確なモジュール解決がどのように行われたかはわかりませんが、最終的にはすべてのモジュールがレポートに表示されました。

5
Rick Moritz

各コンポーネントを一意に識別する方法が必要です。スティーブCが言ったように、同じプロジェクトキーを持つ2つのプロジェクトを持つことはできません。また、プロジェクト内では、モジュールにも一意の識別子が必要です。そうしないと、2番目の「モジュールb」の分析によって最初の「モジュールb」が上書きされます。