SonarQube Schließen Sie ein Verzeichnis aus


132

Ich versuche, ein Verzeichnis von der Analyse durch Sonar auszuschließen. Ich habe die folgenden Eigenschaften in meiner sonar-project.propertiesDatei definiert :

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

Die Verzeichnisstruktur, die ich habe, ist:

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

Wenn ich den Sonar-Runner starte, erhalte ich folgende Informationen:

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

Wenn ich jedoch das Ergebnis der Analyse überprüfe, sind alle Pakete im Testverzeichnis noch vorhanden.

Ich muss Sonar nur anweisen, das Testverzeichnis und alle darin enthaltenen Pakete nicht zu analysieren.


3
Ich fand die Lösung: sonar.exclusions = test / ** / *. Java
user1982350

Aber wenn Sie Testanalysen
Eddú Meléndez

Antworten:


119

Versuchen Sie so etwas:

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

4
Stellen Sie sicher, dass Sie das Ant-Fileglob-Muster für Platzhalter verwenden. Hier ist eine gute Erklärung: stackoverflow.com/a/86915/748524
Stephan


4
Wer dies sieht, stellt sicher, dass Sie src/test/javastattdessen haben src/java/test/.
Faraz

Wie man Methoden in c #
nature vetri ausschließt

Es ist wichtig zu beachten, dass dies nicht als regulärer Ausdruck behandelt und auf Ihr gesamtes Projekt angewendet sonar.exclusions=node_modules/**wird, um verschachtelte node_modules-Ordner NICHT auszuschließen, die Sie ausführen müssen, um sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**sie explizit auszuschließen
Christian Bartram

68

Ich kann mehrere Verzeichnisse mit der folgenden Konfiguration ausschließen (durch Kommas getrennte Ordnerpfade):

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

Und während ich den Sonarläufer laufen ließ, bekam ich Folgendes im Protokoll:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

17
Ich erhalte auch die ausgeschlossene Nachricht, aber die Dateien werden noch analysiert.
Sebas

In den Teamcity-Parametern habe ich Ihren Tipp verwendet, aber zuvor -D eingefügt (-Dsonar.exclu ...). Funktioniert hier. :-)
Maciel Bombonato

Wie kann ich hier alle * .html-Dateien vom Scannen ausschließen? Versuchte dies, sonar.exclusions=**/bin/**,*.htmlaber es dauert immer noch HTML-Dateien auch beim Scannen. HTML-Dateien sind alle Unterordner an mehreren Stellen, und das Hinzufügen auf Unterordnerebene hier mit der tatsächlichen Pfadzuordnung wird mehr Arbeit bedeuten. Gibt es eine Möglichkeit, alle * .specific_file_type vom Scannen auszuschließen?
Elamurugan


13

Wenn wir den gesamten Ordner überspringen möchten, kann Folgendes verwendet werden:

sonar.exclusions=folderName/**/*

Und wenn wir nur eine bestimmte Datei haben, geben Sie einfach den vollständigen Pfad an.

Alle Ordner, die hier ausgeschlossen und angehängt werden müssen.


2
Was ist der Unterschied zwischen dieser Antwort und sonar.exclusions=folderNameund sonar.exclusions=folderName/**? Vielen Dank
Payne

* - Null oder mehr Zeichen übereinstimmen ** - Null oder mehr Verzeichnisse übereinstimmen? - Match ein einzelnes Zeichen
Keerthi Bandara

12

Eine weitere Konfigurationsoption ist das Hinzufügen von Maven-Eigenschaften sonar.exclusions. Unten finden Sie eine Beispiel-POM-Datei mit Ausschlüssen des statischen JQuery-Verzeichnisses und des statischen PDF-Viewer-Verzeichnisses.

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


7

Am einfachsten ist es, nach dem Starten des Servers (localhost: 8080) zur Server-URL zu wechseln und sich dann als Administrator anzumelden. Gehen Sie zu Einstellungen> Ausschlüsse> Ausschlüsse für Quelldateien - Fügen Sie hier Ihre Pakete hinzu. Starten Sie den Server neu.


2

Welche Sonarversion verwenden Sie? Es gibt eine Option namens " sonar.skippedModules = yourmodulename" ".

Dadurch wird das gesamte Modul übersprungen. Also sei dir dessen bewusst.


12
WARNUNG - Die Eigenschaft 'sonar.skippedModules' ist seit Version 4.3 veraltet und sollte nicht mehr verwendet werden.
Zheng Kai

1

Um nur zu erwähnen, dass Sie, sobald Sie die Dateien von Sonar ausgeschlossen haben, dasselbe für das Jacoco-Plugin tun:

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

1

Fügen Sie durch Kommas getrennte Ordnerpfade hinzu sonar.exclusions=**/abc/**,**/def/**

Dies funktionierte in einem Winkelprojekt


1

Wenn Sie ein Azure DevOps-Benutzer sind und suchen, wo und wie Sie Dateien und Ordner ausschließen können, gehen Sie wie folgt vor:

  1. Bearbeiten Sie Ihre Pipeline
  2. Stellen Sie sicher, dass Sie die Aufgabe "Analyse auf SonarQube vorbereiten" hinzugefügt haben. Sie müssen woanders suchen, wenn Sie Hilfe bei der Konfiguration benötigen. Vorschlag: Verwenden Sie den UI-Pipeline-Editor im Vergleich zum Yaml-Editor, wenn Sie den Link zum Verwalten vermissen. Derzeit gibt es keine Möglichkeit, von yaml in die Benutzeroberfläche zu konvertieren. Erstellen Sie einfach die Pipeline neu. Wenn Sie git verwenden, können Sie das Yaml aus dem Stammverzeichnis Ihres Repos löschen.
  3. Im Abschnitt "Erweitert" der Aufgabe "Analyse auf SonarQube vorbereiten" können Sie Ausschlüsse hinzufügen. Informationen zu bestimmten Ausschlussformaten finden Sie in den Ratschlägen anderer.

Beispiel:

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

Hinweis: Wenn Sie sich auf dem Pfad nicht sicher sind, können Sie in Sonarqube gehen, Ihr Projekt anzeigen, alle oder neue 'Code-Gerüche' anzeigen. Der Pfad, den Sie benötigen, ist über jeder Gruppe von Problemen aufgeführt. Sie können den vollständigen Pfad zu einer Datei abrufen oder Platzhalter wie die folgenden Beispiele verwenden:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Wenn Sie die Aufgabe "Codeanalyse ausführen" nicht hinzugefügt haben, tun Sie dies und platzieren Sie sie irgendwo nach der Aufgabe "Lösung erstellen ** / *. Sln".

Speichern und in die Warteschlange stellen und dann Ihren Sonarqube-Server überprüfen, um festzustellen, ob die Ausschlüsse funktioniert haben.


0

Fügen Sie diese Zeile Ihrer Datei sonar-project.properties hinzu

Beispiel: sonar.exclusions = src / *. java Seien Sie vorsichtig, wenn Sie einen Ordner ausschließen möchten und sich innerhalb des Ordners eine Datei befindet. Sie müssen zuerst die Dateien ausschließen oder die Dateien einzeln hinzufügen. Stellen Sie sich beispielsweise vor, es gibt einen Ordner wie den folgenden ::

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

das musst du machen: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Es hat bei mir funktioniert


0

Sie können das gleiche mit tun build.gradle

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

Und wenn Sie mehr Dateien / Verzeichnisse ausschließen möchten, dann:

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

-1

Das hat bei mir funktioniert:

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

Es schließt alle .js- und .css-Dateien in einem der Unterverzeichnisse eines Ordners "wwwroot" aus, der als eines der Unterverzeichnisse des Ordners "src" (Projektstamm) angezeigt wird.


Dies scheint sich nicht wesentlich von anderen Antworten zu unterscheiden. Wie bei vielen anderen Antworten werden Doppelstern-Platzhalter verwendet. Es stimmt nicht mit dem überein, was die Frage ausschließen wollte.
Stephen Ostermiller
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.