2016-06-09 11 views
7

Ich versuche, einige automatisch generierten Code (Service-Referenzen) von Sonars statischen Code und Unit Test Coverage-Analyse auszuschließen. Das Projekt ist C# .Net und Sonar läuft über Jenkins auf einem Windows-Server.Wie schließt man Dateien mit Leerzeichen im Pfad in Sonar aus?

In meiner sonar-project.properties-Datei kann ich verschiedene andere Dateien und Verzeichnisse mithilfe der sonar.exclusions-Eigenschaft ausschließen. Dies funktioniert jedoch nicht für Dateien, die über Leerzeichen im Pfad verfügen.

sonar.exclusions=**/Global.asax.cs, **/MyProject/Service References/* 

das obige Beispiel die Global.asax.cs Da Dateien in allen Projekten innerhalb der Lösung ausgeschlossen werden, aber die Service Referenzen sind es nicht.

Ich habe versucht, den Pfad in einfache und doppelte Anführungszeichen einzuschließen. Ich habe versucht, einen Backslash zu verwenden, um den Raum zu entkommen. Ich habe versucht, den Pfad als **/MyProject/Service */* zu setzen, um den Platzhalter zu nutzen (könnte riskant sein), aber das hat auch nicht funktioniert.

Hat jemand eine Lösung dafür?

+0

Vielleicht funktioniert die Umgebung mit doppelten Anführungszeichen? So etwas wie '"/MeinProjekt/Service Referenzen "' – DavidG

Antwort

5

Ich lief gerade in das gleiche Problem. Ich musste JavaScript-Dateien in einem Projekt, "Mein Projekt", in einem Ordner Scripts ausschließen. Ich habe versucht, dieses ersten:

**/Scripts/**/*.js 

Und das hat gut funktioniert, aber ich erkennen, wäre es auch einen Ordner „Scripts“ in anderen Projekten auszuschließen. Also habe ich es so geändert:

**/My Project/Scripts/**/*.js 

Und es funktioniert nicht mehr. Mein erster Instinkt war, dass der Platz im Projektnamen dafür verantwortlich war. Also habe ich die gleichen Dinge ausprobiert:

"**/My Project/Scripts/**/*.js" 
'**/My Project/Scripts/**/*.js' 
**/My\ Project/Scripts/**/*.js 

aber nichts davon funktioniert.

Dann stieß ich auf dieses Forum: sonarqube-archive.15.x6.nabble.com/Project-exclusions-for-Code-Coverage-not-working-C-td5023058.html

Besonders sofern diese Linie die Antwort: Module (Net-Projekte) ist nicht von dem vollständig qualifizierten Namen Teil. Sie müssen Ausschlüsse auf Modulebene (.NET-Projekt) definieren.

Es bedeutet, dass mein Fehler kein Leerzeichen im Projektnamen war, sondern den Projektnamen überhaupt enthielt! Ich habe den Filter folgendermaßen geändert:

Scripts/**/*.js 

und voila, die Dateien wurden korrekt ausgeschlossen. Keine Angebote oder Entkommen notwendig.

Natürlich bleibt dabei das Problem, dass ein "Scripts" -Ordner in einem anderen Projekt ebenfalls ausgeschlossen wird. Die hier zur Verfügung gestellten Informationen: docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis können sich als nützlich erweisen.

Ich benutze die Webschnittstelle und nicht die Konfigurationsdatei direkt, aber dies würde auch vorschlagen, dass, wenn Sie mehrere Filter haben, dass die durch Kommas getrennte Liste keine Leerzeichen enthalten sollte (anders als die tatsächlich im Pfad) Sie werden buchstäblich interpretiert.

+0

Das funktioniert nicht für mich. Ich habe versucht, sonar.exclusions = Service-Referenzen/* .cs wie Sie vorschlagen, sowie sonar.SkippedModules = Service-Referenzen/*.cs, wie im Zusammenhang mit Ihrer Antwort erwähnt, führte jedoch nicht zum Ausschluss der Service-Referenzen in der Analyse. Könnten Sie Ihre Antwort klären? –

+0

Das ist schade. Welche Art von Dateien möchten Sie im Ordner "Service-Referenzen" ausschließen? Meine Lösung schließt nur .cs-Dateien im Ordner "Service-Referenzen" aus. Wenn Sie alle Dateien ausschließen möchten, die Sie verwenden würden sonar.exclusions = Service-Referenzen/** – PeterH

+0

Wenn das für Sie funktioniert, werde ich meine Antwort aktualisieren – PeterH