web-dev-qa-db-fra.com

Comment configurer Maven pour exécuter une analyse de projet SonarQube avec deux profils de qualité différents?

Nous exécutons des analyses SonarQube pour nos projets Java via Maven. Maven le fait en quelque sorte de manière automagique; tout ce que nous avons fait était d'ajouter le sonar-maven-plugin à notre pom.xml :

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

Cela fonctionne bien.

Mais maintenant, nous devons exécuter l'analyse SonarQube deux fois , avec différents profils de qualité. Comme vous ne pouvez pas facilement changer la clé de projet de Maven, nous utilisons la propriété branch de SonarQube pour différencier les projets SonarQube, comme ceci (encore une fois de pom.xml ) :

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

De cette façon, nous nous retrouvons avec deux entrées de projet dans l'interface utilisateur de SonarQube, qui contiennent toutes deux le même code exact, mais ont des problèmes différents en fonction de leur profil de qualité (un profil de qualité utilisé 1 et l'autre profil de qualité utilisé 2).

Problème: pour y parvenir, je dois modifier manuellement les propriétés pom.xml et exécuter la génération entière deux fois.

Question: Comment puis-je configurer maven pour exécuter simplement le sonar:sonar objectif deux fois avec des propriétés différentes?

Cela nous ferait gagner beaucoup de temps sur nos versions. J'ai déjà trouvé cette question similaire , mais aucune réponse jusqu'à présent. Merci!

17
barfuin

Développant la réponse précédente donnée par Eldad AK concernant les profils:

Créez deux profils Maven comme suit:

<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>

Exécutez ensuite ce qui suit:

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

(vous devrez peut-être effectuer un nettoyage entre l'exécution du sonar, pas sûr)

15
John Q Citizen

Essayez de configurer deux exécutions de votre plugin. Quelque chose comme ça:

<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>

Cela démarrera deux exécutions de sonar en phases de vérification et d'installation, chacune avec une autre valeur sonar.branch. Dans Sonar, vous pouvez ensuite configurer les profils de qualité requis après la première analyse.

3
Horst Krause

Une combinaison de maven et Ant peut fonctionner: utilisez Maven pour la première analyse de sonar comme vous le faites déjà et utilisez Maven Antrun Plugin pour exécuter une autre configuration SonarQube définie à l'aide de SonarQube Ant Task =.

1
mg_

J'opterais pour les profils maven .
Chaque profil aurait ses propres propriétés.

J'espère que ça aide.

0
Eldad Assis