在之前的文章,jenkins +sonarqube 对后端代码静态扫描,钉钉群通知执行结果 和ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率 分别讲了sonarqube代码扫描和Jacoco获取代码覆盖率,那么很多人会这么问了,我们进行了代码扫描,代码覆盖率,那么我们是否可以集成到一个平台上面,方便大家都可以查看呢,答案是可以的。本文就来和大家讲解下,如何通过ant 将Jacoco获取的覆盖率同步到sonarqube的平台。
首先我们要下载sonnar for ant,下载链接如下:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-ant/
选择下载
下载后呢,我们需要在build.xml增加配置,这里呢,我把所有的配置呢,都给大家发出来,方便大家呢,去使用。
<?xml version="1.0" encoding="utf-8"?>
<project name="jacoco_test" xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant">
<!-- <property name="jacocopath" value="${jacocopath}" />-->
<!-- <property name="name" value="${name}" />-->
<property name="classpath" value="${classpath}" />
<property name="codepath" value="${codepath}" />
<property name="address" value="${address}" />
<property name="port" value="${port}" />
<property name="reportpath" value="${path}"/>
<property name="sonar.projectKey" value="plan" />
<property name="sonar.projectName" value="jacoco test project" />
<property name="sonar.projectVersion" value="1.0" />
<property name="sonar.language" value="java" />
<property name="sonar.sources" value="/Users/lileilei/Desktop/testplan/plan/src" />
<property name="sonar.binaries" value="/Users/lileilei/Desktop/testplan/plan/target/classes" />
<property name="sonar.java.binaries" value="/Users/lileilei/Desktop/testplan/plan/target/classes" />
<property name="sonar.sourceEncoding" value="UTF-8" />
<property name="sonar.dynamicAnalysis" value="reuseReports" />
<property name="sonar.java.coveragePlugin" value="jacoco" />
<property name="sonar.jacoco.reportPath" value="/Users/lileilei/Desktop/testplan/plan/jacoco.exec" />
<property name="sonar.jdbc.url" value="jdbc:h2:tcp://localhost:3306/sonar" />
<property name="sonar.jdbc.username" value="root" />
<property name="sonar.jdbc.password" value="" />
<property name="path" value="${pathname}"/>
<property name="jacocoantPath" value="/Users/lileilei/Desktop/testplan/plan/jacocohome/jacocoant.jar"/>
<taskdef uri="antliab:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="/Users/lileilei/Desktop/testplan/plan/jacocohome/jacocoant.jar"/>
</taskdef>
<target name="dump">
<jacoco:dump address="${address}" reset="true" port="${port}" destfile="${reportpath}/jacoco.exec" >
</jacoco:dump>
</target>
<target name="report">
<jacoco:report>
<executiondata>
<file file="${reportpath}/jacoco.exec"/>
</executiondata>
<structure name="pan">
<!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
<group name="pan">
<classfiles>
<!--.class文件路径,可以放在客户端-->
<fileset dir="${classpath}"/>
</classfiles>
<sourcefiles encoding="utf-8">
<!--源代码路径,可以放在客户端-->
<fileset dir="${codepath}" />
</sourcefiles>
</group>
</structure>
<!-- report文件保存地址 -->
<html destdir="${reportpath}" encoding="utf-8"/>
</jacoco:report>
</target>
<target name="sonar">
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<!-- Update the following line, or put the "sonar-ant-task-*.jar" file in your "$HOME/.ant/lib" folder -->
<classpath path="/Users/lileilei/Downloads/sonarqube-ant-task-2.7.0.1612.jar" />
</taskdef>
<sonar:sonar />
</target>
</project>
整体的呢,配置就是上面呢,这里的配置完后呢,可以同步到远程的sonarqube平台,其实整体的配置是很简单的,也可以参照官网给的例子。下面呢,就是执行同步代码覆盖率的,执行
ant sonar
执行的时候的,sonarqube服务一定是启动的。
这样我们的代码覆盖率就之间同步到我们的平台了,我们可以点击链接去看看。可以看到,代码覆盖率已经通过过来2.7%
我们可以点开去看到里面的具体的覆盖,
我们可以依次看到不同的展示。我们还可以看到 不同的代码,哪里有没有覆盖到,我们可以在这里去增补我们的测试用例。
这样我们的静态代码扫描平台也能看到了我们的测试覆盖率,对于我们对代码的度量又多了一份数据的支撑。后续呢,我们还可以做很多的事情,当然,前期我们更多的是去收集我们的测试的数据,然后对我们的测试过程 落实到数据,后期可以支撑我们做很多的事情,比如代码健康度,测试用例覆盖率统计,等等。
雷子说测试开发,不定期给大家推送技术文章,欢迎大家的关注。