SonarQube Exclure un répertoire

133

J'essaie d'exclure un répertoire de l'analyse par Sonar. J'ai les propriétés suivantes définies dans mon sonar-project.propertiesfichier:

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

La structure de répertoires que j'ai est:

src/java/dig
src/java/test/dig

Lorsque je lance le sonar-runner, j'obtiens les informations suivantes:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

Mais lorsque je vérifie le résultat de l'analyse, tous les paquets à l'intérieur du répertoire de test sont toujours là.

J'ai juste besoin de dire à Sonar de ne pas analyser le répertoire de test et les paquets qu'il contient.

user1982350
la source
3
J'ai trouvé la solution: sonar.exclusions = test / ** / *. Java
user1982350
Mais si vous voulez éviter l'analyse de test, vous pouvez essayer d'utiliser par exemple le package mvn clean -DskipTests
Eddú Meléndez

Réponses:

123

Essayez quelque chose comme ceci:

sonar.exclusions=src/java/test/**
Juan Hernandez
la source
4
Assurez-vous d'utiliser le modèle de fileglob Ant pour les caractères génériques. Voici une bonne explication: stackoverflow.com/a/86915/748524
Stephan
Voici la définition des options de ligne de commande docs.sonarqube.org/display/SONAR/…
N0dGrand87
4
Quiconque voit cela, assurez-vous que vous avez à la src/test/javaplace de src/java/test/.
Faraz
Comment exclure des méthodes en C #
Nature Vetri
Il est important de noter que cela n'est pas traité comme une expression régulière et appliqué à l'ensemble de votre projet sonar.exclusions=node_modules/**n'exclura PAS les dossiers node_modules imbriqués que vous devrez faire sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**pour les exclure explicitement
Christian Bartram
69

Je suis capable d'exclure plusieurs répertoires en utilisant la configuration ci-dessous (chemins de dossiers séparés par des virgules):

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

Et en exécutant le coureur de sonar, j'ai obtenu ce qui suit dans le journal:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**
Damodaran
la source
18
Je reçois aussi le message exclu, mais les fichiers sont toujours analysés.
Sebas
dans les paramètres Teamcity, j'ai utilisé votre astuce, mais en insérant -D avant (-Dsonar.exclu ...). Fonctionne ici. :-)
Maciel Bombonato
Comment exclure tous les fichiers * .html de l'analyse ici? J'ai essayé cela, sonar.exclusions=**/bin/**,*.htmlmais cela prend toujours des fichiers html également dans l'analyse. Les fichiers HTML sont tous des sous-dossiers à plusieurs endroits et l'ajout au niveau du sous-dossier ici avec une carte de chemin réelle sera plus de travail. Existe-t-il un moyen d'exclure tous les * .specific_file_type de l'analyse?
Elamurugan
14

Si nous voulons ignorer tout le dossier, vous pouvez utiliser:

sonar.exclusions=folderName/**/*

Et si nous n'avons qu'un seul fichier en particulier, donnez simplement le chemin complet.

Tout le dossier qui doit être exclu et ajouté ici.

Shradha Modi
la source
2
Quelle est la différence entre cette réponse et sonar.exclusions=folderNameet sonar.exclusions=folderName/**? Merci
payne
* - Correspond à zéro ou plusieurs caractères ** - Correspond à zéro ou plusieurs répertoires? - Match un seul personnage
Keerthi Bandara
13

Une autre option de configuration consiste à ajouter des propriétés maven sonar.exclusions. Vous trouverez ci-dessous un exemple de fichier pom avec des exclusions du répertoire jquery statique et du répertoire de la visionneuse PDF statique.

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>

Akin Okegbile
la source
7

Le moyen le plus simple consiste à accéder à l'URL du serveur après le démarrage du serveur (localhost: 8080), puis à vous connecter en tant qu'administrateur, accédez à paramètres> Exclusions> Exclusions du fichier source - Ajoutez vos packages ici. Redémarrez le serveur.

Maverick
la source
2

quelle version de sonar utilisez-vous? Il existe une option appelée " sonar.skippedModules = yourmodulename ".

Cela sautera tout le module. Soyez donc conscient de cela.

Zéro
la source
12
WARN - La propriété 'sonar.skippedModules' est obsolète depuis la version 4.3 et ne devrait plus être utilisée.
Zheng Kai
1

Juste pour mentionner qu'une fois que vous avez exclu les fichiers de Sonar, faites de même pour le plugin Jacoco:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 
user07
la source
1

Ajouter des chemins de dossier séparés par des virgules sonar.exclusions=**/abc/**,**/def/**

Cela a fonctionné dans un projet angulaire

Dasunse
la source
1

Si vous êtes un utilisateur Azure DevOps à la recherche de l'emplacement et de la manière d'exclure des fichiers et des dossiers, allez-y:

  1. Modifier votre pipeline
  2. Assurez-vous que la tâche «Préparer l'analyse sur SonarQube» a été ajoutée. Vous devrez chercher ailleurs si vous avez besoin d'aide pour configurer cela. Suggestion: utilisez l'éditeur de pipeline de l'interface utilisateur par rapport à l'éditeur yaml s'il vous manque le lien de gestion. À l'heure actuelle, il n'y a aucun moyen de convertir en UI à partir de yaml. Recréez simplement le pipeline. Si vous utilisez git, vous pouvez supprimer le yaml de la racine de votre dépôt.
  3. Dans la section "Avancé" de la tâche "Préparer l'analyse sur SonarQube", vous pouvez ajouter des exclusions. Consultez les conseils fournis par d'autres pour connaître les formats d'exclusion spécifiques.

Exemple:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

Remarque: Si vous n'êtes pas sûr du chemin, vous pouvez aller dans sonarqube, afficher votre projet, regarder tout ou nouveau 'Code Smells' et le chemin dont vous avez besoin est répertorié au-dessus de chaque groupe de problèmes. Vous pouvez récupérer le chemin complet d'un fichier ou utiliser des caractères génériques comme ces exemples:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Si vous n'avez pas ajouté la tâche «Exécuter l'analyse du code», faites-le et placez-la quelque part après la tâche «Créer une solution ** / *. Sln».

Enregistrez et mettez en file d'attente, puis vérifiez votre serveur sonarqube pour voir si les exclusions ont fonctionné.

GrayDwarf
la source
0

ajoutez cette ligne à votre fichier sonar-project.properties

ex: sonar.exclusions = src / *. java soyez prudent si vous voulez exclure un dossier et à l'intérieur du dossier il y a un fichier vous devez d'abord exclure les fichiers ou ajouter les fichiers un par un par exemple imaginez qu'il y a un dossier comme ci-dessous :

src/app.java src/controllers/home.java src/services/test.java

tu dois faire ca: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Ça a marché pour moi

mohammad pakivand
la source
0

Vous pouvez faire la même chose avec build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

Et si vous souhaitez exclure plus de fichiers / répertoires, alors:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}
Vince D
la source
-1

Cela a fonctionné pour moi:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

Il exclut tous les fichiers .js et .css dans l'un des sous-répertoires d'un dossier "wwwroot" apparaissant comme l'un des sous-répertoires du dossier "src" (racine du projet).

Dinesh Muciliath Jayadevan
la source
Cela ne semble pas être sensiblement différent des autres réponses. Il utilise des jokers doubles étoiles comme beaucoup d'autres réponses. Cela ne correspond pas à ce que la question essayait d'exclure.
Stephen Ostermiller