我已经添加了使用声纳生成jacoco覆盖率报告的代码。但是当我运行mvn clean install声纳:sonar.Only声纳相关功能已执行。未生成Jacoco覆盖率报告。
<!-- Below plugin ensures the execution of test cases during maven build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>${runSuite}</include>
</includes>
</configuration>
</plugin>
<!-- Sonar-JaCoCo integration plugin -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<properties>
<sonar.sources>src/main</sonar.sources>
<sonar.tests>src/test</sonar.tests>
<!-- Below property indicates the pattern of the test suite -->
<runSuite>**/*Suite.class</runSuite>
<!-- Sonar-JaCoCo properties -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>
答案 0 :(得分:1)
Java插件不再为您运行单元测试。如记录here所述,您需要在分析之前自己启动它们:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
答案 1 :(得分:0)
JaCoCo -JaCoCo是Java的免费代码覆盖库,它是EclEmma团队根据多年使用和集成现有库的经验教训创建的。
在此过程中,我们将使用git存储库下面的项目:
https://github.com/onlyfullstack/scalable-web-json-comparator
将此git项目克隆到您的本地系统中,然后执行以下步骤:
步骤1:在属性部分下的pom.xml文件中,在JaCoCo配置下方添加
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
<jacoco.version>0.7.9</jacoco.version>
第2步:在“插件”部分下的pom.xml文件的JaCoCo插件下方添加
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<skip>${maven.test.skip}</skip>
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
<output>file</output>
<append>true</append>
<excludes>
<exclude>*MethodAccess</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<phase>test-compile</phase>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
第3步:从项目根文件夹(存在pom文件的地方)执行以下mvn命令
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=false
此命令将为我们创建JaCoCo报告,该报告将在scalable-web-json-comparator \ scalable-web \ target \ coverage-reports \路径中包含代码覆盖率报告。代码覆盖率报告将在jacoco-unit.exec文件中。
步骤4:执行以下mvn命令将声纳报告推送到我们的sonarQube服务器。
mvn sonar:sonar -Dsonar.jacoco.reportPaths=target/coverage-reports/jacoco-unit.exec
-Dsonar.projectName="scalable-web" -Dsonar.projectKey="scalable-web"
-Dsonar.host.url=http://localhost:9000
-Dsonar.login=1c01ff3138588827f552cc6e7d4971ed004f5874
有关更多信息,您可以参考以下网址:
第1部分:本地设置Sonar Server
在本教程中,我们将了解以下主题
如何在本地进行Sonar Server配置?
在Sonar中设置安全令牌吗?
https://onlyfullstack.blogspot.com/2019/02/setting-up-sonar-server-locally.html
第2部分-将JaCoCo插件与Sonar和Maven集成以实现代码覆盖
在本教程中,我们将了解以下主题
将JaCoCo插件集成到maven项目中
使用JaCoCo报告获取代码覆盖率
将JaCoCo插件与Sonar集成以提高代码覆盖率
https://onlyfullstack.blogspot.com/2019/02/integrate-jacoco-plugin-with-sonar-and-maven.html
第3部分-在Eclipse中查找代码覆盖率:EclEmma配置
在本教程中,我们将了解以下主题
什么是Eclemma?
如何找出eclipse中的代码覆盖率?
Eclipse中的EclEmma配置
https://onlyfullstack.blogspot.com/2019/02/find-code-coverage-in-eclipse-eclemma.html