说明
因为受限于不能通过sonarline(ideal插件)配置sonar,于是自己在本机或者云服务器部署soanr服务,用于ideal工具本地能在编译阶段发现不符合sonar规范问题,及时解决问题,而不是放到公司sonar检查,一下好几千上万个的不规范问题,直接整崩溃。这种方式也有助于提高代码质量和养成良好的写代码习惯。
sonar写稿日期时最新版是8.3,为什么使用sonar6.7 因为此版本是长期支持版,且支持mysql5.6。目前7.9及其以上不支持mysql了。
关于版本选择问题还有疑问,可以参见sonarqube官网对应版本环境准备介绍。
环境准备
- 要求mysql5.6,需要创建sonar用户(非root用户就行,建议创建sonar)
- 需要jdk1.8
- 硬件要求,主要是内存2G以上,其他CPU、磁盘正常水平就行
- 下载sonarqube6.7、mysql5.6、jdk8
- sonarque6.7.7下载地址:https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.7.zip
- mysql5.6下载地址:https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.6.27-1.el7.x86_64.rpm-bundle.tar(此版本是用于centos7,综合包,可以根据自己的环境选择下载使用)
- jdk8大部分环境应该有,没有自行在oracle官网下载
mysql5.6安装配置
window安装比较简单直接在https://downloads.mysql.com/archives/community/下选择对应环境和版本,下载exe包,按引导安装即可,这里不做过多解释。以下主要介绍下centos7.x环境下安装mysql5.6
- 下载 rpm包,下载下图中的RPM-bundle(包含所有rpm)或者直接下载server和client的rpm包,因为也只需要用这两个包。
- 地址:https://downloads.mysql.com/archives/community/ 可能下载需要注册oracle账号,有就直接登录
- 上传或者直接wget 地址.rpm到服务端,安装过程如下
- 先检查是否安装过
注:一定要将mariaDB包和自带mysql包卸载干净,否则安装时出现各种奇妙错误,导致失败。
#rpm -qa | grep -i mariadb //查询安装的MariaDB 用rpm -e xxx 进行卸载
rpm -qa |grep -i mysql
- 卸载
yum remove mysql # yum卸载命令
rpm -e mysql-community-xxxx #报错用 rpm -ev --nodeps xxxxx
whereis mysql # 检查未卸载干净的目录 或者 使用find / -name mysql
rm -rf /var/lib/mysql # 删除对应目录
rm -rf /etc/my.cnf # 卸载后/etc/my.cnf不会删除,需要进行手工删除
# 有时候不在etc下可以 find / -name my.cnf 查找
#删除服务
chkconfig --list | grep -i mysql //查看服务
chkconfig --del mysql //删除服务
rpm -qa|grep -i mysql # 再次检查是否还有没卸载的
- 安装
注:先装好依赖,再装mysql。即使顺序出错,装完依赖一定要卸载mysql并重新装mysql,否则mysql装上了也会出现各种错误。
yum -y install autoconf
#-i是安装,-v是列出更多详细信息,-h是在安装时列出hash标记
#rpm -ivh MySQL-client-5.6.27-1.linux_glibc2.5.x86_64.rpm
#把mysql 的配置文件复制到指定目录下:
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
#rpm -ivh MySQL-server-5.6.27-1.linux_glibc2.5.x86_64.rpm
- 初始化MySQL及设置密码
service mysql start
cat /root/.mysql_secret,复制密码
mysql -uroot -p初始密码
set PASSWORD=PASSWORD('123456');
quit;
service mysql restart
# 免密登录修改密码方式
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
select Host, User, Password,password_expired from user where user='root' and host='root' or host='localhost';
update user set password=PASSWORD('Passw0rd') where user='root' and host='root' or host='localhost';
flush privileges;
quit;
service mysql restart
- 新建账号,授权远程
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar_1234';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar_1234';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar_1234';
FLUSH PRIVILEGES;
远程连接还是报错可以在 /etc/my.cnf下添加 bind-address = 0.0.0.0
windows环境
- 安装
- 直接将sonarqube-6.7.7.zip解压到自定义目录下
- 配置
- 解压根目录下,conf下sonar.properties配置修改
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.web.javaOpts=-Xmx1024m -Xms256m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx1024m -Xms256m -XX:+HeapDumpOnOutOfMemoryError
sonar.jdbc.url=jdbc:mysql://123.56.26.20:3308/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=127.0.0.1
sonar.web.port=9000
- 自定义jdk版本配置wrapper.conf
# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
#wrapper.java.command=/path/to/my/jdk/bin/java #自定义路径java
wrapper.java.command=java #默认环境下的java
- 启动
安装路径\bin\windows-x86-64\StartSonar.bat 双击
centos7.x环境
- 安装
- 直接将sonarqube-6.7.7.zip解压到自定义目录下
- 配置
- 配置conf下sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.web.javaOpts=-Xmx1024m -Xms256m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx1024m -Xms256m -XX:+HeapDumpOnOutOfMemoryError
sonar.jdbc.url=jdbc:mysql://123.56.26.20:3308/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=127.0.0.1
sonar.web.port=9000
- 自定义jdk版本配置wrapper.conf
# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
#wrapper.java.command=/path/to/my/jdk/bin/java #自定义路径java
wrapper.java.command=java #默认环境下的java
- 启动
sh sonarqube-6.7.7\bin\linux-x86-64\sonar.sh start # 停止:stop 重启:restart
- 初始化soanr
访问 http://127.0.0.1:9000
登录:admin admin
根据引导生成token,保存好token
可以开始使用了
ideal中配置使用sonarline
- 填入生成的token
- 使用
1、全局使用,右键工程,选择sonarline扫描,结果查看在report栏
2、单个文件使用,右键文件,选择sonarline扫描,结果查看在current file栏
可设置成自动扫描,这样在写代码的时候会及时生成结果,如图开启
3、每个生成结果详细的规则说明在右侧的rule里
4、等级划分