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

使用Jenkins Sonar插件成功构建后,Sonar不会显示代码覆盖率

朱鸿畅
2023-03-14

我正试图用声纳和詹金斯来覆盖代码。我看到Jenkins的Sonar插件成功地执行JUnit测试用例并成功完成构建。但Sonar不会在项目上显示代码覆盖率结果(始终显示代码覆盖率为0.0%)。但声纳显示“单元测试成功”。

我用Maven和Jenkins还有Sonar

我在执行声纳插件时,在Jenkins日志中得到以下消息:

Project coverage is set to 0% as no JaCoCo execution data has been dumped: .../sonar/target/jacoco.exec

有谁能帮助我在任何声纳项目中获得正确的代码覆盖率吗。

共有3个答案

明利
2023-03-14

根据这篇博文,你可能忘了设置声纳。二进制文件项目属性中的属性

别忘了声纳。否则,您可能会得到类似«项目覆盖率设置为0%的结果,因为没有包含类的目录。»在您的日志中。

[...]
sonar.surefire.reportsPath=target/surefire-reports
sonar.jacoco.reportPath=target/jacoco.exec
sonar.binaries=target/classes
[...]
向嘉誉
2023-03-14

我读https://docs.sonarqube.org/display/PLUG/CodeJava项目的单元测试覆盖率,并使用cobertura作为我的代码覆盖率插件,然后我看到小项目的代码覆盖率显示。当我检查声纳的一个大项目时,我只看到代码覆盖率为-这意味着它是空的。在日志中,我可以发现Cobertura报告没有在//新闻报道xml路径。

新闻报道由于OutOfMemeryError:heapspace,未生成xml。因为当我将堆内存设置为2GB,将cobertura插件内存设置为1.5GB时,sonar显示的代码覆盖率非常大。

曾洲
2023-03-14

仅仅因为Sonar正确地调用了Surefire(并且您收到了单元测试成功消息)并不意味着JaCoCo检测了您的代码。

尝试直接执行JaCoCo。您可能会发现JaCoCo直接失败的原因:

mvn jacoco:准备代理测试jacoco:报告

JaCoCo将把jacoco.exec以及它的XML/超文本标记语言报告放在Target/Jacoco中。否则它会失败,希望你能更好地知道为什么。

一个非常常见的问题是,如果您完全更改了Surefire argLine,JaCoCo javaagent将不会运行,因为JaCoCo:prepare agent只设置argLine属性,在这种情况下,可以方便地忽略该属性。您可以将prepare agent的propertyName属性设置为其他属性(如JacoArgline),并将其包含在您的argLine配置中:

<代码>

 类似资料:
  • 当我们使用Jacoco spring代理maven surfire插件时,Junit代码覆盖率统计数据没有显示,而且应该通过spring代理检测的类也没有检测。 我们的单元测试用例正在运行,但 Junit 代码覆盖率报告未显示在声纳立方体中。当我们删除 spring 代理并再次运行时,将生成 Junit 代码覆盖率报告。所以我们不确定我们哪里出了问题以及如何解决这个问题。我们甚至尝试设置 forc

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

  • 我们有一个多模块Maven项目,并使用JaCoCo进行代码覆盖率分析。我准备了文件来运行测试用例并获取代码覆盖率。 下面是我的,添加了JaCoCo和其他插件,并且在Azure Devops构建中,在Maven任务中传递命令,尝试,参数在中定义。 我在日志中看到以下细节。 Maven日志: 分析完成日志: 测试运行: 目标:“清洁验证声纳:声纳” 选项:'-dsonar.projectkey=**-

  • 我们有一个多模块maven项目。我们正在使用jacoco进行代码覆盖率分析。我准备了pom文件来运行测试用例并获取代码覆盖率。当我在本地构建项目时,我可以在sonar仪表板上看到代码覆盖率。 将更改推送到github之后,当jenkins构建触发时,sonar仪表板上的代码覆盖率不可用。我在jenkins构建日志中发现以下错误: 未收集覆盖范围信息。也许您忘记了在编译的类中包含调试信息? 在成功的

  • 正如我在开始时所说的,单元测试成功率确实成功地显示出来,所以我相信只需要一个小的改变就可以使单元测试复盖范围发挥作用。 任何帮助都将不胜感激!

  • 我有一个使用Gradle的多模块Groovy项目。我应用了jacoco、sonarqube插件。 我能够 找到build/Jacoco/test.exec.Jenkins能够正确渲染它。 使用所有代码覆盖详细信息浏览JacocoHtml 在SonarQube上查找单元测试结果和源代码 但是没有向SonarQube报告代码覆盖率。 这是我的身材。格拉德尔 在构建期间,我观察到以下日志语句。 然后我尝