2014-04-04 20 views
5

Ho il seguente problema: Ho installato SonarQube e Android Plugin con profilo di qualità "Android Lint". Quando eseguo il mio script build.gradle con il profilo "Android Lint", il plugin sonar-runner funziona bene, ma in SonarQube non riesco a vedere nessun problema di ricerca trovato, solo zero.Sonar Android Lint nessun problema di ricerca trovato

Tuttavia, quando includo un altro profilo, non "Android Lint", riesco a visualizzare molti problemi. Anche nel mio SDK Android quando si applica il proprio lint posso vedere 157 problemi. Cosa può essere?

sonar - version 3.7.4; 
android plugin - version 0.1

risposta

3

La tua struttura sonar.sources deve puntare alla radice del AndroidManifest.xml file di. Per esempio. se il file AndroidManifest.xml si trova nel src/main allora il vostro file di build.gradle deve contenere:

sonarRunner { 
    sonarProperties { 
     ... 
     property "sonar.sources", "src/main" 
     property "sonar.profile", "Android Lint" 
     ... 
    } 
} 

Se avete bisogno di più percorsi in sonar.sources li può mettere come un elenco separato da virgole.

È possibile trovare il modo in cui Sonar Android Plugin determina se eseguire l'analisi nel suo source code.

0

Sfortunatamente se si limitano a puntare sonar.sources a src/main, si avranno problemi con tutta la sorgente, perché molto probabilmente non si eseguono mave minSdkVersion e targetSdkVersion set (viene da gradle). Ho provato a installare la mia fonte di essere qualche cosa come:

build/intermedi/fasci/release, src/main/java

Ma ho ancora una quantità eccessiva di errori (non validi) a causa di livelli di API .

+0

Sei riuscito a trovare un defini soluzione tiva? – FoY

+1

No, stiamo utilizzando l'output LINT di Hudson/Jenkins e l'utilizzo di Sonar per analisi tradizionali, non Android. Un pò fa schifo ma è quello che è. –

1

cambiare le proprietà sonar in questo modo:

apply plugin: "org.sonarqube" 

sonarqube { 

properties { 

    property "sonar.projectName", "appa" 

    property "sonar.projectKey", "appa_app" 

    property "sonar.projectVersion", "1.0" 

    property "sonar.analysis.mode", "publish" 

    property "sonar.language", "java" 

    property 'sonar.sourceEncoding', "UTF-8" 

    property "sonar.sources", "./src/main" 

    //property "sonar.exclusions", "**/*Entity.java" 

    // property "sonar.exclusions", "src/main/java/com/apparkb/model/**, **/*Entity.java" 

    property "sonar.host.url", "http://192.168.21.33:9000" 

    property "sonar.login", "admin" 

    property "sonar.profile", "testlint"//use your quality profile instead 

    property 'sonar.import_unknown_files', true 

    property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml" 

    property "sonar.password", "admin" 

    property "sonar.java.binaries", "build/" 



} 
} 

Per la creazione di lint-risultati-debug.xml si dovrà eseguire il comando in basso a TERMINAL Studio:

./gradlew lint 

Sarà genera il rapporto XML mancante. Siate cauti, può generare un report per ogni variante di build (Debug di default genererà build/output/lint-results-debug.xml). Quindi puoi chiamare lintDebug, lintRelease ... dipendenze dalla tua variante di build.

e modificare le proprietà pelucchi a:

lintOptions { // set to true to turn off analysis progress reporting by lint 

    quiet true 

    // if true, stop the gradle build if errors are found 

    abortOnError false 

    // do not ignore warnings 

    warningsAsErrors true 
} 

ora se si esegue

./gradlew sonarqube 

si ottengono i risultati dimostrato la sua in realtà il rapporto file locale che è in realtà sempre ospitato su il server enter image description here

Problemi correlati