Naprawdę mam "przepełnienie", próbując sprawić, aby te rzeczy działały razem. Postępowałem zgodnie z instrukcją: http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin i wreszcie mam zainstalowany serwer SonarQube 5.1.1 z zainstalowaną wtyczką Android Lint 1.1. Następnie skonfigurowałem moją wielomodułową kompilację Gradle do pracy z wtyczką SonarQube: zobacz fragment kodu z konfiguracji root poniżej.Analizowanie projektu Android za pomocą Lint i SonarQube
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'
}
}
Po tym uruchomiłem lint sonarqube
zadanie do wykonania analizy. W rezultacie otrzymałem większość błędów Lint dotyczących projektu "retrolambda" (java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression
), co jest całkiem normalne, i lint-results.xml
(wraz z wersją HTML) plików dla każdego modułu zawierającego opisy odkrytych problemów. W raporcie napisano, że wykryto 8 błędów i 434 ostrzeżenia. Ale wszystko poszło nie tak, kiedy wtyczka sonarqube próbowała przesłać wyniki na serwer SonarQube. Dziennik zawierał komunikaty "Nie można znaleźć pliku" i "Nie można znaleźć reguły". Po zakończeniu przetwarzania nie zgłoszono żadnych problemów z moim projektem na serwerze SonarQube.
Zastanawiam się, co poszło nie tak? Sprawdziłem ścieżki i wszystkie pliki tam były. Przejrzałem wszystkie dyskusje, jakie mogłem osiągnąć, i wygląda na to, że moja konfiguracja jest poprawna i wszystko robię dobrze. Czy ktokolwiek ma jakąś wskazówkę, co przegapiłem i co należy sprawdzić? Wszelkie sugestie i pomysły są mile widziane.
Będę również szczęśliwy, jeśli istnieje sposób na importowanie danych kłód za pomocą zewnętrznego SonarQube Runner, ponieważ to narzędzie wydaje się być bardziej przewidywalne i stabilne niż wtyczka Gradle.
Czy ścieżki w raporcie o kłaczkach wydają się być poprawne? Czy są względne czy absolutne? Czy analiza pojedynczego modułu zakończyła się powodzeniem? FYI, oto dokumenty do konfigurowania wielomodułowego projektu do analizy Sonar Runner: http://docs.sonarqube.org/display/SONAR/Analyzing+z+SonarQube+Runner#AnalyzingwithSonarQubeRunner-Multi-moduleProject –
Czy byłbyś można udostępnić komunikat o błędzie, o którym wspomniałeś? Nie można znaleźć pliku/reguły? Może pomóc w zlokalizowaniu problemu. Co do twojego pomysłu na używanie sonaru-biegacza do importowania raportów lint: to powinno działać, jeśli skonfigurujesz właściwość 'sonar.android.lint.report' dla sonaru-runnera. – benzonico