Il problemaSonar, Gradle e Android restituisce 0 problema
Ho un progetto Android che compila e funziona correttamente. È "gestito" da Gradle e continuamente costruito con Jenkins. Vorrei analizzare la qualità del mio codice con Sonar.
L'analisi del sonar viene eseguita con l'attività Gradle sonarRunner
. Il problema è che Sonar mi sta ancora dicendo che c'è "0 problema" ... (Posso assicurarti che ci siano errori ... Ne aggiungo uno io stesso per essere sicuro ...). Tuttavia, mi dà altre informazioni come: numero di righe di codice, numero di classi, commenti e percentuali di documentazione, percentuale di duplicazione, complessità ... È come se Android Lint non fosse in esecuzione.
Quello che ho cercato
lint
funziona come un fascino ...:
Ran pelucchi della variante armRelease: 153 problemi trovati
Ran pelucchi della variante armDebug: 153 problemi rilevati
Tan lint on variant x86Debug: 153 problemi trovati
Ran pelucchi della variante x86Release: 153 problemi trovati
Ho provato un sacco di cose che ho letto su Internet e SO:
- Publishing Lint results to Sonar using Gradle
- http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html
- https://github.com/stephanenicolas/Quality-Tools-for-Android/blob/master/build.gradle
Ho avuto alcuni errori l ike "Class 'android/content/res/Resources" non è accessibile tramite ClassLoader. " o qualcos'altro, ma non sono mai stato in grado di avere una relazione corretta).
I dettagli
Struttura del progetto
- myProjectName
| build
| libs
| src
| debug
| main
| assets
| java
| com.myPackage...
| jniLibs
| res
| AndroidManifest.xml
| release
| build.gradle
| gradle.properties
| settings.gradle
settings.gradle
Vuoto
gradle.properties
Vuoto
compilazione.Gradle (parti inutili rimossi)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.2'
}
}
/**********************************
* Plugins declarations
**********************************/
apply plugin: 'com.android.application'
apply plugin: "sonar-runner"
/**********************************
* Sonar Runner configuration
**********************************/
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://pic.url/sonar"
property "sonar.jdbc.url", "jdbc:mysql://pic.url/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "*****"
property "sonar.jdbc.password", "*****"
property "sonar.language", "java"
property "sonar.profile", "MyCompany Android"
property "sonar.projectVersion", "1.0"
property "sonar.analysis.mode", "analysis"
properties["sonar.sources"] = android.sourceSets.main.java.srcDirs
properties["sonar.binaries"] = [file("build/intermediates/classes/x86/debug")]
}
}
/**********************************
* Android configuration
**********************************/
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.myPackage..."
minSdkVersion 14
targetSdkVersion 16
versionCode 1
versionName "1.0"
}
lintOptions {
abortOnError false
}
}
Come ho provato un sacco di cose, non mi alcun indizio su cosa provare dopo. Si prega di chiedere nei commenti se avete bisogno di ulteriori informazioni.
Ultima informazione:
- Sonar 3.7
- Gradle 1.12
- JVM 1.8.0_20 Oracle
- SO: Linux Fedora 20
EDIT
gradle sonarRunner
log (richiesto nei commenti): http://pastebin.com/uJwqpAkY
(tutti i '***' sono qui per nascondere i nomi di società, tutto è normale :))
Sareste in grado di condividere il registro delle analisi? – benzonico
Se mi dici dove posso trovarlo, lo farò il prima possibile – mithrop
Come conduci la tua analisi con il sonar-runner? puoi fornire qual è l'output del comando sonar-runner? (se è su Jenkins, questo dovrebbe essere il log del lavoro) – benzonico