什么是Sonar?

Sonar是一个开源的代码质量管理平台。它能对代码进行如下7个维度的管理。

使用插件,它可以对20多种语言进行代码质量管理,这其中包括Java,C#,C/C++,PL/SQL等等。

安装Sonar

1.下载sonar,地址http://www.sonarqube.org/downloads/。通常选取稳定版本下载即可,这是一个zip文件。
2.解压下载的sonar到一个目录。我们称这个解压后的路径为SONAR_HOME
3.进入$SONAR_HOME/bin/${os-version}/,找到sonar.sh,执行./sonar.sh console即可。在windows下是StartSonar.bat。
4.现在进入http://localhost:9000,就看到了界面。默认的登录使用admin:admin

这个时候,Sonar已经运行啦。但是在生产环境是不行的。上面跑起来的只是一个样例,使用的是h2内存数据库。我们可不想重启服务后,生产环境的数据都没了。

配置Sonar数据库

1.首先新建一个数据库。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on sonar.* to 'sonar'@'%' identified by '你的密码';
flush privileges;

这样就准备好了数据库sonar,并授权给sonar这个用户。

2.找到$SONAR_HOME/conf/sonar.properties。注释掉默认的数据库配置,然后配上自己的数据库信息即可。这里以mysql为例。

# Comment the following line to deactivate the default embedded database.
#sonar.jdbc.url: jdbc:h2:tcp://localhost:9092/sonar
#sonar.jdbc.driverClassName: org.h2.Driver -------------------
# The schema must be created first.

sonar.jdbc.username: sonarsonar.jdbc.password: sonar #----- MySQL 5.x # Comment the embedded database and uncomment the following line to use MySQL sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

# Optional properties
sonar.jdbc.driverClassName: com.mysql.jdbc.Driver

配置好之后,这样所有的数据都会存放到mysql内啦。不用再担心数据问题啦。要添加其他数据库,同理。

把Sonar变为中文

英文看这不方便啊。有2种方法可以将Sonar变为中文界面。

1.用管理员登录后,在Update Center种找到Localization里的Chinese Pack安装就可以了。
2.直接下载http://repository.codehaus.org/org/codehaus/sonar-plugins/l10n/sonar-l10n-zh-plugin/1.6/sonar-l10n-zh-plugin-1.6.jar这个插件jar包到$SONAR_HOME/extensions/plugins内,重启即可。

把Sonar放到JEE容器内

默认的情况下,sonar启动是采用内置的jetty的,为了方便管理,一般在生产环境可以放到JEE容器内,这里就以Tomcat为例了。
Sonar在经过上面几步的配置后,已经满足了基本的需求。接下来就可以进入到$SONAR_HOME/war/内。执行build-war命令。这样就生成了一个sonar.war,把这个war包发布到Tomcat即可。

如何对源码进行检测

1.配置maven的settings.xml,添加一下内容:

    <profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>
jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000/sonar</sonar.host.url>
</properties>
</profile>

其中的数据库配置以及sonar主机地址都依据实际进行修改即可。
2.在maven项目种执行

mvn clean install
mvn sonar:sonar

3.打开sonar主页,就可以看到结果了。

Sonar与Jenkins的集成。

1.安装jenkins-sonar-plugin到Jenkins内。
2.在Jenkins里的系统配置中,填写Sonar安装信息。
3.在Jenkins的JOB中,配置post-build action中添加上Sonar即可。这样在项目构建后,会自动的执行Sonar分析。并将结果放在首页进行展现。

-- Main.shenyanchao - 2013-09-04

Sonar入门(一):简介的更多相关文章

  1. GBDT(MART) 迭代决策树入门教程 | 简介

    GBDT(MART) 迭代决策树入门教程 | 简介  http://blog.csdn.net/w28971023/article/details/8240756

  2. jQuery的入门与简介

    jQuery的入门与简介<思维导图>   <初学者请各位高手指点指点> jQuery是继Prototype之后又一个优秀的JavaScript库,在JavaScript基础上我 ...

  3. Quartz入门例子简介 从入门到菜鸟(一)

    转: Quartz入门例子简介 从入门到菜鸟(一) 2016年11月19日 22:58:24 爱种鱼的猫 阅读数:4039   刚接触quartz这个词并不是在学习过程中...而是WOW里面的界面插件 ...

  4. 零元学Expression Design 4 - Chapter 1 入门界面简介

    原文:零元学Expression Design 4 - Chapter 1 入门界面简介 Expression Design 是Expression系列里面的一员,更是Blend跟Web的好帮手 而在 ...

  5. 零元学Expression Blend 4 - Chapter 2 入门界面简介

    原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...

  6. [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...

  7. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...

  8. JAVAEE——SpringBoot入门:简介、微服务、环境准备、helloworld与探究、快速构建项目

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  9. SpringBoot入门1—简介及helloworld

    Spring Boot简介 Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运行一个Spring引用.你也可以打包你的应用为jar并通过使用java - ...

随机推荐

  1. 【HDU1162】Eddy's picture(MST基础题)

    很基础的点坐标MST,一不留神就AC了, - - !! #include <iostream> #include <cstring> #include <cstdlib& ...

  2. hdu 3635 Dragon Balls(并查集应用)

    Problem Description Five hundred years later, the number of dragon balls will increase unexpectedly, ...

  3. 关于echo双引号和单引号的问题

    echo ''; 输出的是变量符号和变量名称. echo"";输出的是变量的值. <?php $s="PAP"; echo "my name i ...

  4. C++里消除Wunused

    编译程序时,有一大堆警告总是不爽的.别人的代码也就忍了,不好去改.自己的可没法忍.看看C++里怎么消除Wunused警告. 先来看下面的程序: #include <iostream> in ...

  5. Android将第三方jar打包进apk

    转自:http://blog.csdn.net/liushaogeng/article/details/6641704 使用第三方jar包 除了我以下介绍的方法,别的方法我基本上都试验过,均会出现编译 ...

  6. 解决angular 与django的冲突

    {% block main %} <script type="text/javascript" src="http://cdnjs.cloudflare.com/a ...

  7. EffectiveC#03--用委托表示回调,用事件定义对外接口

    1.回调的场景:我给了儿子一个任务且他可以报告状态来(重复的)打断我.而我在等待他完成任务的每一个部份时不用阻塞我自己的进程.他可以在有重要(或者事件)状态报告时,可以定时的打断我,或者向我询求帮助 ...

  8. NSData、NSString 、 NSFileManager

      1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,leng ...

  9. C#避免过长的IF和Switch分支的方法

    C#避免过长的IF和Switch分支的方法 1.最蠢形态 //很丑有没有! //这个分支要是一两个还是可以接受的 class Program { static void Main(string[] a ...

  10. Qt通过odbc读取excel数据

    传统的读取方式是通过Excel.Application,这种方式不仅操作繁琐,而且速度也不快. 通过odbc读取,可以使用select语句直接读取整个工作表,处理excel数据就跟数据库一样方便. 当 ...