您的位置:首页 > 其它

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

2015-10-26 11:06 423 查看


一)sonar是什么

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


二)安装与使用


windows下安装


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

2)创建数据库,Sonar默认使用嵌入式Derby数据库,为使用MySQL需首先创建一个sonar/sonar的UTF-8的mysql数据库, 并授权访问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&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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: