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

Jenkin建好后声纳没有显示代码覆盖

龚承嗣
2023-03-14

我们有一个多模块maven项目。我们正在使用jacoco进行代码覆盖率分析。我准备了pom文件来运行测试用例并获取代码覆盖率。当我在本地构建项目时,我可以在sonar仪表板上看到代码覆盖率。

将更改推送到github之后,当jenkins构建触发时,sonar仪表板上的代码覆盖率不可用。我在jenkins构建日志中发现以下错误:

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

在成功的jenkins构建之后,我如何使代码覆盖率可用?

共有1个答案

呼延靖
2023-03-14

您必须确保在编译Java或Groovy等代码时,调试选项是打开的。我使用Gradle(而不是Maven ),为了启用调试选项,我在Gradle中做了类似这样的事情。您可以将以下代码放在项目的build.gradle或顶级$grad le _ HOME/init . d/some-global . grad le文件中(在所有项目{...}节)。

   tasks.withType(JavaCompile) {
     options.debug = true
     options.compilerArgs = ["-g"]
   }

   tasks.withType(GroovyCompile) {
        options.debug = true
   }

在 Maven 中执行相同的操作(如何将调试选项设置为使用 -g 表示 Java,而将调试选项用于基于 Groovy 的项目)。

在此之后,您需要做的就是在调用sonarRunner(即Gradle中的sonar runner任务)时,确保sonar.xx.yyy变量设置正确。

我将这些变量设置为(UT用于单元测试,IT用于集成测试)。仅当附加JacoAgent时,才会生成IT代码覆盖率。jar到运行应用程序的.war/的Tomcat/ExternalJVM(而不是Gradle/Maven JVM)。ear文件。

-Dsonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec 
-Dsonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec

还有其他声纳。yy变量,您可以在在线/文档中看到。

在Maven中,您可以使用以下命令打开Java调试:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <debug>true</debug>
        <debuglevel>lines,vars,source</debuglevel> 
    </configuration>
  </plugin>
 类似资料:
  • 我使用的声纳版本6.7.6和maven 3.3.9我有以下配置在我的Jenkins它生成的雅科报告和测试用例报告预期如下路径。但是我看到Sonarqube的代码覆盖率为0%,有人能帮我吗? 马文戈尔 -Dmaven.test.failure.ignore=true -U clean org.jacoco:jacoco-maven-plugin:1.1.1:prepare-agent test 家长

  • 我正在使用Sonarqube分析我的Nestjs项目。当我用jest运行单元测试时,它们都通过了,代码覆盖率约为80%。在Sonarqube上,它仍然显示为0%。 我的sonar-project.properties文件如下 我的jest.json如下 我package.json的相关部分 我的源代码和它们各自的单元测试在同一个位置。测试文件有扩展名。spec.ts 在本地运行测试时,所有测试都通

  • 我们有一个多模块的maven项目。 每个模块都有一对testng和powermock单元测试用例。我们正在使用jacoco进行代码覆盖率报告。但是,jacoco在分析单元测试复盖率时基于testng单元测试用例,而忽略了powermock单元测试用例。因此,总的代码覆盖率越来越低。 如何配置jacoco来同时获取testng和jacoco测试用例?

  • 声纳没有接收IntelliJidea/Jacoco覆盖报告生成的代码覆盖报告。 这是我试图让声纳接收jacoco报告的一个样本 JacocoSensor:找不到JaCoCo报告:/export/.../buildagent2/work/.../.teamcity/coverage_jacoco/JaCoCo.exec 声纳: 此组件没有覆盖范围详细信息。

  • 我正在尝试在Android Studio中使用Gradle为一个新的空Android项目获得代码覆盖率。 我设法让声纳工作,但我似乎不能解决代码覆盖。(以前从未做过类似的事情) 我看过JaCoCo,但它与Android不兼容。科伯图拉也是如此。艾玛似乎还没和格雷迪一起工作。 我正在使用Gradle 1.11、Android Studio 0.5.1和Sonar Runner 2.3

  • 我正在使用Jacoco插件使用jenkins获得代码覆盖率。我能够看到代码覆盖率。当我尝试使用相同的jacoco.exec文件来生成声纳代码覆盖率时,它显示:由于没有类文件,无法对项目覆盖率进行JaCoCo分析。我使用以下声纳属性: 我正在使用SonarQube 5.3