web-dev-qa-db-ja.com

2つの異なる品質プロファイルを使用してSonarQubeプロジェクト分析を実行するようにMavenを構成するにはどうすればよいですか?

JavaプロジェクトのMavenを介してSonarQube分析を実行します。Mavenはこれを自動的に行います。私たちが行ったのは、sonar-maven-pluginpom.xml

<pluginManagement>
    <plugins>
        ...
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</pluginManagement>

これは正常に動作します。

しかし、ここで、異なる品質プロファイルでSonarQube分析twiceを実行する必要があります。 Mavenからプロジェクトキーを簡単に変更することはできないため、SonarQubeのbranchプロパティを使用して、次のようにSonarQubeプロジェクトを区別します(ここでもpom.xmlから) :

<properties>
    <sonar.profile>MyQualityProfile1</sonar.profile>
    <sonar.branch>Dev_${sonar.profile}</sonar.branch>
    ...
</properties>

このようにして、SonarQube UIに2つのプロジェクトエントリが作成されます。どちらにもまったく同じコードが含まれていますが、品質プロファイル(1つは品質プロファイル1を使用し、もう1つは品質プロファイル2を使用)によって問題が異なります。

問題:これを実現するには、pom.xmlプロパティを手動で変更し、ビルド全体を2回実行する必要があります。

質問:異なるプロパティを使用してsonar:sonarゴールを単純に2回実行するようにmavenを構成するにはどうすればよいですか?

これにより、ビルドの時間を大幅に節約できます。私はすでに この同様の質問 を見つけましたが、今のところ答えはありません。ありがとう!

17
barfuin

Eldad AKがプロファイルに関して与えた以前の回答を拡張します。

次のように2つのmavenプロファイルを作成します。

<properties>
  <sonar.branch>Dev_${sonar.profile}</sonar.branch>
</properties>

<profiles>
  <profile>
    <id>QualityProfileOne</id>
    <properties>
      <sonar.profile>MyQualityProfile1</sonar.profile>
    </properties>
  </profile>
  <profile>
    <id>QualityProfileTwo</id>
    <properties>
      <sonar.profile>MyQualityProfile2</sonar.profile>
    </properties>
  </profile>
</profile>

次に、以下を実行します。

$ mvn clean install -DskipTests
$ mvn sonar:sonar -PQualityProfileOne
$ mvn sonar:sonar -PQualityProfileTwo

(ソナーを実行する間でクリーンアップを実行する必要があるかもしれません、わかりません)

15
John Q Citizen

プラグインの2つの実行を構成してみてください。このようなもの:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>s1</id>
            <phase>verify</phase>
            <goals>
                <goal>sonar</goal>
            </goals>
            <configuration>
                <sonar.branch>MyQualityProfile1</sonar.branch>
            </configuration>
        </execution>
        <execution>
            <id>s2</id>
            <phase>install</phase>
            <goals>
                <goal>sonar</goal>
            </goals>
            <configuration>
                <sonar.branch>MyQualityProfile2</sonar.branch>
            </configuration>
        </execution>
    </executions>
</plugin>

これにより、検証とインストールの段階でsonarの2つの実行が開始され、それぞれに別のsonar.branch値が設定されます。 Sonarでは、最初の分析後に必要な品質プロファイルを構成できます。

3
Horst Krause

MavenとAntの組み合わせが機能する可能性があります。最初のソナー分析にMavenを使用し、既に Maven Antrun Plugin を使用して、 SonarQube Ant Task を使用して定義された別のSonarQube構成を実行します。 =。

1
mg_

mavenプロファイル を選択します。
各プロファイルには独自のプロパティがあります。

これがお役に立てば幸いです。

0
Eldad Assis