在之前的文章,jenkins +sonarqube 对后端代码静态扫描,钉钉群通知执行结果 和ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率 分别讲了sonarqube代码扫描和Jacoco获取代码覆盖率,那么很多人会这么问了,我们进行了代码扫描,代码覆盖率,那么我们是否可以集成到一个平台上面,方便大家都可以查看呢,答案是可以的。本文就来和大家讲解下,如何通过ant  将Jacoco获取的覆盖率同步到sonarqube的平台。

        首先我们要下载sonnar for ant,下载链接如下:

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-ant/

 选择下载

88cdd770bc36e9c70e2a27f5a3c92cca.png

下载后呢,我们需要在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="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 name="pan">                    <classfiles>                                                <fileset dir="${classpath}"/>                    classfiles>                    <sourcefiles encoding="utf-8">                                                <fileset dir="${codepath}" />                    sourcefiles>                group>            structure>                        <html destdir="${reportpath}"   encoding="utf-8"/>        jacoco:report>    target>    <target name="sonar">        <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">                        <classpath path="/Users/lileilei/Downloads/sonarqube-ant-task-2.7.0.1612.jar" />        taskdef>        <sonar:sonar />    target>project>

        整体的呢,配置就是上面呢,这里的配置完后呢,可以同步到远程的sonarqube平台,其实整体的配置是很简单的,也可以参照官网给的例子。下面呢,就是执行同步代码覆盖率的,执行

ant  sonar

e8810d6a198545553a9eb6f68c762513.png

    执行的时候的,sonarqube服务一定是启动的。

4ad16e5fe09b9652e4c3fed947dd425a.png

    这样我们的代码覆盖率就之间同步到我们的平台了,我们可以点击链接去看看。可以看到,代码覆盖率已经通过过来2.7%

4012fc4accf65e1d21dac49ca52317fb.png

36ad823d317ce14f4c64a85b10430f52.png

我们可以点开去看到里面的具体的覆盖,

625215f074468fb3e0c63cb943cbac0f.png

ff5e00ad652b5177c704b92af5f8bbc8.png

95c00cd08cdfa085c71cb04460b522f1.png

我们可以依次看到不同的展示。我们还可以看到 不同的代码,哪里有没有覆盖到,我们可以在这里去增补我们的测试用例。

c1f23eebe863a3b6ad848c7b8dd81141.png

          这样我们的静态代码扫描平台也能看到了我们的测试覆盖率,对于我们对代码的度量又多了一份数据的支撑。后续呢,我们还可以做很多的事情,当然,前期我们更多的是去收集我们的测试的数据,然后对我们的测试过程 落实到数据,后期可以支撑我们做很多的事情,比如代码健康度,测试用例覆盖率统计,等等。

            雷子说测试开发,不定期给大家推送技术文章,欢迎大家的关注。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐