Ich habe wirklich einen "Überlauf" bekommen, der versucht, diese Dinge zusammenzuarbeiten. Ich folgte der Anleitung von hier: http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin und bekam schließlich einen SonarQube 5.1.1 Server mit Android Lint Plugin 1.1 installiert. Dann habe ich meine Multiple-Modules-Version von Gradle so konfiguriert, dass sie mit dem SonarQube-Plugin funktioniert: siehe Codefragment von der root-Konfiguration unten.Android-Projekt mit Lint und SonarQube analysieren
plugins {
id 'org.sonarqube' version '1.0'
}
sonarqube {
properties {
property 'sonar.host.url', 'sonarqube-server:9000'
property 'sonar.jdbc.url', 'jdbc:mysql://sonarqube-db:3306/sonar?useUnicode=true&characterEncoding=utf8'
property 'sonar.jdbc.driverClassName', 'com.mysql.jdbc.Driver'
property 'sonar.jdbc.username', 'sonar'
property 'sonar.jdbc.password', 'sonar'
property 'sonar.sourceEncoding', 'UTF-8'
property 'sonar.login', 'admin'
property 'sonar.password', 'admin'
property 'sonar.profile', 'Android Lint'
property 'sonar.import_unknown_files', true
property 'sonar.android.lint.report', 'build/outputs/lint-results.xml'
}
}
Und danach lief ich lint sonarqube
Aufgabe die Analyse auszuführen. Als Ergebnis erhielt ich einen Großteil der Lint-Fehler in Bezug auf "RetroLambda" -Projekt (java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression
), die ganz normal ist, und lint-results.xml
(mit HTML-Version begleitet) Dateien für jedes Modul mit Beschreibungen der erkannten Probleme. Der Bericht sagte, dass 8 Fehler und 434 Warnungen gefunden wurden. Es ist jedoch ein Fehler aufgetreten, als das Sonarqube-Plugin versucht hat, die Ergebnisse auf den SonarQube-Server hochzuladen. Das Protokoll war voll mit den Meldungen "Datei konnte nicht gefunden werden" und "Regel konnte nicht gefunden werden". Und als die Verarbeitung abgeschlossen war, wurden keine Probleme für mein Projekt auf dem SonarQube-Server gemeldet.
Und ich frage mich, was ist schiefgelaufen? Ich überprüfte die Pfade und alle Dateien waren da. Ich habe alle Diskussionen durchgesehen, die ich erreichen konnte, und es scheint, als wäre meine Konfiguration korrekt und ich mache alles richtig. Hat jemand eine Ahnung, was ich vermisst habe und was überprüft werden muss? Irgendwelche Vorschläge oder Ideen sind willkommen.
Ich bin auch glücklich, wenn es eine Möglichkeit gibt, Lint Daten mit externen SonarQube Runner zu importieren, da dieses Tool vorhersehbarer und stabiler als ein Gradle Plugin zu sein scheint.
Sind die Pfade im Flusenbericht korrekt? Sind sie relativ oder absolut? Gelingt die Analyse eines einzelnen Moduls? FYI, hier sind die Dokumente zum Konfigurieren eines Multi-Modul-Projekts für die Sonar Runner-Analyse: http://docs.sonarqube.org/display/SONAR/Analyzing+mit+SonarQube+Runner#AnalyzingwithSonarQubeRunner-MultimoduleProject –
Würden Sie das sein? in der Lage, die Fehlermeldung zu teilen, die Sie über die Datei/Regel nicht finden können? Könnte helfen, das Problem zu lokalisieren. Nach Ihrer Idee über die Verwendung von Sonar-Runner zu Lint-Berichte zu importieren: Dies sollte funktionieren, wenn Sie die Sonar.android.lint.report-Eigenschaft für Sonar-Runner konfigurieren. – benzonico