web-dev-qa-db-fra.com

<sonar.exclusions> dans pom.xml (projet multi-module Maven) fonctionne localement mais pas sur le serveur de l'entreprise.

J'utilise <sonar.exclusions> dans pom.xml pour exclure certains packages de la couverture de code de test unitaire. J'ai installé Sonar localement et les exclusions sont reflétées dans le rapport. Mais dans ce cas, les mêmes exclusions ne sont pas respectées sur le serveur de la société.

J'utilise <sonar.skippedModules> qui fonctionne comme prévu et ignore parfaitement les modules requis dans les deux environnements.

La version du sonar local est la version 4.3.1 La version du sonar de l'entreprise est la version 4.1.2

Un exemple de la façon dont j'ai écrit <sonar.skippedModules> dans l'un des modules:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.mainClass>.....</project.mainClass>
    <sonar.exclusions>
        /src/main/Java/../../../../../Package1/*,
        /src/main/Java/../../../../../Package2/*,
        /src/main/Java/../../../../../JavaClass1.Java
    </sonar.exclusions>
    <sonar.language>Java</sonar.language>
</properties>

Pouvez-vous m'aider à comprendre pourquoi <sonar.exclusions> n'est honoré que localement, mais pas lorsque je crée le travail (configuré sur Jenkins) pour générer le rapport Sonar sur le serveur de l'entreprise? La différence dans la version est-elle importante?

L'absence de caractère de nouvelle ligne après la virgule pour séparer les noms de paquet aurait-elle un impact?

17
user3920253

Essayez ceci, j'ai eu le même problème et cela a fonctionné pour moi

Ne commencez pas par "/src/main/Java/" Commencez par "com/companyname/projectname/"

Personnellement, je préfère "**com/companyname/projectname/../**"

15
Nirav Shah

Je me trompe peut-être, mais vous devez supprimer les caractères / au début des chemins sonar.exclusions pour les calculer par rapport au répertoire racine du projet.

1
Mithfindel