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

使用spring agent Jacoco Maven surfire插件时,Sonar中未显示代码覆盖率

郑哲彦
2023-03-14

当我们使用Jacoco spring代理maven surfire插件时,Junit代码覆盖率统计数据没有显示,而且应该通过spring代理检测的类也没有检测。

<plugin>
<groupId> org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4</version>
<configuration>
  <forkMode>once</forkMode>
  <argLine>
    -javaagent:${settings.localRepository}/org/springframework/spring-agent/${spring.version}/spring-agent-${spring.version}.jar -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/1.6.1/aspectjweaver-1.6.1.jar
  </argLine>
  <useSystemClassloader>true</useSystemClassloader>
</configuration>
</plugin>

我们的单元测试用例正在运行,但 Junit 代码覆盖率报告未显示在声纳立方体中。当我们删除 spring 代理并再次运行时,将生成 Junit 代码覆盖率报告。所以我们不确定我们哪里出了问题以及如何解决这个问题。我们甚至尝试设置 forcount=1,但没有帮助。

共有1个答案

杨经武
2023-03-14

你不显示整个pom,但我客人,你使用:雅各科-马文-插件:准备代理某处。

jacoco-maven-plugin:prepare-agent 在内部设置 argLine 属性,因此当您为 surefire 配置 argLine 时,您只需覆盖它即可。

一个解决方案在页面上描述:http://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html

您可以尝试此解决方案的另一种方法:

<properties>
   <argLine/> <!-- empty for preventing syntax error in pom -->
</properties>
...
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <configuration>
      <argLine>${argLine} ... custom config</argline>
   </configuration>
</plugin>
 类似资料:
  • 我正试图用声纳和詹金斯来覆盖代码。我看到Jenkins的Sonar插件成功地执行JUnit测试用例并成功完成构建。但Sonar不会在项目上显示代码覆盖率结果(始终显示代码覆盖率为0.0%)。但声纳显示“单元测试成功”。 我用Maven和Jenkins还有Sonar 我在执行声纳插件时,在Jenkins日志中得到以下消息: 有谁能帮助我在任何声纳项目中获得正确的代码覆盖率吗。

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

  • 问题内容: 我有一个Jenkins项目,对我的NodeJS项目进行SonarQube分析。我添加了对项目的依赖。在Jenkins构建配置中,首先运行一个shell脚本: 这将安装依赖项,运行测试并生成代码覆盖率报告,并生成cobertura-coverage.xml文件。 在shell脚本之后,我运行具有以下属性的代码覆盖: Jenkins作业通过SonarQube仪表板成功运行,该仪表板描述了项

  • Jenkins作业成功地运行了一个SonarQube仪表板,它描述了项目的各种内容,如代码行、技术债务、问题等等。但是单元测试的代码覆盖率并没有显示在SonarQube仪表板上。我确保仪表板有单元测试小部件。 我验证了工作区确实有文件。还检查了构建控制台日志,没有发现bug。我之前也尝试过使用LCOV格式推送代码覆盖率: 即使在Jenkins工作区中生成了覆盖率报告,该报告也不会发布到SonarQ

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

  • 声纳投射物。特性 sonar.projectname=test sonar.language=js sonar.sources=src sonar.tests=src/app/client/src/app/sonar.javascript.lcov.reportpaths=src/app/client/src/app/sonar.javascript.lcov.reportpaths=src/ap