Ich bekomme die Warnung Missing blame information for the following files
während der Analyse durch SonarQube.
[INFO] [22:19:57.714] Sensor SCM Sensor
[INFO] [22:19:57.715] SCM provider for this project is: git
[INFO] [22:19:57.715] 48 files to be analyzed
[INFO] [22:19:58.448] 0/48 files analyzed
[WARN] [22:19:58.448] Missing blame information for the following files:
(snip 48 lines)
[WARN] [22:19:58.449] This may lead to missing/broken features in SonarQube
[INFO] [22:19:58.449] Sensor SCM Sensor (done) | time=735ms
Ich verwende SonarQube 5.5, die Analyse wird von Maven in einem Jenkins-Job in einem Java-Projekt mit mehreren Modulen durchgeführt. Git-Plugin 1.2 ist installiert.
Das manuelle Ausführen von git Blame in einer Bash-Shell für eine der anstößigen Dateien führt zu einer erwarteten Ausgabe.
Verwandte Fragen, die ich gefunden habe, beziehen sich alle auf SVN, mein Problem ist Git.
Wie erhalte ich Git-Blamage-Informationen auf Sonarqube?

Amedee Van Gasse
Ursache war ein JGit-Fehler. JGit wird nicht unterstützt .gitattributes
. ich hatte ident
in meinem .gitattributes
. Einfache Konsole git
Quelle überprüft, angewendet ident
an $Id$
Makros, aber dann ignorierte JGit das und sah einen Unterschied, der nicht festgeschrieben wurde, wo eigentlich keiner war.
Die freundlichen Menschen auf der SonarQube-Mailingliste hat mir geholfen und vorgeschlagen, mit dem zu debuggen eigenständige JGit-Befehlszeilenverteilung:
chmod +x /where/is/org.eclipse.jgit.pgm-<version>-r.sh
/where/is/org.eclipse.jgit.pgm-<version>-r.sh blame -w /path/to/offending/file
Dieser spezielle JGit-Fehler wurde seit über 5 Jahren nicht behoben und ich habe keine Hoffnung, dass er bald behoben wird, also habe ich den entfernt $Id$
Makros aus allen meinen Quellen.
Dies ist der (Bash-)Code, den ich verwendet habe, um alle zu entfernen $Id$
Makros:
find */src -name "*.java" | xargs -n 1 sed -i '/$Id.*$/d'
find */src -name "*.java" | xargs git add
git commit -m "Remove $Id$ macros"
git push
Ich hatte ein ähnliches Problem: Eine Datei in meinem Projekt wurde während des Erstellungsprozesses erstellt und nicht in der Quellcodeverwaltung gespeichert. In meinem Fall war es api.json
.
Innerhalb des SonarQube-Runner-Build-Schritts in Team City habe ich diese Datei zu den Ausschlüssen innerhalb der zusätzlichen Parameter hinzugefügt
-Dsonar.exclusions=**/spec/api.json
und der Fehler ist verschwunden.
Ich bin auf dieses Problem bei einem Build gestoßen, der nach einem Sonar-Upgrade nicht mehr funktionierte.
Das Problem für mich war, dass die Der Jenkins-Job wurde so konfiguriert, dass beim Pullen von Git ein flacher Klon ausgeführt wird. Dadurch wird nicht genügend Verlauf erfasst, sodass Sonar 5.6.6 keine Analyse durchführen konnte, da die Schuldinformationen nicht in der flachen Kopie enthalten waren. Ich habe die verwendet -X Option beim Ausführen von Sonar, um die tatsächliche Commit-Nummer anzuzeigen, an der es erstickt war.
In meinem Fall habe ich einfach das Kontrollkästchen für flache Kopie deaktiviert und BAM, es funktionierte wieder (wenn auch langsamer)!


Jörg Trindade
Es gibt eine andere Lösung für diesen Fall, die mein Problem gelöst hat. Wenn Sie sich in einem Unternehmen oder Unternehmensstandort befinden, müssen Sie sich beim Artefakt-Repository anmelden, damit der Docker Example starten kann
$ docker login artifactory.companyname.corp
Danach fragt der Docker nach Ihrem Unternehmensbenutzer und Passwort und das Problem ist behoben
9989800cookie-checkSonarqube: Fehlende Schuldinformationen für die folgenden Dateienyes
Wenn ich Ihre Beschreibung verstehe, haben Sie ein einfaches Jenkins-Projekt mit mehreren Git-Repositorys? Und Ihr Sonarprojekt ist eine Zusammenfassung aller von Jenkins gezogenen Git-Module.
– Ströme
1. Juni 2016 um 11:57 Uhr
Nein. Die Relation git/jenkins ist eins zu eins.
– Amedée Van Gasse
1. Juni 2016 um 12:11 Uhr
Sie können sich also diesen Beitrag ansehen. Ich habe das Problem, dass Jenkins mehrere Git-Projekte in einem einzigen Jenkins-Projekt verwaltet
– Ströme
1. Juni 2016 um 12:27 Uhr
Nein. Das war nicht die Ursache des Problems. Alle Dateien wurden begangen, aber JGit hat SonarQube diesbezüglich angelogen. Dies ist ein 5 Jahre alter, gut dokumentierter und ungelöster Fehler in JGit. Siehe meine Antwort unten.
– Amedée Van Gasse
1. Juni 2016 um 12:29 Uhr