Cobertura de código para sonar de las pruebas de android usando gradle

Tengo que configurar el informe de cobertura de código en mis pruebas de Android y luego publicarlos en sonar. He leído que no hay herramientas y complementos que pueden hacerlo. Estoy utilizando guiones de gradle e intento el plugin de jacoco, cobertura, pero ningunos resultados. ¿Es alguna forma de resolverlo? También traté de hacer como aquí Gradle cobertura de código jacoco – Luego publicar / mostrar en Jenkins

Ejemplo de build.gradle con cobertura de código y sonar

apply plugin: 'com.android.application' android { compileSdkVersion 20 buildToolsVersion '20.0.0' defaultConfig { applicationId 'com.example.coverage' minSdkVersion 11 targetSdkVersion 19 versionCode 1 versionName '1.0' testHandleProfiling true testFunctionalTest true } buildTypes { debug { testCoverageEnabled true } release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { apply plugin: 'sonar-runner' } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/services/javax.annotation.processing.Processor' exclude 'LICENSE.txt' } } sonarRunner { sonarProperties { property "sonar.projectKey", "coverage-example" property "sonar.projectName", "Coverage Example" property "sonar.projectVersion", "1.0" property "sonar.sources", "src/main/java" property "sonar.binaries", "build" property "sonar.test", "src/androidTest/java" property "sonar.profile", "Sonar way" property "sonar.language", "java" property "sonar.sourceEncoding", "UTF-8" property "sonar.dynamicAnalysis", "reuseReports" property "sonar.junit.reportsPath", "build/outputs/reports/coverage/debug" property "sonar.cobertura.reportPath", "build/outputs/reports/coverage/debug/cobertura.xml" property "sonar.java.coveragePlugin", "cobertura" property "sonar.host.url", "http://localhost:9099" } } 

Ahora corre

Gradlew clean assembleDebug createDebugCoverageReport

Ahora podrá ver un xml que contiene el informe de cobertura de código en este directorio

App / build / outputs / informes / coverage / debug / report.xml

Ahora antes de ejecutar la tarea de sonar, tenemos que convertir el archivo report.xml que sonar puede leer, se utilizará esto en python script que realiza la conversión de este archivo al formato que el plugin sonar cobertura puede utilizar.

Vincular el guión a github

 python cover2cover.py app/build/outputs/reports/coverage/debug/report.xml src/main/java > app/build/outputs/reports/coverage/debug/cobertura.xml && cp app/build/outputs/androidTest-results/connected/* app/build/outputs/reports/coverage/debug/ 

Ahora corre

 gradlew sonarRunner 
  • No se encuentran clases de Android durante sonar anaysis
  • Sonar Android Lint sin problemas encontrados
  • Sonar: Cómo utilizar gradle para inspeccionar un proyecto de android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.