当前位置: 首页 > 知识库问答 >
问题:

用于静态编程语言的Sonar Jacoco设置不生成代码覆盖

祁嘉瑞
2023-03-14

我正在尝试使用Jacoco为静态编程语言进行声纳设置以生成代码覆盖率报告,但它没有显示任何代码覆盖率。在检查声纳控制台时,它显示以下错误。任何人以前都面临过这个问题,任何建议都可能错过。

元信息

使用sonarqube版本“2.6.1”的插件

grad lever version = ' 3 . 0 . 1 '

kotlinVersion='1.2.21'

声纳库版本 = 版本 6.7.1 (内部版本 35068) - LGPL v3

令人沮丧的是,我的安装项目生成空白代码覆盖报告:(。PFA。

编辑:请找到项目结构快照。

我正在添加声纳

这是sonar.gradle文件:

sonarqube {

    properties {
        property "sonar.projectKey", "jacoco.sonar.test"
        property "sonar.projectName", "Sonar Jacoco Test"
        property "sonar.projectVersion", "1.1"

        property "sonar.java.source", "7"

        property "sonar.android.lint.report", "build/outputs/lint-results.xml"
        property "sonar.java.binaries", "build/tmp/kotlin-classes"
        property "sonar.java.test.binaries", "build/intermediates/classes/test/,build/tmp/kotlin-classes/devDebugUnitTest"
        property "sonar.tests","src/test/java"
        property "sonar.sources","src/main/java"
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.jacoco.reportPaths","build/jacoco/testDevDebugUnitTest.exec"
        property "sonar.junit.reportsPath","build/test-results/testDevDebugUnitTest"
    }
}

这是雅各布.gradle文件

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.9"
    reportsDir = file("${project.projectDir}/app/build/reports")
}

task jacocoTestReport(type: JacocoReport, dependsOn: "app:testDevDebugUnitTest") {
    group = "Reporting"

    reports {
        xml.enabled = true
        html.enabled = true
    }

    def fileFilter = ['**/R.class',
                      '**/R$*.class',
                      '**/BuildConfig.*',
                      '**/*$ViewInjector*.*',
                      '**/*$ViewBinder*.*',
                      '**/*$MembersInjector*.*',
                      '**/Manifest*.*',
                      '**/*Test*.*',
                      'android/**/*.*']

    classDirectories = fileTree(
            dir: "${project.projectDir}/app/build/intermediates/classes/dev",
            excludes: fileFilter
        ) + fileTree(
            dir: "${project.projectDir}/app/build/tmp/kotlin-classes/devDebug",
            excludes: fileFilter
        )

    // sources
    sourceDirectories = files(["${project.projectDir}/app/src/main/java"])
    executionData = files("${project.projectDir}/app/build/jacoco/testDevDebugUnitTest.exec")
}

按照我用来生成Jacobo报告的gradle命令

./gradlew clean jacocoTestReport sonarqube

我观察下面我得到的,一定是一些路径问题。

未收集覆盖范围信息。也许您忘记了在编译的类中包含调试信息?

对不起,如果这看起来有点长;但这是我在一个地方找到的最好的总结。还请注意,我尝试了类似的Java类设置,而不是Kotlin,它正在生成代码覆盖率报告。

共有2个答案

单于耘豪
2023-03-14

你只需做几件事就能让它为科特林工作。

  • 确保您的声纳
plugins {
    id "jacoco"
    id "org.sonarqube" version "2.7.1"
}

按照这个网址:https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151

在生成中添加属性。gradle让它搜索jacoco结果。

property 'sonar.coverage.jacoco.xmlReportPaths', "${buildDir}/reports/jacoco/test/jacocoTestReport.xml"

请访问以下属性URL:https://docs . sonar cube . org/7.5/analysis/analysis-parameters/

董凡
2023-03-14

如果您使用的是android test orchestrator,这可能就是问题所在。

我今天遇到了同样的问题,在禁用android测试协调器后,覆盖率又恢复了。

错误报告:https://issuetracker.google.com/issues/72758547

我不确定Android柯特林版本是如何配置的,但是在我的AndroidJava build.gradle中,我不得不注释掉测试编排器,如下所示:

android {
...
    testOptions {
        // temporarily disable the orchestrator as this breaks coverage: https://issuetracker.google.com/issues/72758547
        //execution 'ANDROID_TEST_ORCHESTRATOR'
    ...
    }
}
 类似资料:
  • 我是Kotlin开发的新手,我不知道如何处理这个问题。我将以下Kotlin数据类映射到MongoDB集合(Spring data MongoDB): 我想覆盖默认的 id 获取器并返回一个字符串而不是对象 Id。似乎“id”字段名称无法更改,因为我收到消息“不允许自定义id属性的字段名称!自定义名称不会被考虑!“,因此我无法使用始终建议的_id解决方案。 如何才能做到这一点?我错过了什么吗?

  • 在Kotlin中,我覆盖了这两个Google登录功能: 检查与谷歌的连接是否失败。 问题是,有时当我关闭包含用户帐户的对话框时,该对话框会在活动启动时弹出 像这样: 我得到了一个带有以下logcat的<code>IllegalArgumentException</code> E/AndroidRuntime:致命异常:主进程:com.dancam.subscriptions,PID:6346 Ja

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.

  • 上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我

  • 我的项目中有这个错误。但是,找不到任何地方如何解决它。有人有这个问题吗? 它会导致每次都重新运行构建。 使用静态编程语言编译守护程序不成功 无法连接到kotlin守护程序。使用回退策略。

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?