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