2016-11-03 1 views
0

Ich habe Schwierigkeiten mit Ausschlüssen in SonarQube. Ich habe diese besondere Situation hier nicht wirklich gesehen und nach einigen anderen Lösungen, die in Ausschlussfragen vorgeschlagen wurden, ist das Problem nicht gelöst worden. Jeder Einblick würde wirklich geschätzt werden.SonarQube-Verzeichnisausschlüsse vNext Component Issue

Ich habe mit einem Ingenieur an der Filterung der Dateien gearbeitet, die SonarQube während der Bauzeit von ihrem Projekt analysiert. Ihre Lösung wird über einen vNext-Build erstellt, bei dem TFS und der Build-Server lokal gehostet werden. SonarQube wird auch lokal gehostet. Der Build verwendet die Sonar-Komponenten, die in vNext für die Analyse enthalten sind. Das Projekt ist hauptsächlich C#.

Die Lösung besteht aus meist Projekten, die exklusiv für diese Lösung sind, aber ein paar Projekte Referenzen, die vollständig Teil einer anderen App sind. Aus diesem Grund muss das Arbeitsbereich-Mapping Dateien aus zwei separaten Teilen der Quellcodeverwaltung abrufen. Aufgrund der Art und Weise, wie die Lösung nach den Projekten sucht (basierend auf den Eigenschaften der Lösungsdatei selbst), muss ich die Quellsteuerdateien auf eine bestimmte Weise zuordnen. Auf einem hohen Niveau, der Arbeitsbereich auf dem Build-Server etwas wie folgt aussieht:

enter image description here

In der Sonar-Einstellungsdatei wird das Arbeitsverzeichnis in das Build-Quellordner eingestellt

Der Ingenieur will ausschließen Codedateien von bestimmten Verzeichnissen aus der Analyse. Beispielsweise möchten sie alle CS-Dateien aus dem Ordner X innerhalb von B.Srvc ausschließen. Das Verzeichnis wäre also Quellverzeichnis erstellen/B/Quelle/B.Srvc/X. Basierend auf den Ausschluss Anweisungen auf Sonarqube Webseite gefunden, es klang wie ich nur so etwas wie dies tun musste:

sonar.exclusions=Build Source Directory/B/Source/B.Srvc/X/**/*.cs 

Wenn ich das täte, es immer noch die Dateien in diesem Ordner analysiert. Ich habe versucht, verschiedene andere Kombinationen von Mustern wie:

sonar.exclusions=Build Source Directory/B/Source/B.Srvc/X/*.cs 
sonar.exclusions=**/X/**/*.cs 
sonar.exclusions=B/Source/B.Srvc/X/**/*.cs 
sonar.exclusions=**/B/Source/B.Srvc/X/**/*.cs 

ich auch versucht habe, den kompletten Verzeichnispfad zu geben (so, C:/Mittel/_work/25/src/...), aber das hat nicht funktioniert entweder .

Sehr breite Ausschlüsse wie **/* Name * .cs funktionieren einwandfrei, aber wenn ich Dateien aus bestimmten Verzeichnissen ausschließen möchte, kann ich nichts erreichen.

Ich fühle mich wie ich etwas wirklich Grundlegendes vermisse, aber ich kann es einfach nicht herausfinden. Ich habe versucht, dieses Problem für eine Weile zu lösen, wenn ich Zeit habe, aber ich habe keine Fortschritte gemacht. Wenn jemand irgendeinen Einblick geben könnte, würde ich es sehr schätzen. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.

Antwort

1

Suchen Sie in der SonarQube-Oberfläche nach einer der Dateien, die Sie ausschließen möchten. Oben sehen Sie den Dateipfad, wie SonarQube es versteht. Es ist dieser Pfad, den Sie verwenden möchten, wenn Sie Ihre Ausschlüsse über die UI nicht die Analyseeinstellungen eingeben.

Aufgrund der Struktur der Ausschlusseigenschaften sind sie in den Analyseeigenschaften sehr, sehr schwierig korrekt einzurichten. Das ist warum tut dies nicht dokumentiert.

Stattdessen sollten Sie eingeben Ausschlüsse über die Benutzeroberfläche.

+0

Das hat funktioniert! Ich wusste, dass es etwas Grundlegendes sein würde. Ich danke dir sehr! Das wirft eine andere Frage auf, aber es könnte ein ganz anderes Thema rechtfertigen.Wie genau ermittelt Sonar den Dateipfad? Der Grund, den ich stelle, ist, weil der Pfad, den es in der Benutzeroberfläche anzeigt, nicht ganz dem entspricht, was auf dem Server ist. Es sieht so aus, als würde es das Arbeitsverzeichnis ständig ändern, wenn es eine Analyse durchführt und den Dateipfad von diesem Ort aus bestimmt. Entschuldigung, wenn das eine dumme Frage ist. Ich habe dieses Tool irgendwie geerbt, also versuche ich mehr darüber zu lernen. –

+0

Das ist definitiv eine separate Frage :-) –