Sonarqube: Fehlende Schuldinformationen für die folgenden Dateien

Lesezeit: 5 Minuten

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?

  • 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


Sonarqube Fehlende Schuldinformationen fur die folgenden Dateien
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

  • Was ist mit Windows-Maschinenbenutzern, wie sie die $Id$-Makros entfernen können? Ich habe die obigen Zeilen ausprobiert, aber es funktioniert nicht in Git Bash

    – S. Atah Ahmed Khan

    15. Januar 2019 um 7:15 Uhr


  • Installieren Sie das Linux-Subsystem für Windows, oder wie auch immer das Linux-on-Windows heutzutage genannt wird, und Sie haben ein vollständiges Linux, das nativ in Windows läuft. Aber Ihre Frage geht über den Rahmen dieser Frage hinaus. Wenn Sie noch Hilfe benötigen, beginnen Sie eine neue Frage.

    – Amedée Van Gasse

    15. Januar 2019 um 8:07 Uhr


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.

  • bei meinem Projekt ist mir das aufgefallen Missing blame information for the following files: enthält eine Liste mit pom.xml und jeder vom Scan ausgeschlossenen Java-Datei

    – Sascha Bond

    4. März 2021 um 18:26 Uhr

  • Nicht genau die gleiche Fehlerursache wie in meinem Fall, aber vielleicht ist anderen mit Ihrer Antwort geholfen.

    – Amedée Van Gasse

    5. August 2021 um 14:24 Uhr

  • In ähnlicher Weise würde mein DevOps-Build-Prozess automatisch eine vorhandene Versionsdatei ändern, um Informationen hinzuzufügen, die für diesen Build spezifisch sind. SonarQubeAnalyze warnte dann vor fehlenden Schuldinformationen, bis ich diese Datei hinzufügte sonar.exclusions wie du vorgeschlagen hast.

    – Schnarchen

    27. Januar um 12:08 Uhr

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)!
Geben Sie hier die Bildbeschreibung ein

  • Ihre Antwort hat nichts mit der von mir gestellten Frage zu tun, ist jedoch dennoch nützlich, da sie eine andere Warnmeldung unterdrückt, die ich von SonarQube erhalten habe.

    – Amedée Van Gasse

    25. Juni 2019 um 8:37 Uhr

  • Wie ist es unabhängig, wenn es zu denselben Warnungen führt?

    – John Mercier

    7. Oktober 2019 um 14:28 Uhr

  • Ich hatte das gleiche Problem in Jenkins, und das oberflächliche Klonen war auch für mich die vorhergehende Warnung. Für mich ist das im Jenkins-Kontext eine ehrliche Antwort

    – Nestor Miljajew

    2. März 2021 um 16:47 Uhr

  • Es ist unabhängig, weil es nichts mit dem oben Genannten zu tun hat ident Fehler in JGit.

    – Amedée Van Gasse

    12. April 2021 um 7:45 Uhr

  • Unterschiedliche Ursachen können zu ähnlichen Ergebnissen führen. Weißt du, wie alle Wege nach Rom führen.

    – Amedée Van Gasse

    5. August 2021 um 14:25 Uhr

1647205089 982 Sonarqube Fehlende Schuldinformationen fur die folgenden Dateien
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

998980cookie-checkSonarqube: Fehlende Schuldinformationen für die folgenden Dateien

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy