2016-03-30 14 views
0

Basierend auf der Frage Sonar + Clover only runs on src-instrumented, ist es ratsam, zuerst mvn sauber clover2: setup installieren clover2: clover, dann: mvn sonar: sonar .Warum sollte zuerst mvn sauber clover2 laufen: setup installieren clover2: klee, dann: mvn sonar: sonar

nur wundern, warum wir nicht mvn sauber clover2 verwenden: setup install clover2: klee sonar: sonar?

+0

Herzlichen Glückwunsch zu Ihrem ersten Beitrag! Willkommen in dieser wunderbaren Gemeinschaft. - Sarah: P (ja, wir kennen jeden anderen) – sarahTheButterFly

Antwort

1

In der Vergangenheit war es die empfohlene Möglichkeit, Ziel sonar:sonar alleine zu laufen. Dies ist nicht mehr der Fall, da SonarQube Scanner for Maven nicht mehr versucht, Komponententests auszuführen und die Abdeckung für Sie zu sammeln, indem Sie einen neuen Maven-Lebenszyklus fälschen.

Allgemeiner Hinweis ist jetzt, Ziele in einem einzigen Befehl auszuführen. Zum Beispiel mvn clean package sonar:sonar

Im Fall von Clover das clover:setup Ziel wird das Maven-Modell ändern, damit alle anderen Plugins (wie todsichere) instrumentierte Klassen anstelle des ursprünglichen Quellcodes verwenden. Dies ist in der Tat ein Problem, da es SonarQube daran hindert, Klassendateien zu finden. In diesem Fall sollten Sie entweder zwei separate Ziele festlegen oder sonar.sources manuell konfigurieren, um auf den ursprünglichen Quellcode zu verweisen.

+0

Danke für deine Antwort. Aber mein Problem ist, wenn ich alle Ziele in einem einzigen Befehl ausführen, die Unit Tests Coverage ist leer im Dashboard. Ich muss sie separat ausführen, um sicherzustellen, dass Unit Tests Coverage angezeigt wird. Bezieht sich dies auf SonarQube Version oder Sonar Maven Plugin Version? Aus dem Sonar-Dokument geht hervor, dass Sie bei Verwendung der SonarQube-Instanz vor Version 4.5 das maven-sonar-plugin 2.6 verwenden sollten und unsere Firma SonarQube Version 4.3.2 verwendet. – Ken

+0

Danke, diese Erklärung macht wirklich Sinn! – Ken

0

die Maven-Protokolle Im Vergleich und fand die mögliche Ursache:

Die "mvn sauber clover2: setup installieren clover2: Klee Sonar: sonar" scheint Problem mit der Quelle dirs zu finden. Das Protokoll zeigt, dass es $ {project} \ target \ clover \ src-instrumentiert und $ {project} \ target \ generated-sources \ annotations als Quellenverzeichnis verwendet.

Wenn Sie explizit src/main/java angeben, funktioniert dieser einzelne Befehl gut. Die einzige schwierige Sache ist, warum die Sonar-Dateien nicht separat angegeben werden müssen, aber das Plugin kann immer noch den richtigen Ordner für Quell-Verzeichnisse finden.

+0

Sonar: Sonar erhält den Standardwert von 'sonar.sources' vom Maven-Modell (Maven Plugin-API). Clover verändert das Modell (wahrscheinlich um andere Plugins wie todsichere Klassen zu benutzen). Also werde ich meine Antwort aktualisieren. –