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

如何使用新的Gradle SonarQube插件向Sonar报告Jacoco Groovy代码覆盖率?

程修雅
2023-03-14

我有一个使用Gradle的多模块Groovy项目。我应用了jacoco、sonarqube插件。

我能够

  1. 找到build/Jacoco/test.exec.Jenkins能够正确渲染它。
  2. 使用所有代码覆盖详细信息浏览JacocoHtml
  3. 在SonarQube上查找单元测试结果和源代码

但是没有向SonarQube报告代码覆盖率。

这是我的身材。格拉德尔

plugins {
    id "org.sonarqube" version "2.0.1"
}

allprojects {
    group = 'my'
    version = '1.0-SNAPSHOT'
}

subprojects {
    apply plugin: 'groovy'
    apply plugin: "jacoco"

    dependencies {
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.1'
        testCompile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.4'
        testCompile group: 'org.assertj', name: 'assertj-core', version: '2.4.1'
    }
}

在构建期间,我观察到以下日志语句。

No binary directories defined for project core.
Project coverage is set to 0% since there is no directories with classes.

然后我尝试在子项目或所有项目中添加以下内容,但仍然没有向SonarQube报告覆盖情况。

sonarqube {
    properties {
        property "sonar.groovy.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec"
        property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec"
        property "sonar.binaries", "${project.buildDir}/classes"
        property "sonar.groovy.binaries", "${project.buildDir}/classes"
    }
}

如何向SonarQube报告Jacoco Groovy代码覆盖率?

共有1个答案

戴鸿羽
2023-03-14

你可能已经看到了我在与同样的问题作斗争时的评论。

我找到了groovy插件的站点,其中报告了一个问题,如下所示:

声纳。非常棒。对于根项目,二进制文件只解析一次。在多模块项目中,如果属性未在根模块上定义,而仅在叶模块上定义,则会导致缺少覆盖率信息。

https://github.com/SonarQubeCommunity/sonar-groovy/issues/52

因此,即使是为您的模块设置的:

“:myspecialsubmodule.sonar.groovy.binaries”-

它不会工作,直到它的根设置。

在根上设置配置后(目前,直到问题得到解决)让它为我工作。

property "sonar.groovy.binaries", "${project.buildDir.name}${File.separator}classes"

我将跟踪github问题,以了解何时可以删除此解决方法。

 类似资料:
  • 问题内容: 我们有一个包含大量JavaScript文件的Jenkins作业。我们通过grunt构建项目,并在构建结束时运行JSCover来运行单元测试并收集代码覆盖率。一切正常。我们得到一个不错的LCOV文件。 现在,我们想将LCOV文件上传到Sonar,但我不确定该怎么做。我们正在从詹金斯(Jenkins)建立我们的项目,这是一个自由样式项目。 我尝试使用声纳的各种项目属性,但没有爱: 我怀疑问

  • 免责声明初学者问题! 为了回答这个问题,我的项目结构高度简化,如下所示: 在阅读了Jeff Knupp关于单元测试的博客文章并写了一系列测试之后,我想看看我的代码现在被测试覆盖了多少。所以我安装了coverage.py,以下内容让我困惑: $coverage运行main。py(显示脚本中的打印/日志) $覆盖报告main.py 姓名、Stmts、小姐、封面 主要的py,114,28,75% 问题是

  • 问题内容: 我正在使用声纳来衡量代码质量。我不知道的一件事是使用Cobertura测量代码覆盖率的步骤。 我按照http://cobertura.sourceforge.net/anttaskreference.html中的步骤进行操作,并且能够生成xml文件。如何将这些xml文件放入SONAR? 有没有在SONAR中使用Cobertura的简便方法? 我在与SONAR服务器不同的服务器上运行代码

  • 当运行Gradle的Jacoco插件时,我在一组选定的类上得到零代码覆盖率报告。我已经确认测试这些类的所有单元测试都已成功运行。 非常有趣的是,EclEmma在Eclipse中生成了正确的代码覆盖率结果。我已经确认这两个工具使用的是相同版本的Jacoco。 我想知道这两种工具的区别是什么?我需要Gradle Jacoco插件的额外配置吗。 编辑:我的Gradle Jacoco输出显示“com类的执

  • 我正试图用声纳和詹金斯来覆盖代码。我看到Jenkins的Sonar插件成功地执行JUnit测试用例并成功完成构建。但Sonar不会在项目上显示代码覆盖率结果(始终显示代码覆盖率为0.0%)。但声纳显示“单元测试成功”。 我用Maven和Jenkins还有Sonar 我在执行声纳插件时,在Jenkins日志中得到以下消息: 有谁能帮助我在任何声纳项目中获得正确的代码覆盖率吗。