Sonar初见

sonar:代码质量管理工具,来看看它是咋管理的


学习文章:使用 Sonar 进行代码质量管理,谢谢前辈文章。


下载地址


http://www.sonarqube.org/downloads/

下载后是一个zip包,解压后目录结构如下:



启动Sonar


由于sonar自带Jetty,所以我们可以直接启动,进入bin目录下相应的平台目录下,我选择的是windows-x86-32目录下的StartSonar.bat文件,启动



但是,莫名其妙的是启动后又停止了,去log文件中看了下信息


2015.01.28 14:56:13 ERROR web[o.a.c.h.Http11Protocol]  Failed to initialize end point associated with ProtocolHandler ["http-bio-0.0.0.0-9000"]
java.net.BindException: Address already in use: JVM_Bind /0.0.0.0:9000
	at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:411) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341) [tomcat-embed-core-7.0.54.jar:7.0.54]
	at org.sonar.server.app.EmbeddedTomcat.start(EmbeddedTomcat.java:62) [sonar-server-5.0.jar:na]
	at org.sonar.server.app.WebServer.start(WebServer.java:40) [sonar-server-5.0.jar:na]
	at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:77) [sonar-process-5.0.jar:na]
	at org.sonar.server.app.WebServer.main(WebServer.java:65) [sonar-server-5.0.jar:na]
Caused by: java.net.BindException: Address already in use: JVM_Bind

提示的是端口被占用了。然后我把web的端口改成了9002,然后再启动就没问题了,这个时候需要注意的是9001端口是sonar默认使用端口,所以你改成9001也会出现端口占用的情况:


sonar.web.host=0.0.0.0
sonar.web.port=9002


再启动就没问题了:


wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | 2015.01.28 15:33:44 INFO  app[o.s.p.m.JavaProcessLauncher] Launch pro
cess[search]: C:\Program Files\Java\jre7\bin\java -Djava.awt.headless=true -Xmx1
G -Xms256m -Xss256k -Djava.net.preferIPv4Stack=true -XX:+UseParNewGC -XX:+UseCon
cMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupanc
yOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=D:\sonar\sonarqube-5.0\te
mp -cp ./lib/common/*;./lib/search/* org.sonar.search.SearchServer C:\Users\HUI~
1.QIA\AppData\Local\Temp\sq-process6703781666333002507properties
jvm 1    | 2015.01.28 15:33:50 INFO  app[o.s.p.m.Monitor] Process[search] is up
jvm 1    | 2015.01.28 15:33:50 INFO  app[o.s.p.m.JavaProcessLauncher] Launch pro
cess[web]: C:\Program Files\Java\jre7\bin\java -Djava.awt.headless=true -Dfile.e
ncoding=UTF-8 -Djruby.management.enabled=false -Xmx768m -XX:MaxPermSize=160m -XX
:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir=D:
\sonar\sonarqube-5.0\temp -cp ./lib/common/*;./lib/server/* org.sonar.server.app
.WebServer C:\Users\HUI~1.QIA\AppData\Local\Temp\sq-process9022916906094374323pr
operties
jvm 1    | 2015.01.28 15:34:22 INFO  app[o.s.p.m.Monitor] Process[web] is up


在浏览器中输入http://localhost:9002/,会出现Sonar的默认页面:




Mysql安装


找到一篇文章,讲解安装Mysql数据以及新建Mysql。

ok,安装好了Mysql,亮一下:



然后创建sonar所用的数据库,设置用户名和密码为sonar,赋予各种权限。


mysql> create database sonar character set utf8 collate utf8_general_ci
    -> ;
Query OK, 1 row affected (0.02 sec)

mysql> create user 'sonar' identified by 'sonar'
    -> ;
Query OK, 0 rows affected (0.03 sec)

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

mysql>


然后在sonar安装目录下打开conf/sonar.properties配置文件,将数据库的相关配置信息的注释打开


# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#----- Embedded Database (default)
# It does not accept connections from remote hosts, so the
# server and the analyzers must be executed on the same host.
#sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar

# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092


#----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

然后重启sonar。


插件安装


安装个中文插件:http://docs.codehaus.org/display/SONAR/Chinese+Pack!插件就是一个jar包,下载好后放到sonar安装目录下的extensions\plugins目录下:



然后重启一下sonar服务器。页面会变成中文环境:





遗留问题


1.sonar启动后如何干净的关闭呢?每次直接叉掉命令行,但是服务还在,还需要在任务管理器上关闭进程,不然再启动就会报端口占用的问题。

2.明天会续上一篇用gradle+sonar上传数据到服务器上的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值