sonar分析工程并统计单元测试

一)sonar是什么

Sonar 是一个开源的质量管理平台,专注于从项目组合到类方法的持续的分析和测量技术质量,它把代码质量相关软件集成到一起统一管理。可以使用开源的插件来扩展Sonar,查看扩展可以访问 open source plugins forge。以下是sonar环境及相关技术的一个关联图:

 


二)安装与使用

windows下安装

1)从官方网站(http://www.sonarsource.org)下载安装包,并解压;

2)创建数据库,Sonar默认使用嵌入式Derby数据库,为使用MySQL需首先创建一个sonar/sonarUTF-8mysql数据库并授权访问sonar库。数据库代码如下:

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all privileges on sonar.* to 'sonar'@'%' identified by 'sonar';

flush privileges;

3 修改sonar配置文件conf\sonar.properties中连接数据库方式,将原来的连接方式注释掉,启用以下代码;

sonar.jdbc.url: jdbc:mysql://IP:3306/sonar?useUnicode=true&characterEncoding=utf8

sonar.jdbc.driver: com.mysql.jdbc.Driver

sonar.jdbc.validationQuery: select 1

4 bin\windows-x86-32目录下找到对应的批处理文件StartSonar.bat,启动sonar,登陆http://localhost:9000;查看是否成功。


Linux下安装

1)$ wget http://dist.sonar.codehaus.org/sonar-3.4.1.zip

     $ unzip sonar-3.4.1.zip

2)和3)同上

4)  $ ./sonar-3.4.1/bin/linux-x86-64/sonar.sh start,启动sonar,登陆http://ip:9000;查看是否成功。


三)分析工程

        1)   这里 下载 sonar-ant-task-2.0.jar ,将其放置在被分析 Java 工程的 lib 目录下;

2)  build.xml文件中加入以下代码:

<project name="***" default="sonar" basedir="." xmlns:sonar="antlib:org.sonar.ant">

 

    <!-- ========= 工程属性定义 ========= -->

    <property name="project.name" value="***"/>

    <property name="sonar.src.dir" value="${basedir}/src" />

    <property name="sonar.lib.dir" value="WebRoot/WEB-INF/lib"/>

 

    <!--Sonar属性定义 -->

    <property name="sonar.projectKey" value="org.example:${project.name}" />

    <property name="sonar.projectName" value="${project.name}" />

    <property name="sonar.projectVersion" value="1.0" />

    <property name="sonar.language" value="java" />

    <property name="sonar.sources" value="${sonar.src.dir}" />

    <property name="sonar.tests" value="${sonar.test.dir}" />

    <property name="sonar.host.url" value="http://localhost:9000" /> 

    <property name="sonar.jdbc.url"

    value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8"/>

    <property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver" />

    <property name="sonar.jdbc.username" value="sonar" />

    <property name="sonar.jdbc.password" value="sonar" />

    <!-- ========= Sonar分析客户端 ========= -->

    <target name="sonar" depends="sonar.compile">

    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">

    <classpath path="${sonar.lib.dir}/sonar-ant-task-2.0.jar" />

    </taskdef>

 

    <!-- 执行 Sonar -->

    <sonar:sonar key="${sonar.projectKey}" version="1.0"xmlns:sonar="antlib:org.sonar.ant"/>

    </target>

3)  直接运行ant build或者在命令行输入ant sonar就可以分析Java工程,结束后上传数据至指定sonar网站。


四)加入单元测试统计

    <!--  JaCoCo相关配置: -->

        <property name="sonar.dynamicAnalysis" value="reuseReports" />

        <property name="sonar.java.coveragePlugin" value="jacoco" />

        <property name="sonar.jacoco.reportPath" value="target/jacoco.exec" />


      <!--  testng定义: -->

            <taskdef name="testng"classname="com.beust.testng.TestNGAntTask">

                <classpath>

                    <path refid="sonar.classpath"/>

                </classpath>

            </taskdef>                  

            <!-- 引入 JaCoCo Ant Task -->

            <taskdef uri="antlib:org.jacoco.ant"resource="org/jacoco/ant/antlib.xml">      

                <classpath path="${sonar.lib.dir}/jacocoant.jar" />

            </taskdef>

            <!-- 运行单元测试, 添加 JaCoCo agent -->

            <jacoco:coverage destfile="target/jacoco.exec"xmlns:jacoco="antlib:org.jacoco.ant">     

            <testng outputDir="${testng.report.dir}"classpathref="sonar.runpath" excludedgroups="${EX}">

                  <xmlfileset dir="${test.resources.dir}"includes="testng.xml"/>

                  <jvmarg value="-Dtest.resources.dir=${test.resources.dir}" />

            </testng>

            </jacoco:coverage> 

        </target>

        <!-- =========  Sonar分析客户端 ========= -->

        <target name="sonar" depends="sonar.compile">

            <taskdef uri="antlib:org.sonar.ant"resource="org/sonar/ant/antlib.xml">

                <classpath path="${sonar.lib.dir}/sonar-ant-task-2.0.jar"/>

            </taskdef>

            <!-- 执行 Sonar -->

             <sonar:sonar key="${sonar.projectKey}" version="1.0"xmlns:sonar="antlib:org.sonar.ant"/>

        </target>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值