注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

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

来自sun丹~   2013-02-28 12:44:43|  分类: 测试工具 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一)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>

  评论这张
 
阅读(2140)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016