前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测开技能--测试覆盖率集成到SonarQube平台

测开技能--测试覆盖率集成到SonarQube平台

作者头像
雷子
发布2021-03-15 14:28:10
9490
发布2021-03-15 14:28:10
举报
文章被收录于专栏:雷子说测试开发

在之前的文章,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增加配置,这里呢,我把所有的配置呢,都给大家发出来,方便大家呢,去使用。

代码语言:javascript
复制
<?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平台,其实整体的配置是很简单的,也可以参照官网给的例子。下面呢,就是执行同步代码覆盖率的,执行

代码语言:javascript
复制
ant  sonar

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,助力维护团队卓越代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档