sonar集成jacoco展示单元测试覆盖率

(一)sonar-scanner结合jacoco

这里还是要用到maven生成jacoco的统计结果,所以推荐直接使用maven的方式检查项目

1.在要检测的项目的pom文件中加入如下配置:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <argLine>${surefireArgLine}</argLine>
                </configuration>
            </plugin>
               <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.9</version>
                <executions>
                    <execution>
                        <!-- 在maven的initialize阶段,将Jacoco的runtime agent作为VM的一个参数 传给被测程序,用于监控JVM中的调用。 -->
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>


                    <configuration>
                        <destFile>
                            ${project.build.directory}/coverage-reports/jacoco.exec
                        </destFile>
                        <propertyName>surefireArgLine</propertyName>
                    </configuration>


                </execution>


                <!-- 在程序的verify阶段,执行report测试的程序。 文件的输入为perpare-agent阶段中设置或者默认的jacoco.exec. 
                    参数 includes和excludes可用来选定report中过滤的类。 -->
                <execution>
                    <id>default-report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>


                    <configuration>
                        <dataFile>${project.build.directory}/coverage-reports/jacoco.exec</dataFile>
                        <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
                    </configuration>


                </execution>


            </executions>
        </plugin>

2. 然后执行:mvn install
jacoco的结果文件就在target目录下生成了

3.然后,在项目下新建sonar-project.properities文件,内容如下:
sonar.projectKey=your_project_name
sonar.projectName=your_project_name
sonar.projectVersion=1.0
sonar.sources=src/main
sonar.tests=src/test
sonar.java.binaries=target
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.core.codeCoveragePlugin=jacoco

指定exec二进制文件存放路径

sonar.jacoco.reportPaths=[your_path]/jacoco.exec

以下属性可选择性加,当然也可以不加

sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportMissing.force.zero=false

4.最后在项目根目录下执行sonar-scanner,就可以在sonar主页看到包含单元测试覆盖率的报告了

(二)使用maven直接在sonar中加入单元测试覆盖率
这种方法的前两步跟上面是一样的,最后检查代码的命令为:
mvn clean install sonar:sonar -Dmaven.test.failure.ignore=true -Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.jacoco.reportPaths=[your_path]/jacoco.exec -Dsonar.dynamicAnalysis=reuseReports

猜你喜欢

转载自blog.csdn.net/fbb1995/article/details/79933659
今日推荐