2015-08-12 12 views
50

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.

+0

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 –

+1

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

Odpowiedz

1

Twoje ustawienia gradle wydają się być w porządku, czy zainstalowałeś wtyczkę systemu Android na serwerze SonarQube.

Nie widzę tego kroku na twoje pytanie, jeśli nie, przejdź do Ustawienia-> System-> Centrum aktualizacji i zainstaluj wtyczkę systemu Android.

enter image description here

Raz, że jest zainstalowany trzeba zrestartować serwer SonarQube i ponownie wykonać sonaru-runner.

6

Miałem sukces z wielomodułowym projektem na Androida. Ponieważ kompletne pliki kompilacji zajmują zbyt dużo miejsca, tutaj pokazuję tylko odpowiednie części.

w projekcie dominującej build.gradle ustawić:

buildscript { 
    ... 
    dependencies { classpath 'com.android.tools.build:gradle:1.5.0' 
    ... 
} 
plugins { id "org.sonarqube" version "1.1" } 

W projekcie aplikacji (i wszelkie inne dzieci) I set:

sonarqube { 
    properties { 
     property "sonar.profile", "Android Lint" 
     property "sonar.sources", "./src/main/java" 
    } 
} 

To minimalną konfigurację dla SonarQube wtyczka do rozpoczęcia analizy projektów.

+1

Wow, to naprawdę działa. Długo szukałem rozwiązania, które sprawiło, że mój dzień. AndroidStudio wciąż narzeka, że ​​"właściwości" sonarqube nie mogą być zastosowane do groovy.lang.Closure ...wtf –

+1

Właściwość sonar.profile została usunięta i musi być teraz ustawiona za pośrednictwem interfejsu użytkownika Sonarqube: https://jira.sonarsource.com/browse/SONAR-5370 –

Powiązane problemy