Rootop 服务器运维与web架构

利用sonar分析代码质量

官网:https://www.sonarqube.org
目前最新版为:sonarqube-6.7

1、安装jdk必须1.8以上。过程略。。。
2、安装mysql5.6版本以上并且为InnoDB引擎,建议直接安装解压版,编译速度太慢,yum版本又过低(要么自己改yum源)。过程略。。。
设置允许mysql远程连接,登陆,创建一个名为 sonar 的数据库,字符集utf8、校对规则utf8_general_ci 。

3、安装sonar:

[root@localhost ~]# wget -c https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.zip
[root@localhost ~]# unzip sonarqube-6.7.zip
[root@localhost ~]# mv sonarqube-6.7 /usr/local/
[root@localhost ~]# cd /usr/local/sonarqube-6.7/
[root@localhost sonarqube-6.7]# ll
# 启动脚本目录
drwxr-xr-x 8 root root 136 Nov 7 15:16 bin
# 配置文件目录
drwxr-xr-x 2 root root 50 Nov 7 15:06 conf
-rw-r--r-- 1 root root 7651 Nov 7 15:06 COPYING
drwxr-xr-x 2 root root 24 Nov 7 15:06 data
drwxr-xr-x 7 root root 150 Nov 7 15:16 elasticsearch
drwxr-xr-x 4 root root 40 Nov 7 15:06 extensions
drwxr-xr-x 9 root root 138 Nov 7 15:16 lib
# sonar及es、web等日志,排错很有用
drwxr-xr-x 2 root root 6 Nov 7 15:06 logs
drwxr-xr-x 2 root root 24 Nov 7 15:06 temp
drwxr-xr-x 9 root root 4096 Nov 7 15:16 web

解压完,就可以用了,不过启动sonar必须用普通用户,root用户因为权限太高,不让用。
添加一个普通用户,如 venus,添加用户过程略。

修改sonar配置文件:

[root@localhost sonarqube-6.7]# vi conf/sonar.properties
# 数据库用户名
sonar.jdbc.username=root
# 数据库密码
sonar.jdbc.password=root
# 连接数据库参数
sonar.jdbc.url=jdbc:mysql://192.168.1.145:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# sonar监听地址及端口
sonar.web.host=0.0.0.0
sonar.web.port=9000

修改 sonar 目录属主属组为 venus,否则服务无法启动

[root@localhost ~]# chown -R venus:venus /usr/local/sonarqube-6.7
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov 5 2016 bin
drwxr-xr-x. 2 root root 6 Nov 5 2016 etc
drwxr-xr-x. 2 root root 6 Nov 5 2016 games
drwxr-xr-x. 2 root root 6 Nov 5 2016 include
lrwxrwxrwx 1 root root 23 Dec 19 09:17 jdk -> /usr/local/jdk1.8.0_131
drwxr-xr-x 8 10 143 255 Mar 15 2017 jdk1.8.0_131
drwxr-xr-x. 2 root root 6 Nov 5 2016 lib
drwxr-xr-x. 2 root root 6 Nov 5 2016 lib64
drwxr-xr-x. 2 root root 6 Nov 5 2016 libexec
drwxr-xr-x. 2 root root 6 Nov 5 2016 sbin
drwxr-xr-x. 5 root root 49 Jun 28 10:19 share
drwxr-xr-x 11 venus venus 141 Dec 19 09:35 sonarqube-6.7
drwxr-xr-x. 2 root root 6 Nov 5 2016 src

切换到venus账号

[root@localhost local]# su venus
[venus@localhost local]$ cd

启动脚本 cat start.sh :

#!/bin/bash

# 必须用jdk1.8
# mysql5.6以上
# 必须用普通用户启动
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export SONAR_HOME=/usr/local/sonarqube-6.7
$SONAR_HOME/bin/linux-x86-64/sonar.sh start

检查9000端口是否启动:

[venus@localhost conf]$ netstat -tnlp | grep 9000
tcp6 0 0 :::9000 :::* LISTEN 13426/java

用浏览器访问 http://192.168.10.41:9000,默认用户名密码都是 admin


根据下面提示,安装中文支持。


会提示重启服务,这样,服务端就安装完了。下一步安装扫描器。

安装sonar-scanner 代码扫描器:

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner 这个页面可以找到下载地址。

[root@localhost ~]# wget -c https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip
[root@localhost ~]# unzip sonar-scanner-cli-3.0.3.778-linux.zip
[root@localhost ~]# mv sonar-scanner-3.0.3.778-linux/ /usr/local/

编辑扫描器配置文件:

[root@localhost ~]# vi /usr/local/sonar-scanner-3.0.3.778-linux/conf/sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://192.168.10.41:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8
# mysql配置为跟sonar服务端一样
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://192.168.1.145:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
# sonar web用户名密码
sonar.login=admin
sonar.password=admin

在你的项目源码下创建一个 sonar-project.properties ,默认会找这个文件

# 项目id,不出现重复就好。
# 这个值会体现在 /dashboard?id=jyw
sonar.projectKey=jyw
# 项目名
sonar.projectName=jinyiwei
# 版本号
sonar.projectVersion=1.0
# 下面是代码源码目录
sonar.sources=src
# 下面指定编译后的classes目录,需要maven打包后解压。
sonar.java.binaries=/mnt/jinyiwei/manager/WEB-INF/classes
#sonar.tests=tests
# 我这个是java项目
sonar.language=java
sonar.sourceEncoding=UTF-8

开始扫描:

[root@localhost jyw-manager]# /usr/local/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner
最后会提示分析结果
INFO: ANALYSIS SUCCESSFUL, you can browse http://192.168.10.41:9000/dashboard/index/jyw
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://192.168.10.41:9000/api/ce/task?id=AWBsmROLiL1iVAE9Rh8k
INFO: Task total time: 42.256 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 43.613s
INFO: Final Memory: 119M/2550M
INFO: ------------------------------------------------------------------------

去web界面就可以看到分析报告了。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3952.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。