web-dev-qa-db-fra.com

Configurez Sonar pour exclure les fichiers de Maven pom.xml

J'ai un projet configuré dans maven et l'analyse du code est effectuée par SonarQube.

J'essaie de configurer SonarQube dans le fichier pom.xml pour exclure quelques fichiers de l'analyse de code. Ces fichiers peuvent être identifiés par leurs noms de classe, ils contiennent le caractère de soulignement avant l'extension (ce sont des classes de métamodèle). Ci-dessous, je donne la partie du fichier pom.xml où je tente de les exclure:

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

Cependant, le code ci-dessus ne fonctionne pas. Existe-t-il un moyen de configurer SonarQube à partir de mon fichier pom.xml pour ignorer ces fichiers lors de l'analyse du code source?

Merci d'avance.

26
pappus

Les exclusions de sonar (comme d’autres propriétés de sonar) doivent être ajoutés à la section <properties> du fichier POM. Comme si (exemple en excluant le code généré automatiquement par jOOQ du projet actuel):

<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>
49
Mikkel Løkke

les classes/packages mentionnés dans <sonar.exclusions> excluent les classes données de toutes les analyses statiques effectuées par Sonar. Toutefois, <sonar.coverage.exclusions> exclut uniquement les classes/packages donnés de la couverture et doit néanmoins être analysé pour d'autres paramètres.

<properties>
    <sonar.coverage.exclusions>
        **/domain/**/*,
        **/pojos/*
    </sonar.coverage.exclusions>
</properties>

Référence:

La source: 

9
Amit Kaneria

Lorsque vous effectuez vos exclusions Sonar comme indiqué dans la réponse acceptée, veillez à suivre cette approche de modèle figurant dans la documentation SonarQube :

Les chemins relatifs sont basés sur le nom complet du composant (comme celui affiché ci-dessous):

src/main/Java/org/sonar/batch/phases/AbstractPhaseEvent.Java

Exemples:

# 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

Donc, si vous voulez exclure toutes les classes se terminant par "Bean" et toutes les classes du répertoire "src/main/Java/org/sonar" (mais pas dans ses sous-répertoires), ajoutez la propriété sonar.exclusions suivante à la variable properties du pom:

<properties>
  ...
  <sonar.exclusions>**/*Bean.Java,src/main/Java/org/sonar/*</sonar.exclusions>
</properties>
3
Voicu

J'utilisais sonar pour analyserPHPbase de code. <sonar.exclusions> et <sonar.coverage.exclusions> n'ont pas résolu le problème . Ma solution est la suivante: au lieu de spécifier les exclusions, j'ai fini par spécifier les répertoires d'inclusion comme ci-dessous:

<properties>
  .........
  <sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
  .........
</properties>
0
Sudheesh.M.S