【问题标题】:Code coverage to sonar from android tests using gradle使用 gradle 从 android 测试到声纳的代码覆盖率
【发布时间】:2014-05-03 02:48:38
【问题描述】:

我必须在我的 android 测试中设置代码覆盖率报告,然后在声纳中发布它们。我读过没有工具和插件可以做到这一点。我正在使用 gradle 脚本,我尝试了 jacoco 插件,cobertura,但没有结果。有什么办法可以解决吗?我也试着在这里做Gradle jacoco code coverage - Then publish/show in Jenkins

【问题讨论】:

    标签: android gradle sonarqube jacoco


    【解决方案1】:

    带有代码覆盖和声纳的 build.gradle 示例

    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"
            }
        }
    

    现在运行

    gradlew clean assembleDebug createDebugCoverageReport

    现在您将能够在此目录中看到包含代码覆盖率报告的 xml

    app/build/outputs/reports/coverage/debug/report.xml

    现在在我们运行声纳任务之前,我们必须将 report.xml 转换为声纳可以读取的内容,它将在 python 脚本中使用此完成,该脚本执行将此文件转换为插件 sonar cobertura 可以使用的格式它。

    Link the script on 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/
    

    现在运行

    gradlew sonarRunner
    

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2013-10-14
      • 1970-01-01
      • 2012-09-04
      • 2014-02-14
      • 2016-05-24
      • 1970-01-01
      • 2016-11-10
      • 2013-11-21
      相关资源
      最近更新 更多