2016-09-19 5 views
7

Wir möchten SonarQube mit einigen CI-Tools in unserem Projekt verwenden. Die Sonar-Server-URL ist im Hauptverzeichnis pom.xml konfiguriert.Wie funktioniert Sonar: Sonar?

Es gibt mehrere Teammitglieder im Projekt. Was passiert, wenn ein Teammitglied Sonar lokal mit seinen lokalen Änderungen ausführt, dann führt ein anderes Teammitglied Sonar mit seinen lokalen Änderungen aus, und dann führt jemand Sonar vom CI-Tool aus (es ist konfiguriert Quellcode im Git Repository zu analysieren)?

Wird SonarQube Probleme mit lokalen Änderungen der Teammitglieder anzeigen? Was ist, wenn es im Quell-Repository Unterschiede zwischen lokalem Quellcode und Quellcode gibt?

+0

Es ist am besten, die Sonarqube-Einstellung in einer anderen Datei als sonar.properties zu belassen, als in pom.xml. Und schließen Sie es nicht als Teil Ihres Source Managements ein, das von Entwicklern geteilt wird. Speichern Sie die Datei schließlich in dem Verzeichnis auf dem System, in dem CI das Build ausführt, und konfigurieren Sie es entsprechend. – Nobody

+0

@Nobody Die Build-Konfiguration getrennt von der Codebasis zu behalten, ist ein Königsweg, und CI-Systeme sind dabei, die darin enthaltenen Metadaten zu speichern. (Sieh dich an, Jenkins.) – chrylis

+0

@chrylis ich meine, halte die Konfiguration aus der Pom-Datei. und nicht aus der Quellverwaltung heraus. CI kann alles auswählen, was Teil der Quellverwaltung ist und heruntergeladen werden kann. Ya ich kenne Jenkins .. Jenkins hat etwas, das Pipelines genannt wird und von Batch ausgeführt wird. Es geht darum, wie Sie Jenkins einrichten. Wenn Sie die Konfiguration separat aufbewahren, wird ein versehentliches Hochladen auf Sonar verhindert. – Nobody

Antwort

13

sonar:sonar führt eine Analyse aus und sendet die Ergebnisse an den Server - vorausgesetzt, Sie führen ihn mit dem Token eines Kontos aus, das über die entsprechenden Berechtigungen verfügt.

Entwickler sollte nicht diese Art von Analyse lokal ausführen, um ihre Änderungen zu überprüfen. Stattdessen sollten sie SonarLint und vielleicht pull request analysis verwenden (abhängig von Ihrer Infrastruktur).

Um ein wenig darüber zu erweitern, warum Entwickler sonar:sonar nicht lokal verwenden sollten: Es aktualisiert den zentralen Server in einer Last-Saved-Win-Weise. Also, wenn Sie A.java bearbeitet und lokal analysiert haben, bevor Sie es committen, und ich habe A.java in B.java umbenannt und eine ähnliche lokale Analyse vor dem Commit durchgeführt ... Was ist auf dem SonarQube-Server sichtbar? Hängt davon ab, wer zuletzt gespeichert/analysiert wurde.

Stattdessen sollte sonar:sonar nur von Ihrem CI-Tool auf dem eingecheckten Code ausgeführt werden, der bereits sichtbar für das gesamte Team ist.

+0

Wenn es zuerst erstellt wird, wenn ein neues Projekt in SonarQube erstellt wird? Nach der Ausführung von _sonar: sonar_ Sonar Maven Plugin Regeln von SonarQube Server, SonarQube Server erstellt neues Projekt, Sonar Maven Plugin führt Analyse und sendet die Ergebnisse an den Server? Habe ich die richtige Reihenfolge beschrieben? – RuF

+0

Ich glaube, die Erstellung eines Projekts erfolgt, nachdem der Analysebericht an den Server gesendet wurde. –

2

Wie Sie gesagt haben, dass die Sonar-Server-URL in mail pom.xml und der Sonar: Sonar-Befehl Ihres Teammitglieds auf dem lokalen Computer erstellt wird. Aber wegen alle auf die gleiche Server-URL beziehen. Alle Änderungen werden sich also auf ein gemeinsames Projekt auswirken. Wenn Sie die Differenz getrennt für jedes Teammitglied sehen möchten. dann müssen Sie entweder den Projektnamen von einander unterscheiden. Sonst wirst du das Neueste dort sehen.

Sonar gibt Ihnen einen grafischen Unterschied. so gut wie du zwei Builds vergleichen kannst.

Sekunde Wenn der Benutzer nur Administratorrechte hat, kann er den Sonarserver sonst nicht aktualisieren.